//刪除Transition public void RemoveTranstion(eTransitionID tID){ //不處理 if (tID == eTransitionID.None) { return; } //m_StateMap有包含TransitionID,就刪除 if (m_StateMap.ContainsKey (tID)) { m_StateMap.Remove (tID); } }
//增加Transition(對應的TransitionID,要去的StateID) public void AddTransition(eTransitionID tID, eStateID sID){ //不處理 if(tID == eTransitionID.None || sID == eStateID.None){ return; } //m_StateMap是否包含TransitionID,是就不處理 if(m_StateMap.ContainsKey(tID)){ return; } m_StateMap.Add(tID, sID); }
//給一個TransitionID,把要output出去的StateID寫出來 public eStateID GetOutputStateID(eTransitionID tID){ if (m_StateMap.ContainsKey (tID)) { return m_StateMap [tID]; } return eStateID.None; }
//做State的切換 public void PerformTransition(eTransitionID tID, AIData data){ if(tID == eTransitionID.None){ return; } eStateID sID = m_currentState.GetOutputStateID (tID); if (sID == eStateID.None) { return; } m_currentStateID = sID; int iCount = m_State.Count; for (int i = 0; i < iCount; i++) { if (m_State [i].m_StateID == m_currentStateID) { m_currentState.DoBeforeLeave (data); m_currentState = m_State [i]; m_currentState.DoBeforeEnter (data); break; } } }