extends Node var current_active : int = 0 func _process(_delta): the_connecting() the_pausing() func the_pausing(): # iterate through the children, allowing only the current active node to run for i in len(get_children()): if get_child(i).has_signal("scene_finished"): # only change if active var should exist get_child(i).active = true if i == current_active else false func the_connecting(): # iterate through the children and connect up the child_finished method for i in len(get_children()): # connect the finished signal if it exists and # if the failed finished isn't already connected if (get_child(i).has_signal("scene_finished") and get_child(i).get_signal_connection_list("scene_finished") == []): get_child(i).connect("scene_finished", self, "child_finished") # connect the failed signal if it exists and # if the failed signal isn't already connected if (get_child(i).has_signal("scene_failed") and get_child(i).get_signal_connection_list("scene_failed") == []): get_child(i).connect("scene_failed", self, "child_failed") func child_finished(): # designed to be called from a signal current_active += 1 if current_active >= len(get_children()): current_active = 0 func child_failed(): # designed to be called from a signal current_active -= 1 if current_active < 0: current_active = len(get_children()) - 1