private void DrawDistanceOptions() { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Align by", GUILayout.ExpandWidth(false)); distanceOption = (DistanceOption)EditorGUILayout.Popup((int)distanceOption, distanceOptions); EditorGUILayout.EndHorizontal(); }
public Condition_Distance(ComparisonOperator op, DistanceOption option) { this.Operator = op; this.Option = option; }
public static void DistributeSelection(AlignMode alignMode, DistanceOption distanceOption, SortOrder sortOrder, float paddingLeftBottomPixels, float paddingRightTopPixels) { Distribute.alignMode = alignMode; Distribute.distanceOption = distanceOption; Distribute.sortOrder = sortOrder; Distribute.paddingLeftBottomPixels = paddingLeftBottomPixels; Distribute.paddingRightTopPixels = paddingRightTopPixels; Transform[] selection = GetSortedSelection(); RectTransform targetRectTransform = GetTargetRectTransform(selection); Vector2 start = CalculateStart(targetRectTransform, selection[0] as RectTransform); Vector2 end = CalculateEnd(targetRectTransform, selection[selection.Length - 1].transform as RectTransform); Vector2 distanceBetweenElements = CalculateDistanceBetweenElements(start, end, selection); // Debug.Log("[Distribute]\tTarget: \t" + alignMode + "\n\t\tMode:\t" + distanceOption); Vector2 currentPosition = start; for (int i = 0; i < selection.Length; i++) { Undo.RecordObject(selection[i].transform, "Distribute " + distanceOption); // DrawDebugLines(currentPosition, selection[i]); Vector3 oldPosition = selection[i].position; Quaternion originalParentRotation = selection[i].parent.rotation; selection[i].parent.rotation = new Quaternion(); Vector3 targetPosition = selection[i].position; switch (alignMode) { case AlignMode.Horizontal: targetPosition.x = currentPosition.x + GetDistributionOffset(selection[i] as RectTransform).x; break; case AlignMode.Vertical: targetPosition.y = currentPosition.y + GetDistributionOffset(selection[i] as RectTransform).y; break; default: Debug.LogError("Invalid target: " + alignMode); break; } selection[i].position = targetPosition; selection[i].parent.rotation = originalParentRotation; Utility.AdjustAnchors(selection[i] as RectTransform, oldPosition); if (distanceOption == DistanceOption.Space) { currentPosition += Utility.GetTransformSize(selection[i]); } currentPosition += distanceBetweenElements; } Utility.CleanUp(); }