mirror of
https://github.com/litruv/PNGTuber-Plus.git
synced 2026-07-24 02:26:02 +10:00
Fixed up edit menu. now is more modular + uses extensive use of v+hbox's !build
This commit is contained in:
61
ui_scenes/components/WobbleSlider.gd
Normal file
61
ui_scenes/components/WobbleSlider.gd
Normal file
@@ -0,0 +1,61 @@
|
||||
@tool
|
||||
## A specialized slider component for wobble parameters
|
||||
## Automatically handles syncing with wobble groups and provides appropriate feedback
|
||||
extends LabeledSlider
|
||||
class_name WobbleSlider
|
||||
|
||||
## The wobble parameter name this slider controls
|
||||
@export var parameter_name: String = ""
|
||||
|
||||
## Reference to the sprite being edited
|
||||
var target_sprite = null
|
||||
|
||||
func _ready():
|
||||
super._ready()
|
||||
# Connect to value changes to update wobble parameters
|
||||
value_changed.connect(_on_wobble_value_changed)
|
||||
|
||||
## Set the sprite this slider controls
|
||||
func set_target_sprite(sprite):
|
||||
target_sprite = sprite
|
||||
if sprite:
|
||||
_update_from_sprite()
|
||||
|
||||
## Update the slider from the sprite's current values
|
||||
func _update_from_sprite():
|
||||
if not target_sprite or parameter_name == "":
|
||||
return
|
||||
|
||||
match parameter_name:
|
||||
"xFrq":
|
||||
set_value(target_sprite.xFrq)
|
||||
"xAmp":
|
||||
set_value(target_sprite.xAmp)
|
||||
"yFrq":
|
||||
set_value(target_sprite.yFrq)
|
||||
"yAmp":
|
||||
set_value(target_sprite.yAmp)
|
||||
"rFrq":
|
||||
set_value(target_sprite.rFrq)
|
||||
"rAmp":
|
||||
set_value(target_sprite.rAmp)
|
||||
|
||||
## Handle wobble parameter changes
|
||||
func _on_wobble_value_changed(new_value: float):
|
||||
if not target_sprite or parameter_name == "":
|
||||
return
|
||||
|
||||
print("DEBUG: WobbleSlider ", parameter_name, " changed to: ", new_value)
|
||||
target_sprite.updateWobbleParameter(parameter_name, new_value)
|
||||
|
||||
# Update visual feedback for sync status
|
||||
_update_sync_feedback()
|
||||
|
||||
## Update visual feedback based on sync status
|
||||
func _update_sync_feedback():
|
||||
if not target_sprite:
|
||||
return
|
||||
|
||||
var is_synced = target_sprite.isSynced()
|
||||
var tint = Color(1.0, 1.0, 0.9) if is_synced else Color.WHITE
|
||||
set_modulate_color(tint)
|
||||
Reference in New Issue
Block a user