public void DoTransition(Transition transition) { if (transition.Value == Transition.Null) Debug.LogError("(ERROR) Finite State Machine: Transition is set to <null>"); else { StateID id = currentState.GetCurrentState(transition); if (id.Value == StateID.Null) Debug.LogError("(ERROR) Finite State Machine: State " + id.ToString() + " does not have target state " + transition.ToString() + " for transition."); else { currentStateID = id; foreach(BaseFSMState s in states) { if (s.ID == currentStateID) { currentState.DoBeforeLeavingState(); currentState = s; currentState.DoBeforeEnteringState(); break; } } } } }
public StateID GetCurrentState(Transition transition) { if (transitions.ContainsKey(transition)) return transitions[transition]; else return new StateID(); }
public void DeleteTransition(Transition transition) { if (transition.Value == Transition.Null) Debug.LogError("(ERROR) Finite State Machine: Current transition is set to <null>"); else if (!transitions.ContainsKey(transition)) Debug.LogError("(ERROR) Finite State Machine: Transition " + transition.ToString() + " in State " + stateID.ToString() + " does not exist."); else transitions.Remove(transition); }
public void AddTransition(Transition transition, StateID id) { if (transition.Value == Transition.Null) Debug.LogError("(ERROR) Finite State Machine: Current transition is set to <null>"); else if (id.Value == StateID.Null) Debug.LogError("(ERROR) Finite State Machine: Current transitions id is set to <null>"); else if (transitions.ContainsKey(transition)) Debug.LogError("(ERROR) Finite State Machine: State " + stateID.ToString() + " already has transition " + transition.ToString()); else transitions.Add(transition, id); }