private void Start() { switch (StartingState) { case MovementState.STOPPED: { CurrentState = new StoppedState(MovementModel, this); break; } } PreviousState = CurrentState; CurrentState.OnEnterState(); StartingPosition = transform.position; }
public void UpdateState(PlayerInputs input) { if (changedState) { CurrentState.OnExitState(); PreviousState = CurrentState; CurrentState = NextState; MovementModel.State = CurrentState.State; CurrentState.OnEnterState(); changedState = false; } CurrentState.OnUpdateState(input); }
public void ChangeStateImmediate(MovementState targetState) { switch (targetState) { case MovementState.STOPPED: { NextState = new StoppedState(MovementModel, this); break; } case MovementState.ACCELERATING: { NextState = new AccelState(MovementModel, this); break; } case MovementState.MOVING: { NextState = new MovingState(MovementModel, this); break; } case MovementState.JUMPING: { NextState = new JumpingState(MovementModel, this); break; } case MovementState.FALL_FORGIVENESS: { NextState = new FallForgivenessState(MovementModel, this); break; } case MovementState.FALLING: { NextState = new FallingState(MovementModel, this); break; } case MovementState.HUGGING_WALL: { NextState = new HuggingWallState(MovementModel, this); break; } case MovementState.WALL_LAUNCH: { NextState = new WallLaunchState(MovementModel, this); break; } } CurrentState.OnExitState(); PreviousState = CurrentState; CurrentState = NextState; MovementModel.State = CurrentState.State; CurrentState.OnEnterState(); }