mirror of
https://github.com/litruv/PNGTuber-Plus.git
synced 2026-07-24 02:26:02 +10:00
64 lines
2.2 KiB
GDScript
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()
|