public BehaviourTreeStatus Tick( BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard) { Logger.Instance.Log(LogLevel.Trace, "[BT] {0} ", Name); if (data.Statuses[Id] != BehaviourTreeStatus.Running) { data.Statuses[Id] = BehaviourTreeStatus.Uninitialized; Initialize(executor, data, blackboard); } var status = Update(executor, data, blackboard); data.Statuses[Id] = status; if (status != BehaviourTreeStatus.Running) { OnTerminate(data, status); } Logger.Instance.Log(LogLevel.Trace, "[BT] {0} {1}", Name, status); return(status); }
public override void Initialize(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard) { if (_predicate(blackboard)) { executor.Start(data, Node, this); } }
protected override BehaviourTreeStatus Update(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard) { return(BehaviourTreeStatus.Running); }
public void OnComplete(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> execution, BehaviourTreeStatus status) { executor.Stop(execution, this, InvertStatus(status)); }
protected abstract BehaviourTreeStatus Update(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard);
public virtual void Initialize(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard) { // nothing to do }
protected override BehaviourTreeStatus Update(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard) { return(_predicate(blackboard) ? BehaviourTreeStatus.Success : BehaviourTreeStatus.Failure); }