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);
        }
예제 #2
0
 public override void Initialize(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard)
 {
     if (_predicate(blackboard))
     {
         executor.Start(data, Node, this);
     }
 }
예제 #3
0
 protected override BehaviourTreeStatus Update(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard)
 {
     return(BehaviourTreeStatus.Running);
 }
예제 #4
0
 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
 }
예제 #7
0
 protected override BehaviourTreeStatus Update(BehaviourTreeExecutor <TBlackboard> executor, BehaviourTreeExecutionData <TBlackboard> data, TBlackboard blackboard)
 {
     return(_predicate(blackboard) ? BehaviourTreeStatus.Success : BehaviourTreeStatus.Failure);
 }