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()