// Update is called once per frame
    void FixedUpdate()
    {
        // Check Velocity > 0 or DIE
        if (Rb.velocity.sqrMagnitude < float.Epsilon)
        {
            ; // TODO: Player Dies
        }
        // Lean
        var leanH = -MaxLeanForce *MassModifier *Input.GetAxis("Horizontal");

        var leanV = -MaxLeanForce *MassModifier *Input.GetAxis("Vertical");

        if (InvertSideLean)
        {
            leanH *= -1;
        }
        if (InvertFwdLean)
        {
            leanV *= -1;
        }

        var forcePosn = transform.TransformPoint(new Vector3(0, 1, 0));
        var forceDirn = transform.TransformDirection(new Vector3(0, 0, leanH));

        var tilt = Mathf.Acos(Vector3.Dot(transform.TransformDirection(new Vector3(0, 0, 1)), Vector3.up)) - (Mathf.PI / 2.0f);



        if (false && Mathf.Abs(tilt) > (MaxLeanAngle * Mathf.PI / 180))
        {
            Debug.Log("Tilt!!!" + (tilt * 180.0 / Mathf.PI).ToString("N3") + " > " + (MaxLeanAngle * Mathf.PI / 180));
            Rb.AddRelativeTorque(new Vector3(-leanH, 0, leanV), LeanMode); // Lean Left/Right, Forward/Back
        }
        else
        {
            Rb.AddRelativeTorque(new Vector3(leanH, 0, leanV), LeanMode); // Lean Left/Right, Forward/Back
        }
        Rb.AddRelativeForce(new Vector3(-leanV, 0, leanH));               // Move Left/Right

        if (leanH != 0 || leanV != 0)
        {
            Debug.Log("Lean H: " + leanH.ToString("N3") + " , V: " + leanV.ToString("N3"));
        }



        // Brake

        CurrentBrake = MaxBrakeForce * Input.GetAxis("Brake");

        Rb.drag = Mathf.Max(InitialDrag, CurrentBrake);

        if (CurrentBrake != 0)
        {
            Debug.Log("Brake: " + CurrentBrake.ToString("N3"));
        }
    }