public void DispatchMesssage(FSMTransitionType msg, BaseFSM receiverId, bool condition) { CharacterMessage message = new CharacterMessage(msg, receiverId, condition); if (message.condition) { message.Receiver.PerformTransition(message.Msg); } }
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"); }
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); }
/// <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; } } }
public CharacterMessage(FSMTransitionType msg, BaseFSM rid, bool con) { Msg = msg; Receiver = rid; condition = con; }
public FSMStateType GetOutputState(FSMTransitionType trans) { return(map[trans]); }