コード例 #1
0
    public void DispatchMesssage(FSMTransitionType msg, BaseFSM receiverId, bool condition)
    {
        CharacterMessage message = new CharacterMessage(msg, receiverId, condition);

        if (message.condition)
        {
            message.Receiver.PerformTransition(message.Msg);
        }
    }
コード例 #2
0
 public void DeleteTransition(FSMTransitionType trans)
 {
     if (map.ContainsKey(trans))
     {
         map.Remove(trans);
         return;
     }
     Debug.LogError("ERROR: Transition passed was not on this State's List");
 }
コード例 #3
0
 public void AddTransition(FSMTransitionType transition, FSMStateType id)
 {
     if (map.ContainsKey(transition))
     {
         Debug.LogWarning("ERROR: transition is already inside the map");
         return;
     }
     map.Add(transition, id);
     Debug.Log("Added : " + transition + " with ID : " + id);
 }
コード例 #4
0
        /// <summary>
        /// 转换状态
        /// </summary>
        /// <param name="trans"></param>
        public void PerformTransition(FSMTransitionType trans)
        {
            FSMStateType id = currentState.GetOutputState(trans);

            currentStateID = id;

            foreach (FSMState state in fsmStates)
            {
                if (state.ID == currentStateID)
                {
                    Debug.Log(currentStateID);
                    currentState = state;
                    break;
                }
            }
        }
コード例 #5
0
 public CharacterMessage(FSMTransitionType msg, BaseFSM rid, bool con)
 {
     Msg       = msg;
     Receiver  = rid;
     condition = con;
 }
コード例 #6
0
 public FSMStateType GetOutputState(FSMTransitionType trans)
 {
     return(map[trans]);
 }