# Special implementation of a selector that will # "wait" for running nodes and will not re-attempt # to execute previous nodes until that node is either # FAILED or SUCCEEDED extends Composite class_name SelectorStarComposite, "../../icons/selector_star.svg" var last_execution_index = 0 func tick(actor, blackboard): for c in get_children(): if c.get_index() < last_execution_index: continue var response = c.tick(actor, blackboard) if c is ConditionLeaf: blackboard.set("last_condition", c) blackboard.set("last_condition_status", response) if response != FAILURE: if c is ActionLeaf and response == RUNNING: blackboard.set("running_action", c) if response == SUCCESS: last_execution_index = 0 return response else: last_execution_index += 1 last_execution_index = 0 return FAILURE