protected override BTRunningStatus DoTick(BTInput input, ref BTOutput output) { BTRunningStatus runningStatus = base.DoTick(input, ref output); switch (_status) { case BTNodeStatus.Ready: DoEnter(input); _needExit = true; _status = BTNodeStatus.Running; SetActiveNode(this); break; case BTNodeStatus.Running: runningStatus = DoExecute(input, ref output); SetActiveNode(this); if (runningStatus == BTRunningStatus.Finish || runningStatus == BTRunningStatus.Error) { _status = BTNodeStatus.Finish; } break; case BTNodeStatus.Finish: if (_needExit) { DoExit(input, runningStatus); } _status = BTNodeStatus.Ready; _needExit = false; SetActiveNode(null); break; } return(runningStatus); }
protected virtual void DoExit(BTInput _input, BTRunningStatus _status) { }