You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.1 KiB

6 months ago
@tool
extends DialogicVisualEditorField
## Event block field for editing arrays.
const ArrayValue := "res://addons/dialogic/Editor/Events/Fields/array_part.tscn"
func _ready():
%Add.icon = get_theme_icon("Add", "EditorIcons")
%Add.pressed.connect(_on_AddButton_pressed)
func _set_value(value:Variant) -> void:
value = value as Array
for child in get_children():
if child != %Add:
child.queue_free()
for item in value:
var x: Node = load(ArrayValue).instantiate()
add_child(x)
x.set_value(item)
x.value_changed.connect(recalculate_values)
move_child(%Add, -1)
func _on_value_changed(value:Variant) -> void:
value_changed.emit(property_name, value)
func recalculate_values() -> void:
var arr := []
for child in get_children():
if child != %Add and !child.is_queued_for_deletion():
arr.append(child.get_value())
_on_value_changed(arr)
func _on_AddButton_pressed() -> void:
var x :Control = load(ArrayValue).instantiate()
add_child(x)
x.set_value("")
x.value_changed.connect(recalculate_values)
recalculate_values()
move_child(%Add, -1)