protected void updateToPosition(Vector3 in_position)
        {
            // keep the update positions on the same plane
            in_position.z = _playerController.m_playerPlane.transform.position.z;

            Transform planeTransform = _playerController.m_playerPlane.transform;
            Vector3   vectorToOpp    = in_position - planeTransform.position;

            bool useRightVector = HudHelper.QuickAbs(vectorToOpp.x) > HudHelper.QuickAbs(vectorToOpp.y);

            Vector3 lineToMiddleUp   = Vector3.Project(vectorToOpp, useRightVector ? Vector3.right : Vector3.up);
            float   angleToVectorOpp = Vector3.Angle(vectorToOpp, useRightVector ? transform.right : transform.up);

            // works well going up and down
            if ((planeTransform.up.x * lineToMiddleUp.y) - (planeTransform.up.y * lineToMiddleUp.x) < 0)
            {
                angleToVectorOpp *= -1;
            }

            if (angleToVectorOpp > 0.0f)
            {
                _actionControl.PlayerOutputs.Add(ePlayerControllerInputs.LEFT);
            }
            else if (angleToVectorOpp < -0.0f)
            {
                _actionControl.PlayerOutputs.Add(ePlayerControllerInputs.RIGHT);
            }
        }