Пример #1
0
        private void DrawDistanceOptions()
        {
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Align by", GUILayout.ExpandWidth(false));
            distanceOption = (DistanceOption)EditorGUILayout.Popup((int)distanceOption, distanceOptions);

            EditorGUILayout.EndHorizontal();
        }
Пример #2
0
 public Condition_Distance(ComparisonOperator op, DistanceOption option)
 {
     this.Operator = op;
     this.Option   = option;
 }
Пример #3
0
        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();
        }