@tool class_name MoveActionNode extends "res://addons/cutscene_editor/editor/nodes/BaseGraphNode.gd" # Node for MoveAction func _init() -> void: node_type = "move" node_id = "move_" + str(randi()) title = "Move" modulate = Color(0.4, 0.6, 1.0) # Blue # 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["target_x"] = 0.0 action_parameters["target_y"] = 0.0 action_parameters["speed"] = 100.0 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) # Target position fields var pos_label = Label.new() pos_label.text = "Target Position:" add_child(pos_label) var pos_container = HBoxContainer.new() var x_label = Label.new() x_label.text = "X:" pos_container.add_child(x_label) var x_field = LineEdit.new() x_field.text = str(action_parameters["target_x"]) x_field.size_flags_horizontal = Control.SIZE_EXPAND_FILL x_field.connect("text_changed", _on_target_x_changed) pos_container.add_child(x_field) var y_label = Label.new() y_label.text = "Y:" pos_container.add_child(y_label) var y_field = LineEdit.new() y_field.text = str(action_parameters["target_y"]) y_field.size_flags_horizontal = Control.SIZE_EXPAND_FILL y_field.connect("text_changed", _on_target_y_changed) pos_container.add_child(y_field) add_child(pos_container) # Speed field var speed_label = Label.new() speed_label.text = "Speed:" add_child(speed_label) var speed_field = LineEdit.new() speed_field.text = str(action_parameters["speed"]) speed_field.connect("text_changed", _on_speed_changed) add_child(speed_field) func _on_character_changed(new_text: String) -> void: set_parameter("character", new_text) func _on_target_x_changed(new_text: String) -> void: var value = float(new_text) if new_text.is_valid_float() else 0.0 set_parameter("target_x", value) func _on_target_y_changed(new_text: String) -> void: var value = float(new_text) if new_text.is_valid_float() else 0.0 set_parameter("target_y", value) func _on_speed_changed(new_text: String) -> void: var value = float(new_text) if new_text.is_valid_float() else 100.0 set_parameter("speed", value)