예제 #1
0
        /// <summary>
        /// Gets the max columns count.
        /// </summary>
        /// <returns>The max columns count.</returns>
        /// <param name="uiElements">User interface elements.</param>
        /// <param name="baseLength">Base length.</param>
        /// <param name="layout">Layout.</param>
        /// <param name="maxColumns">Max columns.</param>
        public static int GetMaxColumnsCount(List <RectTransform> uiElements, float baseLength, EasyLayout layout, int maxColumns)
        {
            var length  = baseLength;
            var spacing = (layout.Stacking == Stackings.Horizontal) ? layout.Spacing.x : layout.Spacing.y;

            bool min_columns_setted = false;
            int  min_columns        = maxColumns;
            int  current_columns    = 0;

            for (int i = 0; i < uiElements.Count; i++)
            {
                var ui_length = layout.GetLength(uiElements[i]);

                if (current_columns == maxColumns)
                {
                    min_columns_setted = true;
                    min_columns        = Mathf.Min(min_columns, current_columns);

                    current_columns = 1;
                    length          = baseLength - ui_length;
                    continue;
                }
                if (current_columns == 0)
                {
                    current_columns = 1;
                    length          = baseLength - ui_length;
                    continue;
                }

                if (length >= (ui_length + spacing))
                {
                    length -= ui_length + spacing;
                    current_columns++;
                }
                else
                {
                    min_columns_setted = true;
                    min_columns        = Mathf.Min(min_columns, current_columns);

                    current_columns = 1;
                    length          = baseLength - ui_length;
                }
            }
            if (!min_columns_setted)
            {
                min_columns = current_columns;
            }

            return(min_columns);
        }
예제 #2
0
        /// <summary>
        /// Group the specified uiElements.
        /// </summary>
        /// <param name="uiElements">User interface elements.</param>
        /// <param name="baseLength">Base length (width or height).</param>
        /// <param name="layout">Layout.</param>
        public static List <List <RectTransform> > Group(List <RectTransform> uiElements, float baseLength, EasyLayout layout)
        {
            var length = baseLength;

            var spacing = (layout.Stacking == Stackings.Horizontal) ? layout.Spacing.x : layout.Spacing.y;

            var group = new List <List <RectTransform> >();

            var row = new List <RectTransform>();

            foreach (var ui_element in uiElements)
            {
                var ui_length = layout.GetLength(ui_element);

                if (row.Count == 0)
                {
                    length -= ui_length;
                    row.Add(ui_element);
                    continue;
                }

                if (length >= (ui_length + spacing))
                {
                    length -= ui_length + spacing;
                    row.Add(ui_element);
                }
                else
                {
                    group.Add(row);
                    length  = baseLength;
                    length -= ui_length;
                    row     = new List <RectTransform>();
                    row.Add(ui_element);
                }
            }
            if (row.Count > 0)
            {
                group.Add(row);
            }

            return(group);
        }
예제 #3
0
        /// <summary>
        /// Group the specified uiElements.
        /// </summary>
        /// <param name="uiElements">User interface elements.</param>
        /// <param name="baseLength">Base length (width or height).</param>
        /// <param name="layout">Layout.</param>
        /// <param name="group">Result</param>
        public static void Group(List <RectTransform> uiElements, float baseLength, EasyLayout layout, List <List <RectTransform> > group)
        {
            var length = baseLength;

            var spacing = (layout.Stacking == Stackings.Horizontal) ? layout.Spacing.x : layout.Spacing.y;

            var row = layout.GetRectTransformList();

            for (int i = 0; i < uiElements.Count; i++)
            {
                var ui_length = layout.GetLength(uiElements[i]);

                if (row.Count == 0)
                {
                    length -= ui_length;
                    row.Add(uiElements[i]);
                    continue;
                }

                if (length >= (ui_length + spacing))
                {
                    length -= ui_length + spacing;
                    row.Add(uiElements[i]);
                }
                else
                {
                    group.Add(row);
                    length  = baseLength;
                    length -= ui_length;
                    row     = layout.GetRectTransformList();
                    row.Add(uiElements[i]);
                }
            }
            if (row.Count > 0)
            {
                group.Add(row);
            }
        }