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);
        }
Beispiel #2
0
 protected override void _DoTransition(BTreeTemplateData _input)
 {
     if (m_NeedExit)
     {
         _DoExit(_input, BTreeRunningStatus.Error);
     }
     SetActiveNode(null);
     m_Status   = BTreeNodeStatus.Ready;
     m_NeedExit = false;
 }