Ejemplo n.º 1
0
 void ABC(eStateID stateID)
 {
     if (stateID == eStateID.Attack2)
     {
         Debug.Log("666");
     }
     Debug.Log("HAHHAHAHHAHHAHA--->" + stateID);
 }
Ejemplo n.º 2
0
 public void AddTransition(eTransition _trans, eStateID _id)
 {
     if (StateDic.ContainsKey(_trans))
     {
         return;
     }
     StateDic.Add(_trans, _id);
 }
Ejemplo n.º 3
0
	//增加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);
	}
Ejemplo n.º 4
0
    public virtual void PerformTransition(eTransition trans)
    {
        Debug.Log("CurState " + CurState.name);
        eStateID id = CurState.GetStateIDByTrans(trans);

        if (id == eStateID.Null)
        {
            Debug.LogError("ERROR: CurrentState " + CurStateID + " TargetState " + id + " Transition " + trans);
            return;
        }
        CurStateID = id;
        foreach (var state in stateList)
        {
            if (state.StateID == CurStateID)
            {
                CurState.OnExit();
                CurState.OnExit(out object dataNext);
                CurState = state;
                CurState.OnEnter();
                CurState.OnEnter(in dataNext);
                CurState.OnAction();
            }
        }
    }
Ejemplo n.º 5
0
	//做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;
			}
		}
	}
Ejemplo n.º 6
0
	public void DeleteState(eStateID sID){
		if (sID == eStateID.None) {
			return;
		}
		int iCount = m_State.Count;
		for (int i = 0; i < iCount; i++) {
			if(m_State[i].m_StateID == sID){
				m_State.RemoveAt(i);
				return;
			}
		}
	}
Ejemplo n.º 7
0
	public void AddState(FSMBaseState state){
		if (state == null) {
			return;
		}
		//如果是空的就直接加
		int iCount = m_State.Count;
		if (iCount == 0) {
			m_State.Add (state);
			m_currentState = state;
			m_currentStateID = state.m_StateID;
			return;
		}
		//檢查有無重複
		for (int i = 0; i < iCount; i++) {
			if(m_State[i].m_StateID == state.m_StateID){
				return;
			}
		}
		m_State.Add (state);
	}