Fixed up edit menu. now is more modular + uses extensive use of v+hbox's !build

This commit is contained in:
2025-07-21 06:21:42 +10:00
parent 43dfc410dc
commit af17a1dee0
33 changed files with 16837 additions and 644 deletions

View File

@@ -0,0 +1,60 @@
## Manages all slider components in the sprite viewer
## Provides a centralized way to update and configure sliders
extends RefCounted
class_name SliderManager
## Array of all slider components
var sliders: Array[LabeledSlider] = []
## Reference to the sprite viewer
var sprite_viewer = null
func _init(viewer):
sprite_viewer = viewer
## Add a slider to be managed
func add_slider(slider: LabeledSlider):
if slider not in sliders:
sliders.append(slider)
## Remove a slider from management
func remove_slider(slider: LabeledSlider):
sliders.erase(slider)
## Update all sliders with the current sprite data
func update_all_sliders(sprite):
for slider in sliders:
if slider is WobbleSlider:
slider.set_target_sprite(sprite)
elif slider is ParameterSlider:
slider.set_target_sprite(sprite)
## Update wobble control states based on sync status
func update_wobble_control_states(sprite):
if not sprite:
return
var is_synced = sprite.isSynced()
for slider in sliders:
if slider is WobbleSlider:
# Keep wobble controls enabled even when synced (they edit group settings)
slider.set_editable(true)
# Visual feedback for sync state - slight tint to indicate group editing
var tint = Color(1.0, 1.0, 0.9) if is_synced else Color.WHITE
slider.set_modulate_color(tint)
## Get a slider by its parameter name
func get_slider_by_parameter(parameter_name: String) -> LabeledSlider:
for slider in sliders:
if slider is WobbleSlider and slider.parameter_name == parameter_name:
return slider
elif slider is ParameterSlider and slider.sprite_property == parameter_name:
return slider
return null
## Apply consistent styling to all sliders
func apply_consistent_styling():
for slider in sliders:
# Apply any consistent styling here
pass