diff --git a/addons/beehave/nodes/beehave_tree.gd b/addons/beehave/nodes/beehave_tree.gd index 65e1107c..6d0c48df 100644 --- a/addons/beehave/nodes/beehave_tree.gd +++ b/addons/beehave/nodes/beehave_tree.gd @@ -110,10 +110,11 @@ func _ready() -> void: if not process_thread: process_thread = ProcessThread.PHYSICS - if actor_node_path: - actor = get_node(actor_node_path) - else: - actor = get_parent() + if not actor: + if actor_node_path: + actor = get_node(actor_node_path) + else: + actor = get_parent() if not blackboard: # invoke setter to auto-initialise the blackboard. diff --git a/test/beehave_tree_test.gd b/test/beehave_tree_test.gd index e68a1fa0..540a1b93 100644 --- a/test/beehave_tree_test.gd +++ b/test/beehave_tree_test.gd @@ -97,3 +97,13 @@ func test_blackboard_not_initialized() -> void: tree.add_child(always_succeed) var result = tree.tick() assert_that(result).is_equal(BeehaveNode.SUCCESS) + + +func test_actor_override() -> void: + var scene = create_scene() + scene_runner(scene) + var tree = create_tree() + var actor = auto_free(Node2D.new()) + tree.actor = actor + scene.add_child(tree) + assert_that(tree.actor).is_equal(actor)