protected override NodeRunningStatus UpdateInternal(OutputParam rInput, OutputParam rOutput) { NodeRunningStatus rIsFinish = NodeRunningStatus.Finish; if (mActionStatus == NodeActionStaus.Ready) { Enter(rInput); mNeedExit = true; mActionStatus = NodeActionStaus.Running; SetActiveNode(this); } if (mActionStatus == NodeActionStaus.Running) { rIsFinish = Execute(rInput, rOutput); SetActiveNode(this); if(rIsFinish != NodeRunningStatus.Executing) { mActionStatus = NodeActionStaus.Finish; } } if (mActionStatus == NodeActionStaus.Finish) { if (mNeedExit) Exit(rInput, rIsFinish); mActionStatus = NodeActionStaus.Ready; mNeedExit = false; SetActiveNode(null); return rIsFinish; } return rIsFinish; }
protected override void TransitionInternal(OutputParam rInput) { if (mNeedExit) Exit(rInput, NodeRunningStatus.TransitionError); SetActiveNode(null); mActionStatus = NodeActionStaus.Ready; mNeedExit = false; }
protected override void TransitionInternal(OutputParam rInput) { if (mNeedExit) { Exit(rInput, NodeRunningStatus.TransitionError); } SetActiveNode(null); mActionStatus = NodeActionStaus.Ready; mNeedExit = false; }
protected override NodeRunningStatus UpdateInternal(OutputParam rInput, OutputParam rOutput) { NodeRunningStatus rIsFinish = NodeRunningStatus.Finish; if (mActionStatus == NodeActionStaus.Ready) { Enter(rInput); mNeedExit = true; mActionStatus = NodeActionStaus.Running; SetActiveNode(this); } if (mActionStatus == NodeActionStaus.Running) { rIsFinish = Execute(rInput, rOutput); SetActiveNode(this); if (rIsFinish != NodeRunningStatus.Executing) { mActionStatus = NodeActionStaus.Finish; } } if (mActionStatus == NodeActionStaus.Finish) { if (mNeedExit) { Exit(rInput, rIsFinish); } mActionStatus = NodeActionStaus.Ready; mNeedExit = false; SetActiveNode(null); return(rIsFinish); } return(rIsFinish); }
public ActionNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondtion = null) : base(rParentNode, rCondtion) { mActionStatus = NodeActionStaus.Ready; mNeedExit = false; }