-module(runner). -include("../bt_node_behaviours/nodes.hrl"). -export([ run/3, preempt/3 ]). -spec run( Node :: task() | sequence() | selector() | decorator(), BB :: blackboard(), Event :: event()) -> {Status :: status(), NewNode :: task(), NewBB :: blackboard()}. run(Node, BB, Event) when is_record(Node, sequence) -> run_sequence:run(Node, BB, Event); run(Node, BB, Event) when is_record(Node, decorator) -> run_decorator:run(Node, BB, Event); run(Node, BB, Event) when is_record(Node, task) -> run_task:run(Node, BB, Event). -spec preempt( Node :: term(), BB :: blackboard(), ShouldCleanBB :: boolean()) -> {NewNode :: term(), NewBB :: blackboard()}. preempt(Node, BB, ShouldCleanBB) when is_record(Node, sequence) -> run_sequence:preempt(Node, BB, ShouldCleanBB); preempt(Node, BB, ShouldCleanBB) when is_record(Node, decorator) -> run_decorator:preempt(Node, BB, ShouldCleanBB); preempt(Node, BB, ShouldCleanBB) when is_record(Node, task) -> run_task:preempt(Node, BB, ShouldCleanBB).