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(); }
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(); }
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(); }