Пример #1
0
 public void Reset(bool callStateExit = false)
 {
     if (CurrentState == null)
     {
         CurrentState.OnStatExit(this, null);
     }
     CurrentState = InitialState;
 }
Пример #2
0
 public void AddState(ISimpleFSMState <TStateKey> state)
 {
     Debug.Assert(!states.ContainsKey(state.Key), "State with key" + state.Key + " already exist while adding it!");
     states[state.Key] = state;
     if (InitialState == null)
     {
         SetInitialState(state.Key);
     }
 }
Пример #3
0
 public void Update(float deltaTime)
 {
     if (CurrentState == null)
     {
         CurrentState = InitialState;
         CurrentState.OnStateEnter(this, null);
     }
     if (CurrentState != null)
     {
         CurrentState.Update(this, deltaTime);
     }
 }
Пример #4
0
        public void GoToState(TStateKey stateKey)
        {
            var newState = states[stateKey];
            var oldState = CurrentState;

            if (CurrentState != null)
            {
                CurrentState.OnStatExit(this, newState);
            }
            newState.OnStateEnter(this, oldState);

            CurrentState = newState;
            onStateChanged?.Invoke(oldState, newState);
        }
Пример #5
0
 public void OnStatExit(SimpleFSM <TStateKey> stateMachine, ISimpleFSMState <TStateKey> toState)
 {
     exit?.Invoke(stateMachine, toState);
 }
Пример #6
0
 public void OnStateEnter(SimpleFSM <TStateKey> stateMachine, ISimpleFSMState <TStateKey> fromState)
 {
     enter?.Invoke(stateMachine, fromState);
 }