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