コード例 #1
0
ファイル: FSM.cs プロジェクト: CCChaos/big-tooth
        // 更新当前状态
        protected virtual void UpdateCurrentState()
        {
            if (m_CurrentState == null)
            {
                return;
            }
            // 获取下一个状态, 如果没有则循环执行当前状态
            UInt32 uNextStateId = m_CurrentState.GetFSMTransState(this);

            if (uNextStateId == CFSMState.cuInvalieStateId)
            {
                if (m_CurrentState.Process(this, null) == false)
                {
                    BTDebug.Warning(string.Format("<BTFSM> State:{0} Process Failed", m_CurrentState.GetStateName()));
                }
                return;
            }
            // 切换到下一状态
            bool bChangeRet = ChangeToState(uNextStateId, null);

            if (bChangeRet == false)
            {
                BTDebug.Warning(string.Format("<BTFSM> FSM Trans From:{0} To:{1} Failed", m_CurrentState.GetStateID(), uNextStateId));
            }
        }
コード例 #2
0
ファイル: FSM.cs プロジェクト: CCChaos/big-tooth
        // 更新公共状态
        protected virtual void UpdateAnyState()
        {
            if (m_AnyState == null)
            {
                return;
            }
            // 获取下一个状态, 如果没有则循环执行当前状态
            UInt32 uNextStateId = m_AnyState.GetFSMTransState(this);

            if (uNextStateId != CFSMState.cuInvalieStateId)
            {
                ChangeToState(uNextStateId, null);
                return;
            }
            if (m_AnyState.Process(this, null) == false)
            {
                BTDebug.Warning(string.Format("<BTFSM> State:{0} Process Failed", m_CurrentState.GetStateName()));
            }
            return;
        }