Beispiel #1
0
        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;
        }
Beispiel #3
0
        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;
        }