Vector2 CalculatePositionsVertical(Vector2 size, Vector2 offset) { var position = offset; var align = new Vector2(0, 0); var transposed_group = EasyLayoutUtilites.Transpose(ElementsGroup); CalculateMaxRowsHeights(); CalculateColumnsHeights(transposed_group); for (int y = 0; y < transposed_group.Count; y++) { var column_cell_max_size = GetMaxCellSize(transposed_group[y]); for (int x = 0; x < transposed_group[y].Count; x++) { var element = transposed_group[y][x]; align = GetAlignByHeight(element, MaxRowsHeights[x], column_cell_max_size, size.y - ColumnsHeights[y]); element.PositionTopLeft = GetElementPosition(position, align); position.y -= ((Layout.LayoutType == LayoutTypes.Compact) ? element.Height : MaxRowsHeights[x]) + Layout.Spacing.y; } position.y = offset.y; position.x += column_cell_max_size.x + Layout.Spacing.x; } return(size); }
void ShrinkHeightToFit() { var height = Layout.InternalSize.y; var transposed_group = EasyLayoutUtilites.Transpose(ElementsGroup); for (int i = 0; i < transposed_group.Count; i++) { ShrinkToFit(height, transposed_group[i], Layout.Spacing.y, RectTransform.Axis.Vertical); } }
/// <summary> /// Group the specified elements. /// </summary> protected override void Group() { ElementsGroup.Clear(); if (Elements.Count == 0) { return; } if (Layout.IsHorizontal) { GroupHorizontal(ElementsGroup); } else { GroupVertical(ElementsGroup); } var rows = ElementsGroup.Count; var columns = EasyLayoutUtilites.MaxCount(ElementsGroup); if ((Layout.CompactConstraint == CompactConstraints.MaxRowCount) && (rows > Layout.ConstraintCount)) { ElementsGroup.Clear(); GroupByRows(); } else if ((Layout.CompactConstraint == CompactConstraints.MaxColumnCount) && (columns > Layout.ConstraintCount)) { ElementsGroup.Clear(); GroupByColumns(); } if (!Layout.TopToBottom) { ElementsGroup.Reverse(); } if (Layout.RightToLeft) { ElementsGroup.ForEach(ReverseList); } }
/// <summary> /// Shrink elements on overflow. /// </summary> protected void ShrinkOnOverflow() { if (ElementsGroup.Count == 0) { return; } var size = Layout.InternalSize; var rows = ElementsGroup.Count - 1; var columns = EasyLayoutUtilites.MaxCount(ElementsGroup) - 1; var size_without_spacing = new Vector2(size.x - (Layout.Spacing.x * columns), size.y - (Layout.Spacing.y * rows)); var ui_size_without_spacing = new Vector2(Layout.UISize.x - (Layout.Spacing.x * columns), Layout.UISize.y - (Layout.Spacing.y * rows)); var scale = GetShrinkScale(size_without_spacing, ui_size_without_spacing); foreach (var row in ElementsGroup) { foreach (var elem in row) { elem.NewWidth = elem.Width * scale; elem.NewHeight = elem.Height * scale; } } }
/// <summary> /// Resize columns width to fit. /// </summary> protected void ResizeColumnWidthToFit() { var transposed_group = EasyLayoutUtilites.Transpose(ElementsGroup); ResizeToFit(Layout.InternalSize.x, transposed_group, Layout.Spacing.x, RectTransform.Axis.Horizontal); }