예제 #1
0
        public override EStatusBTRunning OnTick()
        {
            EStatusBTRunning status = EStatusBTRunning.Finish;

            if (m_Status == EStatusNodeTerminal.Ready)
            {
                OnEnter();
                m_needExit = true;
                m_Status   = EStatusNodeTerminal.Running;
                SetActiveNode(this);
            }

            if (m_Status == EStatusNodeTerminal.Running)
            {
                status = OnExecute();
                if (status == EStatusBTRunning.Finish || status == EStatusBTRunning.ErrorTransition)
                {
                    m_Status = EStatusNodeTerminal.Finish;
                }
            }

            if (m_Status == EStatusNodeTerminal.Finish)
            {
                if (m_needExit)
                {
                    OnExit();
                }
                m_needExit = false;
                m_Status   = EStatusNodeTerminal.Ready;
                SetActiveNode(null);
                return(status);
            }

            return(status);
        }
예제 #2
0
 public override void OnTransition()
 {
     if (m_needExit)
     {
         OnExit();
     }
     SetActiveNode(null);
     m_Status   = EStatusNodeTerminal.Ready;
     m_needExit = false;
 }