Files
PNGTuber-Plus/ui_scenes/components/WobbleControlPanel.gd

64 lines
2.2 KiB
GDScript

## A complete wobble control panel using the new slider components
## Provides a consistent interface for all wobble parameters
extends Control
class_name WobbleControlPanel
## Reference to all wobble sliders
@onready var x_frequency_slider: WobbleSlider = $VBoxContainer/XFrequencySlider
@onready var x_amplitude_slider: WobbleSlider = $VBoxContainer/XAmplitudeSlider
@onready var y_frequency_slider: WobbleSlider = $VBoxContainer/YFrequencySlider
@onready var y_amplitude_slider: WobbleSlider = $VBoxContainer/YAmplitudeSlider
@onready var r_frequency_slider: WobbleSlider = $VBoxContainer/RFrequencySlider
@onready var r_amplitude_slider: WobbleSlider = $VBoxContainer/RAmplitudeSlider
## Array of all wobble sliders for easy iteration
var wobble_sliders: Array[WobbleSlider] = []
## The sprite currently being edited
var target_sprite = null
func _ready():
# Collect all wobble sliders
wobble_sliders = [
x_frequency_slider,
x_amplitude_slider,
y_frequency_slider,
y_amplitude_slider,
r_frequency_slider,
r_amplitude_slider
]
# Connect to wobble sync control if it exists
var wobble_sync_control = find_child("WobbleSyncControl")
if wobble_sync_control:
_connect_wobble_sync_signals(wobble_sync_control)
## Set the target sprite for all sliders
func set_target_sprite(sprite):
target_sprite = sprite
for slider in wobble_sliders:
slider.set_target_sprite(sprite)
## Update all sliders from the current sprite
func update_from_sprite():
if target_sprite:
for slider in wobble_sliders:
slider._update_from_sprite()
## Update visual feedback for sync status
func update_sync_feedback():
for slider in wobble_sliders:
slider._update_sync_feedback()
## Connect signals from wobble sync control
func _connect_wobble_sync_signals(wobble_sync_control):
# Connect value change signals to update wobble sync control
for slider in wobble_sliders:
slider.value_changed.connect(_on_wobble_parameter_changed)
## Handle wobble parameter changes to update sync control
func _on_wobble_parameter_changed(value: float):
var wobble_sync_control = find_child("WobbleSyncControl")
if wobble_sync_control and wobble_sync_control.has_method("updateUI"):
wobble_sync_control.updateUI()