@tool extends BeehaveTree func _ready(): # Only create tree in game, not in editor if Engine.is_editor_hint(): return # Create the root selector var root_selector = BeehaveSelector.new() root_selector.name = "RootSelector" add_child(root_selector) # Add the main sequences var arrange_sequence = create_arrange_sequence() var grab_sequence = create_grab_sequence() var put_sequence = create_put_sequence() var move_sequence = create_move_sequence() root_selector.add_child(arrange_sequence) root_selector.add_child(grab_sequence) root_selector.add_child(put_sequence) root_selector.add_child(move_sequence) func create_arrange_sequence() -> BeehaveSequence: var sequence = BeehaveSequence.new() sequence.name = "ArrangeSequence" # Conditions var has_enough_ap = BeehaveCondition.new() has_enough_ap.set_script(load("res://scripts/conditions/has_enough_ap.gd")) var needs_arrangement = BeehaveCondition.new() needs_arrangement.set_script(load("res://scripts/conditions/needs_arrangement.gd")) # Action var arrange_action = BeehaveAction.new() arrange_action.set_script(load("res://scripts/actions/arrange_action.gd")) sequence.add_child(has_enough_ap) sequence.add_child(needs_arrangement) sequence.add_child(arrange_action) return sequence func create_grab_sequence() -> BeehaveSequence: var sequence = BeehaveSequence.new() sequence.name = "GrabSequence" # Conditions var has_ap = BeehaveCondition.new() has_ap.set_script(load("res://scripts/conditions/has_ap.gd")) var can_grab = BeehaveCondition.new() can_grab.set_script(load("res://scripts/conditions/can_grab.gd")) # Action var grab_action = BeehaveAction.new() grab_action.set_script(load("res://scripts/actions/grab_action.gd")) sequence.add_child(has_ap) sequence.add_child(can_grab) sequence.add_child(grab_action) return sequence