public void UpdatePlayerState()
    {
        if (GetMoveState() == MoveState.ForceBased)
        {
            return;
        }
        else if (GetMoveState() == MoveState.Rolling)
        {
            RollTimer -= Time.deltaTime;
            if (RollTimer > 0)
            {
                return;
            }
        }

        if (Input.GetKeyDown(KeyCode.Space)) //Can cancel Ranged animation
        {
            if (energy.Drain_ES(false, rollEnergyCost))
            {
                Roll();
                return;
            }
        }
        else if (moveState == MoveState.FollowCursor && (FollowCursorTimer > 0 || HoldCursorFollow))
        {
            return;
        }


        // TODO: Handle for controllers
        float controlThrowX = Mathf.Abs(Input.GetAxis("Horizontal"));
        float controlThrowY = Mathf.Abs(Input.GetAxis("Vertical"));

        if (controlThrowX > 0 || controlThrowY > 0)
        {
            if (Input.GetKey(KeyCode.LeftShift) && energy.Drain_ES_Greater(false, sprintEnergyCost, (moveState != MoveState.Running), MinSprintCost))
            {
                moveState = MoveState.Running;
            }
            else
            {
                moveState = MoveState.Walking;
            }
        }
        else
        {
            moveState = MoveState.Idle;
        }
    }