private void SwitchToNewState(Type nextState) { currState.Exit(); currState = availableStates[nextState]; currState.Enter(); OnStateChanged?.Invoke(currState); //?? }
private void Update() { if (currState == null) { currState = availableStates.Values.First(); //first state is default } var nextState = currState?.Tick(); if (nextState != null && nextState != currState?.GetType()) { SwitchToNewState(nextState); } }