@tool class_name AnimationActionNode extends "res://addons/cutscene_editor/editor/nodes/BaseGraphNode.gd" # Node for AnimationAction func _init() -> void: node_type = "animation" node_id = "animation_" + str(randi()) title = "Animation" modulate = Color(0.8, 0.4, 0.8) # Purple # One input and one output connection var slot = 0 set_slot(slot, true, 0, Color(0, 0, 0), true, 0, Color(0, 0, 0)) func _ready() -> void: super._ready() # Initialize default parameters action_parameters["character"] = "" action_parameters["animation_name"] = "" action_parameters["loop"] = false func _setup_parameter_fields() -> void: # Character field var char_label = Label.new() char_label.text = "Character:" add_child(char_label) var char_field = LineEdit.new() char_field.text = action_parameters["character"] char_field.connect("text_changed", _on_character_changed) add_child(char_field) # Animation name field var anim_label = Label.new() anim_label.text = "Animation:" add_child(anim_label) var anim_field = LineEdit.new() anim_field.text = action_parameters["animation_name"] anim_field.connect("text_changed", _on_animation_changed) add_child(anim_field) # Loop checkbox var loop_label = Label.new() loop_label.text = "Loop:" add_child(loop_label) var loop_checkbox = CheckBox.new() loop_checkbox.button_pressed = action_parameters["loop"] loop_checkbox.connect("toggled", _on_loop_toggled) add_child(loop_checkbox) func _on_character_changed(new_text: String) -> void: set_parameter("character", new_text) func _on_animation_changed(new_text: String) -> void: set_parameter("animation_name", new_text) func _on_loop_toggled(button_pressed: bool) -> void: set_parameter("loop", button_pressed)