protected override ENodeReturn OnUpdate(BehaviourTree tree) { ENodeReturn result = ENodeReturn.Failure; while (mCurrentNodeIndex < NodeList.Count) { result = NodeList[mCurrentNodeIndex].Run(tree); if (ENodeReturn.Failure != result) { break; } else { mCurrentNodeIndex++; } } // if (mCurrentNodeIndex >= NodeList.Count) // { // result = ENodeReturn.Failure; // } // else // { // result = NodeList[mCurrentNodeIndex].Run(tree); // if(ENodeReturn.Failure == result) // { // mCurrentNodeIndex++; // result = ENodeReturn.Running; // } // } return(result); }
protected override ENodeReturn OnUpdate(BehaviourTree tree) { ENodeReturn result = ChildNode.Run(tree); if (result != ENodeReturn.Running) { result = ENodeReturn.Success; } return(result); }
public ENodeReturn Run(BehaviourTree tree) { if (!mIsRunning) { OnEnter(tree); mIsRunning = true; } ENodeReturn result = OnUpdate(tree); if (result != ENodeReturn.Running) { OnExit(tree); mIsRunning = false; } return(result); }
protected override ENodeReturn OnUpdate(BehaviourTree tree) { ENodeReturn rt = RootNode.Run(tree); return(rt); }