// 更新当前状态 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)); } }
// 更新公共状态 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; }