gai-ca2/project/scripts/player/tree/BehaviorTree.gd

32 lines
825 B
GDScript

class_name BehaviorTree
extends Node
var game_manager: GameManager = null
#
var blackboard: Dictionary = {}
var behavior_tree: Task = null
func _ready() -> void:
if get_child_count() == 0 or get_child_count() > 1:
push_error("This controller needs exactly one Task child, got " + str(get_child_count()))
var child: Node = get_child(0)
if not (child is Task):
push_error("Child is not a task: " + child.name)
behavior_tree = child as Task
func populate_blackboard():
blackboard["world"] = game_manager.world
blackboard["player"] = game_manager.player
blackboard["camera"] = game_manager.camera
func game_tick() -> void:
print("game_tick:")
populate_blackboard()
behavior_tree.internal_run(blackboard)
print(" ==> [active state=", blackboard["current_task"], "] [status=", behavior_tree.status, "]")