public FiniteStateMachine AddTransition(string transitionName, IState from, IState to) { from.Configure(this); to.Configure(this); if (from.Transitions == null) { from.Transitions = new Dictionary <string, IState>(); } if (!from.Transitions.ContainsKey(transitionName)) { from.Transitions.Add(transitionName, to); if (!_allStates.Contains(from)) { _allStates.Add(from); } if (!_allStates.Contains(to)) { _allStates.Add(to); } } return(this); }
public FiniteStateMachine(IState initialState, Func <IEnumerator, Coroutine> startCoroutine) { CurrentState = initialState.Configure(this); _allStates = new List <IState> { CurrentState }; _startCoroutine = startCoroutine; }
public FiniteStateMachine(IState initialState, Func <IEnumerator, Coroutine> startCoroutine, Action <string> callbackState) { if (callbackState != null) { Callback_state = callbackState; } CurrentState = initialState.Configure(this); _allStates = new List <IState> { CurrentState }; _startCoroutine = startCoroutine; }