CalculatePivotSnapValues() static private méthode

static private CalculatePivotSnapValues ( Rect rect, Vector3 pivot, Quaternion rotation ) : void
rect UnityEngine.Rect
pivot Vector3
rotation UnityEngine.Quaternion
Résultat void
Exemple #1
0
        private static Vector3 PivotHandleGUI(Rect rect, Vector3 pivot, Quaternion rotation)
        {
            int       controlID      = GUIUtility.GetControlID(RectTool.s_PivotHandleHash, FocusType.Passive);
            EventType typeForControl = Event.current.GetTypeForControl(controlID);

            if (GUI.color.a > 0f || GUIUtility.hotControl == controlID)
            {
                EventType eventType = typeForControl;
                EditorGUI.BeginChangeCheck();
                Vector3 a = Handles.Slider2D(controlID, pivot, rotation * Vector3.forward, rotation * Vector3.right, rotation * Vector3.up, HandleUtility.GetHandleSize(pivot) * 0.1f, new Handles.DrawCapFunction(RectHandles.PivotCap), Vector2.zero);
                if (eventType == EventType.MouseDown && GUIUtility.hotControl == controlID)
                {
                    RectTransformSnapping.CalculatePivotSnapValues(rect, pivot, rotation);
                }
                if (EditorGUI.EndChangeCheck())
                {
                    Vector2 vector = Quaternion.Inverse(rotation) * (a - pivot);
                    vector.x /= rect.width;
                    vector.y /= rect.height;
                    Vector2 vector2      = new Vector2(-rect.x / rect.width, -rect.y / rect.height);
                    Vector2 vector3      = vector2 + vector;
                    Vector2 snapDistance = HandleUtility.GetHandleSize(pivot) * 0.05f * new Vector2(1f / rect.width, 1f / rect.height);
                    vector3   = RectTransformSnapping.SnapToGuides(vector3, snapDistance);
                    vector    = vector3 - vector2;
                    vector.x *= rect.width;
                    vector.y *= rect.height;
                    pivot    += rotation * vector;
                }
            }
            ManipulationToolUtility.DetectDraggingBasedOnMouseDownUp("ChangingPivot", typeForControl);
            return(pivot);
        }
        static Vector3 PivotHandleGUI(Rect rect, Vector3 pivot, Quaternion rotation)
        {
            int       id        = GUIUtility.GetControlID(s_PivotHandleHash, FocusType.Passive);
            EventType eventType = Event.current.GetTypeForControl(id);

            if (GUI.color.a > 0 || GUIUtility.hotControl == id)
            {
                EventType typeBefore = eventType;

                EditorGUI.BeginChangeCheck();
                Vector3 newPivot = Handles.Slider2D(id, pivot, rotation * Vector3.forward, rotation * Vector3.right, rotation * Vector3.up, HandleUtility.GetHandleSize(pivot) * 0.1f, RectHandles.PivotHandleCap, Vector2.zero);

                if (typeBefore == EventType.MouseDown && GUIUtility.hotControl == id)
                {
                    RectTransformSnapping.CalculatePivotSnapValues(rect, pivot, rotation);
                }

                if (EditorGUI.EndChangeCheck())
                {
                    Vector2 offset = Quaternion.Inverse(rotation) * (newPivot - pivot);
                    offset.x /= rect.width;
                    offset.y /= rect.height;
                    Vector2 pivotCoordBefore = new Vector2(-rect.x / rect.width, -rect.y / rect.height);
                    Vector2 pivotCoordAfter  = pivotCoordBefore + offset;

                    Vector2 snapSize = HandleUtility.GetHandleSize(pivot) * RectTransformSnapping.kSnapThreshold * new Vector2(1 / rect.width, 1 / rect.height);
                    pivotCoordAfter = RectTransformSnapping.SnapToGuides(pivotCoordAfter, snapSize);

                    offset    = (pivotCoordAfter - pivotCoordBefore);
                    offset.x *= rect.width;
                    offset.y *= rect.height;
                    pivot    += rotation * offset;
                }
            }
            ManipulationToolUtility.DetectDraggingBasedOnMouseDownUp(kChangingPivot, eventType);

            return(pivot);
        }