public bool DoSlider(int id, SliderData sliderData, out Vector3 newPosition)
        {
            EditorGUI.BeginChangeCheck();

            if (HasCurrentCamera())
            {
                newPosition = Handles.Slider2D(id, sliderData.position, sliderData.forward, sliderData.right, sliderData.up, 1f, nullCap, Vector2.zero);
            }
            else
            {
                newPosition = Slider2D.Do(id, sliderData.position, null);
            }

            return(EditorGUI.EndChangeCheck());
        }
        internal Rect Do(int controlID)
        {
            var eventType = Event.current.GetTypeForControl(controlID);

            if (eventType == EventType.MouseDown)
            {
                m_StartPosition = ModuleUtility.GUIToWorld(Event.current.mousePosition);
                m_Position      = m_StartPosition;
            }

            if (eventType == EventType.Layout)
            {
                HandleUtility.AddDefaultControl(controlID);
            }

            m_Position = Slider2D.Do(controlID, m_Position);

            var rect = new Rect();

            rect.min = m_StartPosition;
            rect.max = m_Position;

            return(rect);
        }