예제 #1
0
        public static Vector3 Slider2DHandle(Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, bool selectLockingAxisOnClick = false, Vector3?snappingSteps = null)
        {
            var id = GUIUtility.GetControlID(s_Slider2DHash, FocusType.Keyboard);

            s_Slider2DPointArray[0] = handlePos;
            return(Slider2D.Do(id, s_Slider2DPointArray, handlePos, offset, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, selectLockingAxisOnClick, false, snappingSteps)[0]);
        }
예제 #2
0
        private Vector3 EdgeHandle(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, Matrix4x4 transform)
        {
            Color color = Handles.color;
            bool  flag  = true;

            if (Camera.current)
            {
                Vector3 b          = Handles.matrix.inverse.MultiplyPoint(Camera.current.transform.position);
                Vector3 normalized = (handlePos - b).normalized;
                Vector3 lhs        = Vector3.Cross(slideDir1, slideDir2);
                float   f          = Vector3.Dot(lhs, normalized);
                if (Mathf.Acos(Mathf.Abs(f)) > 1.51843643f)
                {
                    flag = false;
                }
            }
            float num = (!flag) ? 0f : 1f;

            this.AdjustEdgeHandleColor(handlePos, slideDir1, slideDir2, transform, num);
            int controlID = GUIUtility.GetControlID(this.m_ControlIdHint, FocusType.Keyboard);

            if (num > 0f)
            {
                handlePos = Slider2D.Do(controlID, handlePos, handleDir, slideDir1, slideDir2, HandleUtility.GetHandleSize(handlePos) * 0.03f, new Handles.DrawCapFunction(Handles.DotCap), SnapSettings.scale, true);
            }
            Handles.color = color;
            return(handlePos);
        }
예제 #3
0
    public void DeleteSliderByIndex(int Idx)
    {
        Slider2D SliderObj = _Sliders[Idx];

        SliderObj.Delete();
        _Sliders.Remove(SliderObj);
    }
예제 #4
0
    public void DeleteSliderById(string Id)
    {
        Slider2D Panel = _Sliders.Find(x => x.gameObject.name == Id);

        Panel.Delete();
        _Sliders.Remove(Panel);
    }
예제 #5
0
        private Vector3 EdgeHandle(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, Matrix4x4 transform)
        {
            Color color = Handles.color;
            bool  flag  = true;

            if ((bool)((UnityEngine.Object)Camera.current))
            {
                Vector3 vector3    = Handles.matrix.inverse.MultiplyPoint(Camera.current.transform.position);
                Vector3 normalized = (handlePos - vector3).normalized;
                if ((double)Mathf.Acos(Mathf.Abs(Vector3.Dot(Vector3.Cross(slideDir1, slideDir2), normalized))) > 1.51843643188477)
                {
                    flag = false;
                }
            }
            float alphaFactor = !flag ? 0.0f : 1f;

            this.AdjustEdgeHandleColor(handlePos, slideDir1, slideDir2, transform, alphaFactor);
            int controlId = GUIUtility.GetControlID(this.m_ControlIdHint, FocusType.Keyboard);

            if ((double)alphaFactor > 0.0)
            {
                handlePos = Slider2D.Do(controlId, handlePos, handleDir, slideDir1, slideDir2, HandleUtility.GetHandleSize(handlePos) * 0.03f, new Handles.DrawCapFunction(Handles.DotCap), SnapSettings.scale, true);
            }
            Handles.color = color;
            return(handlePos);
        }
예제 #6
0
 public static Vector3 Slider2DHandleOffset(int id, Vector3 handlePos, Vector3 handleDir, float handleSize = 0, CapFunction capFunction = null, bool selectLockingAxisOnClick = false, Vector3? snappingSteps = null)
 {
     var grid        = Grid.ActiveGrid;
     var normalAxis  = grid.GetClosestAxis(handleDir);
     var axes        = grid.GetTangentAxesForAxis(normalAxis, out Vector3 slideDir1, out Vector3 slideDir2);
     if (handleSize == 0)
         handleSize = UnityEditor.HandleUtility.GetHandleSize(handlePos) * 0.05f;
     return Slider2D.Do(id, new Vector3[] { handlePos }, handlePos, Vector3.zero, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, selectLockingAxisOnClick, false, snappingSteps)[0] - handlePos;
 }
예제 #7
0
        public static Vector3 Edge2DHandleOffset(int id, Vector3 from, Vector3 to, Vector3 position, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, Vector3?snappingSteps = null, bool setCursor = true, bool renderEdge = true)
        {
            DrawEdgeHandle(id, from, to, setCursor: setCursor, renderEdge: renderEdge);

            var points = new Vector3[] { from, to };
            var result = Slider2D.Do(id, points, position, Vector3.zero, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, snappingSteps: snappingSteps);

            return(result[0] - from);
        }
        public static Vector3 Edge2DHandleOffset(int id, Vector3 from, Vector3 to, Vector3 position, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, Vector3?snappingSteps = null)
        {
            var evt = Event.current;

            switch (evt.GetTypeForControl(id))
            {
            case EventType.Layout:
            {
                if (Tools.current == Tool.View ||
                    Tools.current == Tool.None ||
                    evt.alt)
                {
                    break;
                }
                UnityEditor.HandleUtility.AddControl(id, UnityEditor.HandleUtility.DistanceToLine(from, to) * 0.5f);
                break;
            }

            case EventType.Repaint:
            {
                var sceneView = SceneView.currentDrawingSceneView;
                if (sceneView &&
                    Tools.current != Tool.View &&
                    Tools.current != Tool.None &&
                    !evt.alt)
                {
                    if (UnityEditor.HandleUtility.nearestControl == id || EditorGUIUtility.hotControl == id)
                    {
                        var rect = sceneView.position;
                        rect.min = Vector2.zero;
                        EditorGUIUtility.AddCursorRect(rect, SceneHandleUtility.GetCursorForEdge(from, to));
                    }
                }
                if (EditorGUIUtility.keyboardControl == id)
                {
                    SceneHandles.DrawAAPolyLine(3.0f, from, to);
                }
                else
                {
                    SceneHandles.DrawAAPolyLine(2.5f, from, to);
                }
                break;
            }
            }


            var points = new Vector3[] { from, to };
            var result = Slider2D.Do(id, points, position, Vector3.zero, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, snappingSteps: snappingSteps);

            return(result[0] - from);
        }
예제 #9
0
        public static Vector3 Slider2DHandleTangentOffset(int id, Vector3 from, Vector3 to, CapFunction capFunction = null, Vector3?snappingSteps = null)
        {
            var edgeDelta = from - to;
            var grid      = Grid.ActiveGrid;
            var edgeAxis  = grid.GetClosestAxis(edgeDelta);
            var axes      = grid.GetTangentAxesForAxis(edgeAxis, out Vector3 slideDir1, out Vector3 slideDir2);
            var midPoint  = (from + to) * 0.5f;
            var handleDir = Vector3.Cross(slideDir1, slideDir2);

            var points = new Vector3[] { from, to };
            var result = Slider2D.Do(id, points, midPoint, Vector3.zero, handleDir, slideDir1, slideDir2, 0, capFunction, axes, snappingSteps: snappingSteps);

            return(result[0] - from);
        }
예제 #10
0
 private static Vector3 DoSlider(int id, Vector3 position, Vector3 slide1, Vector3 slide2, float s, Handles.CapFunction cap)
 {
     return(Slider2D.Do(id, position, Vector3.zero, Vector3.Cross(slide1, slide2), slide1, slide2, s, cap, Vector2.zero, false));
 }
예제 #11
0
 public static Vector3 Slider2DHandle(int id, Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, bool selectLockingAxisOnClick = false, Vector3?snappingSteps = null)
 {
     return(Slider2D.Do(id, new Vector3[] { handlePos }, handlePos, offset, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, selectLockingAxisOnClick, false, snappingSteps)[0]);
 }
예제 #12
0
 protected override void Awake()
 {
     base.Awake();
     slider = GetComponent<Slider2D>();
 }
예제 #13
0
 public static Vector3 Slider2DHandle(int id, Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, CapFunction capFunction, Axes axes = Axes.None, bool selectLockingAxisOnClick = false, Vector3?snappingSteps = null, bool noSnapping = false)
 {
     s_Slider2DPointArray[0] = handlePos;
     return(Slider2D.Do(id, s_Slider2DPointArray, handlePos, offset, handleDir, slideDir1, slideDir2, handleSize, capFunction, axes, selectLockingAxisOnClick, noSnapping, snappingSteps)[0]);
 }