예제 #1
0
        private static void SetLayoutModeForAxis(SerializedProperty anchorMin, SerializedProperty anchorMax, SerializedProperty position, SerializedProperty sizeDelta, SerializedProperty pivot, int axis, LayoutDropdownWindow.LayoutMode layoutMode, bool doPivot, bool doPosition, Vector2[,] defaultValues)
        {
            anchorMin.serializedObject.ApplyModifiedProperties();
            for (int index = 0; index < anchorMin.serializedObject.targetObjects.Length; ++index)
            {
                RectTransform targetObject = anchorMin.serializedObject.targetObjects[index] as RectTransform;
                Undo.RecordObject((Object)targetObject, "Change Rectangle Anchors");
                if (doPosition && defaultValues != null && defaultValues.Length > index)
                {
                    Vector2 vector2 = targetObject.anchorMin;
                    vector2[axis]          = defaultValues[index, 0][axis];
                    targetObject.anchorMin = vector2;
                    vector2                       = targetObject.anchorMax;
                    vector2[axis]                 = defaultValues[index, 1][axis];
                    targetObject.anchorMax        = vector2;
                    vector2                       = targetObject.anchoredPosition;
                    vector2[axis]                 = defaultValues[index, 2][axis];
                    targetObject.anchoredPosition = vector2;
                    vector2                       = targetObject.sizeDelta;
                    vector2[axis]                 = defaultValues[index, 3][axis];
                    targetObject.sizeDelta        = vector2;
                }
                if (doPivot && layoutMode != LayoutDropdownWindow.LayoutMode.Undefined)
                {
                    RectTransformEditor.SetPivotSmart(targetObject, LayoutDropdownWindow.kPivotsForModes[(int)layoutMode], axis, true, true);
                }
                Vector2 vector2_1 = Vector2.zero;
                switch (layoutMode)
                {
                case LayoutDropdownWindow.LayoutMode.Min:
                    RectTransformEditor.SetAnchorSmart(targetObject, 0.0f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(targetObject, 0.0f, axis, true, true, true);
                    vector2_1 = targetObject.offsetMin;
                    EditorUtility.SetDirty((Object)targetObject);
                    break;

                case LayoutDropdownWindow.LayoutMode.Middle:
                    RectTransformEditor.SetAnchorSmart(targetObject, 0.5f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(targetObject, 0.5f, axis, true, true, true);
                    vector2_1 = (targetObject.offsetMin + targetObject.offsetMax) * 0.5f;
                    EditorUtility.SetDirty((Object)targetObject);
                    break;

                case LayoutDropdownWindow.LayoutMode.Max:
                    RectTransformEditor.SetAnchorSmart(targetObject, 1f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(targetObject, 1f, axis, true, true, true);
                    vector2_1 = targetObject.offsetMax;
                    EditorUtility.SetDirty((Object)targetObject);
                    break;

                case LayoutDropdownWindow.LayoutMode.Stretch:
                    RectTransformEditor.SetAnchorSmart(targetObject, 0.0f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(targetObject, 1f, axis, true, true, true);
                    vector2_1 = (targetObject.offsetMin + targetObject.offsetMax) * 0.5f;
                    EditorUtility.SetDirty((Object)targetObject);
                    break;
                }
                if (doPosition)
                {
                    Vector2 anchoredPosition = targetObject.anchoredPosition;
                    anchoredPosition[axis]       -= vector2_1[axis];
                    targetObject.anchoredPosition = anchoredPosition;
                    if (layoutMode == LayoutDropdownWindow.LayoutMode.Stretch)
                    {
                        Vector2 sizeDelta1 = targetObject.sizeDelta;
                        sizeDelta1[axis]       = 0.0f;
                        targetObject.sizeDelta = sizeDelta1;
                    }
                }
            }
            anchorMin.serializedObject.Update();
        }
예제 #2
0
        private static void SetLayoutModeForAxis(SerializedProperty anchorMin, SerializedProperty anchorMax, SerializedProperty position, SerializedProperty sizeDelta, SerializedProperty pivot, int axis, LayoutDropdownWindow.LayoutMode layoutMode, bool doPivot, bool doPosition, Vector2[,] defaultValues)
        {
            anchorMin.serializedObject.ApplyModifiedProperties();
            for (int i = 0; i < anchorMin.serializedObject.targetObjects.Length; i++)
            {
                RectTransform rectTransform = anchorMin.serializedObject.targetObjects[i] as RectTransform;
                Undo.RecordObject(rectTransform, "Change Rectangle Anchors");
                if (doPosition)
                {
                    if (defaultValues != null && defaultValues.Length > i)
                    {
                        Vector2 vector = rectTransform.anchorMin;
                        vector[axis]            = defaultValues[i, 0][axis];
                        rectTransform.anchorMin = vector;
                        vector                         = rectTransform.anchorMax;
                        vector[axis]                   = defaultValues[i, 1][axis];
                        rectTransform.anchorMax        = vector;
                        vector                         = rectTransform.anchoredPosition;
                        vector[axis]                   = defaultValues[i, 2][axis];
                        rectTransform.anchoredPosition = vector;
                        vector                         = rectTransform.sizeDelta;
                        vector[axis]                   = defaultValues[i, 3][axis];
                        rectTransform.sizeDelta        = vector;
                    }
                }
                if (doPivot && layoutMode != LayoutDropdownWindow.LayoutMode.Undefined)
                {
                    RectTransformEditor.SetPivotSmart(rectTransform, LayoutDropdownWindow.kPivotsForModes[(int)layoutMode], axis, true, true);
                }
                Vector2 vector2 = Vector2.zero;
                switch (layoutMode)
                {
                case LayoutDropdownWindow.LayoutMode.Min:
                    RectTransformEditor.SetAnchorSmart(rectTransform, 0f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(rectTransform, 0f, axis, true, true, true);
                    vector2 = rectTransform.offsetMin;
                    EditorUtility.SetDirty(rectTransform);
                    break;

                case LayoutDropdownWindow.LayoutMode.Middle:
                    RectTransformEditor.SetAnchorSmart(rectTransform, 0.5f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(rectTransform, 0.5f, axis, true, true, true);
                    vector2 = (rectTransform.offsetMin + rectTransform.offsetMax) * 0.5f;
                    EditorUtility.SetDirty(rectTransform);
                    break;

                case LayoutDropdownWindow.LayoutMode.Max:
                    RectTransformEditor.SetAnchorSmart(rectTransform, 1f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(rectTransform, 1f, axis, true, true, true);
                    vector2 = rectTransform.offsetMax;
                    EditorUtility.SetDirty(rectTransform);
                    break;

                case LayoutDropdownWindow.LayoutMode.Stretch:
                    RectTransformEditor.SetAnchorSmart(rectTransform, 0f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(rectTransform, 1f, axis, true, true, true);
                    vector2 = (rectTransform.offsetMin + rectTransform.offsetMax) * 0.5f;
                    EditorUtility.SetDirty(rectTransform);
                    break;
                }
                if (doPosition)
                {
                    Vector2 anchoredPosition = rectTransform.anchoredPosition;
                    anchoredPosition[axis]        -= vector2[axis];
                    rectTransform.anchoredPosition = anchoredPosition;
                    if (layoutMode == LayoutDropdownWindow.LayoutMode.Stretch)
                    {
                        Vector2 sizeDelta2 = rectTransform.sizeDelta;
                        sizeDelta2[axis]        = 0f;
                        rectTransform.sizeDelta = sizeDelta2;
                    }
                }
            }
            anchorMin.serializedObject.Update();
        }
예제 #3
0
        static void SetLayoutModeForAxis(
            SerializedProperty anchorMin,
            int axis, LayoutMode layoutMode,
            bool doPivot, bool doPosition, Vector2[,] defaultValues)
        {
            anchorMin.serializedObject.ApplyModifiedProperties();

            var targetObjects = anchorMin.serializedObject.targetObjects;

            for (int i = 0; i < targetObjects.Length; i++)
            {
                RectTransform gui = targetObjects[i] as RectTransform;
                Undo.RecordObject(gui, "Change Rectangle Anchors");

                if (doPosition)
                {
                    if (defaultValues != null && defaultValues.Length > i)
                    {
                        Vector2 temp;

                        temp          = gui.anchorMin;
                        temp[axis]    = defaultValues[i, 0][axis];
                        gui.anchorMin = temp;

                        temp          = gui.anchorMax;
                        temp[axis]    = defaultValues[i, 1][axis];
                        gui.anchorMax = temp;

                        temp                 = gui.anchoredPosition;
                        temp[axis]           = defaultValues[i, 2][axis];
                        gui.anchoredPosition = temp;

                        temp          = gui.sizeDelta;
                        temp[axis]    = defaultValues[i, 3][axis];
                        gui.sizeDelta = temp;
                    }
                }

                if (doPivot && layoutMode != LayoutMode.Undefined)
                {
                    RectTransformEditor.SetPivotSmart(gui, kPivotsForModes[(int)layoutMode], axis, true, true);
                }

                Vector2 refPosition = Vector2.zero;
                switch (layoutMode)
                {
                case LayoutMode.Min:
                    RectTransformEditor.SetAnchorSmart(gui, 0, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(gui, 0, axis, true, true, true);
                    refPosition = gui.offsetMin;
                    EditorUtility.SetDirty(gui);
                    break;

                case LayoutMode.Middle:
                    RectTransformEditor.SetAnchorSmart(gui, 0.5f, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(gui, 0.5f, axis, true, true, true);
                    refPosition = (gui.offsetMin + gui.offsetMax) * 0.5f;
                    EditorUtility.SetDirty(gui);
                    break;

                case LayoutMode.Max:
                    RectTransformEditor.SetAnchorSmart(gui, 1, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(gui, 1, axis, true, true, true);
                    refPosition = gui.offsetMax;
                    EditorUtility.SetDirty(gui);
                    break;

                case LayoutMode.Stretch:
                    RectTransformEditor.SetAnchorSmart(gui, 0, axis, false, true, true);
                    RectTransformEditor.SetAnchorSmart(gui, 1, axis, true, true, true);
                    refPosition = (gui.offsetMin + gui.offsetMax) * 0.5f;
                    EditorUtility.SetDirty(gui);
                    break;
                }

                if (doPosition)
                {
                    // Handle position
                    Vector2 rectPosition = gui.anchoredPosition;
                    rectPosition[axis]  -= refPosition[axis];
                    gui.anchoredPosition = rectPosition;

                    // Handle sizeDelta
                    if (layoutMode == LayoutMode.Stretch)
                    {
                        Vector2 rectSizeDelta = gui.sizeDelta;
                        rectSizeDelta[axis] = 0;
                        gui.sizeDelta       = rectSizeDelta;
                    }
                }
            }
            anchorMin.serializedObject.Update();
        }