public void PerformnTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTransition) { Debug.Log("PerformnTransition 无法执行 NullTransition "); return; } SoldierStateID id = CurrentSoldierState.GetIDByTransition(trans); if (id == SoldierStateID.NullState) { Debug.Log("PerformnTransition 无法执行 NullState "); return; } foreach (AbsSoldierState s in statesList) { if (s.StateID == id) { CurrentSoldierState.DoBeforeLeaving(); CurrentSoldierState = s; CurrentSoldierState.DoBeforeEntering(); } } }
public void PerformTrnsition(SoldierTransition trans) { if (trans == SoldierTransition.NullTansition) { Debug.LogError(GetType() + "/PerformTrnsition()/ trans is NullTansition "); return; } SoldierStateID nextStateId = mCurState.GetOutputState(trans); if (nextStateId == SoldierStateID.NullState) { Debug.LogError(GetType() + "/PerformTrnsition()/ stateId is NullState "); return; } foreach (ISoldierState s in mStateLst) { if (s.StateID == nextStateId) { mCurState.DoBeforeLeaving(); mCurState = s; mCurState.DoBeforeEntering(); } } }
public void PerformTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTransitionID) { Debug.LogError("要执行的转换条件为空:" + trans); return; } SoldierStateID nextStateID = mCurrentState.GetOutPutState(trans); if (nextStateID == SoldierStateID.NullState) { Debug.LogError("在转换条件 [" + trans + "] 下, 没有对应的转换状态"); return; } foreach (ISoldierState s in mStates) { if (s.stateID == nextStateID) { mCurrentState.DoBeforeLeaving(); mCurrentState = s; mCurrentState.DoBeforeEntering(); return; } } }
public void PerformTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTransition) { Debug.LogError("要执行的转换条件为空"); return; } //获取要转换为的状态 SoldierStateID nextStateID = mCurrentState.GetOutPutState(trans); if (nextStateID == SoldierStateID.NullState) { Debug.Log("要转换的状态ID[" + nextStateID + "]为空"); return; } foreach (ISoldierState state in mStates) { //如果在集合中找到转换为的状态 if (state.StateID == nextStateID) { //执行退出当前状态之前的操作 mCurrentState.DoBeforeLeaving(); //将当前状态变为将转换的状态 mCurrentState = state; //执行进入当前状态之前的操作 mCurrentState.DoBeforeEntering(); break; } } }
/// <summary> /// 执行转换状态 /// </summary> /// <param name="trans"></param> public void PerformTranstion(SoldierTransition trans) { if (trans == SoldierTransition.NullTransition) { Debug.LogError("要执行的转换条件为空!"); return; } SoldierStateID nextStateID = mCurrentState.GetOutPutStateID(trans); //得到该转换条件下的下个状态ID if (nextStateID == SoldierStateID.NullStateID) { Debug.LogError("在转换条件:" + "[" + trans + "]" + "没有对应的转换状态!"); return; } mCurrentStateID = nextStateID;//更新当前状态ID foreach (ISoldierState s in mStates) { if (s.stateID == nextStateID) { mCurrentState.DoBeforeLeaving(); mCurrentState = s; //更新当前状态 mCurrentState.DoBeforeEntering(); break; } } }
public void PerformTransition(SoldierTransition tran) { if (tran == SoldierTransition.NullTransition) { Debug.Log("要执行的转换条件为空"); } SoldierStateType nextState = mCurrentState.GetTargetStateType(tran); if (nextState == SoldierStateType.NullState) { Debug.Log("在 " + tran + " 条件下,没有对应的目标状态"); return; } foreach (SoldierState item in mStates) { if (item.StateType == nextState) { mCurrentState.DoBeforeLeaving(); mCurrentState = item; mCurrentState.DoBeforeEntering(); } } }
public void performTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTransition) { Debug.LogError("trans is null"); return; } SoldierStateID nextId = mCurrState.getOutPutState(trans); if (nextId == SoldierStateID.NullState) { Debug.LogError("no state with trans"); return; } foreach (ISoldierState s in mStates) { if (s.StateID == nextId) { mCurrState.doBeforeLeaving(); mCurrState = s; mCurrState.doBeforeEntering(); return; } } }
public void AddTransition(SoldierTransition trans, SoldierStateID id) { // Check if anyone of the args is invalid if (trans == SoldierTransition.NullTransition) { Debug.LogError("SoldierFSMState ERROR: NullTransition is not allowed for a real transition"); return; } if (id == SoldierStateID.NullStateID) { Debug.LogError("SoldierFSMState ERROR: NullStateID is not allowed for a real ID"); return; } // Since this is a Deterministic FSM, // check if the current transition was already inside the map if (map.ContainsKey(trans)) { Debug.LogError("SoldierFSMState ERROR: State " + stateID.ToString() + " already has transition " + trans.ToString() + "Impossible to assign to another state"); return; } map.Add(trans, id); }
//执行状态转换 public void PerformTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTransition) { Debug.LogError("转换条件不能为空"); return; } SoldierStateID nextId = currentState.GetOutputState(trans); if (nextId == SoldierStateID.NullStateID) { Debug.LogError("转换的状态不能为空"); return; } foreach (SoldierState state in states) { if (state.ID != nextId) { continue; } currentState.DoBeforeLeaving(); //转换前执行现有状态的DoBeforeLeaving方法 currentState = state; currentState.DoBeforeEntering(); //转换完成,执行转换后状态的DoBeforeEntering方法 return; } }
/** 删除转换条件 */ public void DeleteTransition(SoldierTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("SoldierState Error: [删除] 转换条件" + trans + "不存在"); return; } mMap.Remove(trans); }
public void DeleteTransition(SoldierTransition transition) { if (!m_Map.ContainsKey(transition)) { Debug.LogError("删除转换条件失败,不存在该条件 : " + transition.ToString()); return; } m_Map.Remove(transition); }
// 删除状态转换关系 public void DeleteTransition(SoldierTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("IEnemyState Error:[" + trans + "]不存在"); } mMap.Remove(trans); }
public void DeleteTransition(SoldierTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("删除转换条件时,转换条件 " + trans + " 不存在"); } mMap.Remove(trans); }
/// <summary> /// 下个要转换到的状态 /// </summary> /// <param name="trans"></param> /// <returns></returns> public SoldierStateID GetOutPutStateID(SoldierTransition trans) { if (mMap.ContainsKey(trans)) { return(mMap[trans]); } return(SoldierStateID.NullStateID); }
public void DeleteTransition(SoldierTransition trans, SoldierStateID id) { if (!mMap.ContainsKey(trans)) { Debug.LogError("删除转换条件的时候,转换条件: " + trans + " 不存在"); return; } mMap.Remove(trans); }
public SoldierStateID GetOutputState(SoldierTransition trans) { // Check if the map has this transition if (map.ContainsKey(trans)) { return(map[trans]); } return(SoldierStateID.NullStateID); }
public void DeleteTransition(SoldierTransition trans, SoldierStateID id) { if (!map.ContainsKey(trans)) { Debug.Log("SoldierState Error :" + trans + "不存在,无法删除"); return; } map.Remove(trans); }
public SoldierStateID GetOutputState(SoldierTransition trans) { if (mMap.ContainsKey(trans) == false) { return(SoldierStateID.NullState); } return(mMap[trans]); }
/// <summary> /// 根据指定的转换条件获取状态ID /// </summary> /// <param name="transition"></param> /// <returns></returns> public SoldierStateID GetOutPutState(SoldierTransition transition) { if (!m_Map.ContainsKey(transition)) { Debug.LogError("获取转换条件失败,不存在该条件 : " + transition.ToString()); return(SoldierStateID.NullState); } return(m_Map[transition]); }
public SoldierStateID getOutPutState(SoldierTransition trans) { if (!map.ContainsKey(trans)) { Debug.LogError("can't find this trans"); return(SoldierStateID.NullState); } return(map[trans]); }
//删除状态转换键值对 public void DeleteTransition(SoldierTransition trans) { if (map.ContainsKey(trans)) { map.Remove(trans); return; } Debug.LogError("转换条件不存在"); }
public void deleteTransition(SoldierTransition trans) { if (!map.ContainsKey(trans)) { Debug.LogError("trans not exist"); return; } map.Remove(trans); }
/** 根据转换条件获取状态ID */ public SoldierStateID GetOutPutState(SoldierTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("SoldierState Error: [获取] 转换条件" + trans + "不存在"); return(SoldierStateID.NullState); } return(mMap[trans]); }
public void DeleteTransition(SoldierTransition tran) { if (!relationDic.ContainsKey(tran)) { Debug.Log("不包含该转换:" + tran); return; } relationDic.Remove(tran); }
public SoldierStateID GetIDByTransition(SoldierTransition trans) { SoldierStateID id = SoldierStateID.NullState; if (!map.TryGetValue(trans, out id)) { Debug.Log("SoldierState StateID:" + StateID + " Error :" + trans + "不存在,无法查找"); } return(id); }
public void DeleteTransition(SoldierTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("删除转换条件的时候,转换条件:[" + trans + "]不存在!"); return; } mMap.Remove(trans); }
public void DeleteTransition(SoldierTransition trans) { if (map.ContainsKey(trans) == false) { Debug.LogError("删除转换条件不存在" + trans); } else { map.Remove(trans); } }
public SoldierStateID GetOutPutState(SoldierTransition trans) { if (!mMap.ContainsKey(trans)) { Debug.LogError(":[" + trans + "]不存在!"); return(SoldierStateID.NullState); } return(mMap[trans]); }
/// <summary> /// 得到指定条件的目标状态 /// </summary> /// <param name="tran"></param> /// <returns></returns> public SoldierStateType GetTargetStateType(SoldierTransition tran) { if (!relationDic.ContainsKey(tran)) { return(SoldierStateType.NullState); } else { return(relationDic[tran]); } }
public SoldierStateID GetOutputState(SoldierTransition trans) { SoldierStateID id = SoldierStateID.NullState; if (mMap.ContainsKey(trans)) { //mMap.TryGetValue(trans, out id); id = mMap[trans]; } return(id); }