Ejemplo n.º 1
0
        static Vector3 SideSlider(int controlID, Vector3 position, Vector3 sideVector, Vector3 direction,
                                  HandlesExtra.CapFunction drawFunc)
        {
            Vector3 vector = HandlesExtra.Slider2D(controlID, position, drawFunc);

            vector = position + Vector3.Project(vector - position, direction);

            return(vector);
        }
Ejemplo n.º 2
0
        static float RotationSlider(int controlID, Vector3 cornerPos, float rotation, Vector3 pivot, Vector3 handleDir, Vector3 outwardsDir1, Vector3 outwardsDir2, float handleSize, HandlesExtra.CapFunction drawFunc, Vector2 snap)
        {
            EventType eventType = Event.current.GetTypeForControl(controlID);

            Vector3 b            = outwardsDir1 + outwardsDir2;
            Vector3 guiCornerPos = HandleUtility.WorldToGUIPoint(cornerPos);
            Vector3 b2           = ((Vector3)HandleUtility.WorldToGUIPoint(cornerPos + b) - guiCornerPos).normalized * 15f;

            cornerPos = HandlesExtra.GUIToWorld(guiCornerPos + b2);

            Vector3 newPosition = HandlesExtra.Slider2D(controlID, cornerPos, drawFunc);

            rotation = rotation - AngleAroundAxis(newPosition - pivot, cornerPos - pivot, handleDir);

            if (eventType == EventType.Layout)
            {
                HandleUtility.AddControl(controlID, HandleUtility.DistanceToCircle(cornerPos, HandleUtility.GetHandleSize(cornerPos + b) / 10f));
            }

            if (eventType == EventType.Repaint)
            {
                if ((HandleUtility.nearestControl == controlID && GUIUtility.hotControl == 0) || GUIUtility.hotControl == controlID)
                {
                    Rect cursorRect = new Rect(0, 0, 20f, 20f);
                    cursorRect.center = Event.current.mousePosition;
                    EditorGUIUtility.AddCursorRect(cursorRect, MouseCursor.RotateArrow, controlID);
                }
            }

            return(rotation);
        }