protected override BTreeRunningStatus _DoTick(BTreeTemplateData _input, ref BTreeTemplateData _output) { BTreeRunningStatus runningStatus = base._DoTick(_input, ref _output); if (m_Status == BTreeNodeStatus.Ready) { _DoEnter(_input); m_NeedExit = true; m_Status = BTreeNodeStatus.Running; SetActiveNode(this); } if (m_Status == BTreeNodeStatus.Running) { runningStatus = _DoExecute(_input, ref _output); SetActiveNode(this); if (runningStatus == BTreeRunningStatus.Finish || runningStatus == BTreeRunningStatus.Error) { m_Status = BTreeNodeStatus.Finish; } } if (m_Status == BTreeNodeStatus.Finish) { if (m_NeedExit) { _DoExit(_input, runningStatus); } m_Status = BTreeNodeStatus.Ready; m_NeedExit = false; SetActiveNode(null); } return(runningStatus); }
protected override void _DoTransition(BTreeTemplateData _input) { if (m_NeedExit) { _DoExit(_input, BTreeRunningStatus.Error); } SetActiveNode(null); m_Status = BTreeNodeStatus.Ready; m_NeedExit = false; }