public class ActiveState : BaseState
{
    public ActiveState(PlayerController player) : base(player)
	{
	}

    public override void OnEnter()
    {

    }

	public override BaseState Update()
    {
        return null;
    }

	public override void OnExit()
    {

    }

	public override BaseState HandleInput()
    {
        bool moveJustPressed = controller.InputActions.Move.HasChanged && controller.InputActions.Move.IsPressed;
        if (moveJustPressed)
        {
            controller.Rigidbody.AddForce(controller.Transform.right * controller.Stats.MoveSpeed);
            controller.SoundManager.PlayMoveSound();
        }

        bool fireJustPressed = controller.InputActions.Attack.HasChanged && controller.InputActions.Attack.IsPressed;
        if (controller.AttackInstance.IsReady && fireJustPressed)
        {
            if (controller.AttackInstance is ChargeAttack)
                return new ChargingState(controller);
            else if (controller.AttackInstance is InstantAttack)
                return new FiringState(controller);
        }

        if (controller.InputActions.Rotate != 0)
        {
            controller.Transform.Rotate(controller.Transform.forward, -controller.InputActions.Rotate.Value * controller.Stats.TurnSpeed);
        }

        return null;
    }
}