Files
Dawn-Godot/scripts/Events/Flow/EventWithChildren.gd

53 lines
1.2 KiB
GDScript

class_name EventWithChildren extends "res://scripts/Events/Event.gd"
var childEvents:Array[Event] = []
var extraEvents:Array[Event] = []
func _init() -> void:
super._init()
# _updateChildEvents()
# self.child_entered_tree.connect(onChildEntered)
# self.child_exiting_tree.connect(onChildExited)
# self.child_order_changed.connect(onChildOrderChanged)
func start():
super.start()
_updateChildEvents()
func _updateChildEvents() -> void:
childEvents = []
for child in get_children():
if child is Event:
childEvents.append(child)
func onChildEntered(child:Node) -> void:
_updateChildEvents()
func onChildExited(child:Node) -> void:
_updateChildEvents()
func onChildOrderChanged() -> void:
_updateChildEvents()
func reset() -> void:
super.reset()
_cleanupExtraEvents()
func end() -> void:
super.end()
_cleanupExtraEvents()
func _cleanupExtraEvents():
for event in extraEvents:
remove_child(event)
event.queue_free()
extraEvents = []
_updateChildEvents()
func addExtraEvent(child:Event, position:int) -> void:
assert(started == false || ended == true)
# Add the child to the extra events list
extraEvents.append(child)
add_child(child)
move_child(child, position)
_updateChildEvents()