// Token: 0x0600463B RID: 17979 RVA: 0x0017DD38 File Offset: 0x0017C138 public static IEnumerator Open(RectTransform rect, float time = 0.5f) { if (rect != null) { EasyLayout.EasyLayout layout = rect.GetComponentInParent <EasyLayout.EasyLayout>(); float max_height = rect.rect.height; float end_time = Time.time + time; while (Time.time <= end_time) { float height = Mathf.Lerp(0f, max_height, 1f - (end_time - Time.time) / time); rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height); if (layout != null) { layout.NeedUpdateLayout(); } yield return(null); } rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, max_height); } yield break; }
// Token: 0x06004859 RID: 18521 RVA: 0x00183F18 File Offset: 0x00182318 public static IEnumerator AnimationCollapse(Notify notify) { RectTransform rect = notify.GetComponent <RectTransform>(); EasyLayout.EasyLayout layout = notify.GetComponentInParent <EasyLayout.EasyLayout>(); float max_height = rect.rect.height; float speed = 200f; float time = max_height / speed; float end_time = Time.time + time; while (Time.time <= end_time) { float height = Mathf.Lerp(max_height, 0f, 1f - (end_time - Time.time) / time); rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height); if (layout != null) { layout.UpdateLayout(); } yield return(null); } rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, max_height); yield break; }
/// <summary> /// Constructor. /// </summary> /// <param name="rectTransform">RectTransform.</param> /// <param name="resizer">Resizer.</param> /// <param name="layout">Current layout.</param> public LayoutElementInfo(RectTransform rectTransform, EasyLayoutResizer resizer, EasyLayout layout) { Rect = rectTransform; Resizer = resizer; Layout = layout; Scale = rectTransform.localScale; Width = rectTransform.rect.width * Scale.x; Height = rectTransform.rect.height * Scale.y; if (Layout.ChildrenWidth != ChildrenSize.DoNothing) { MinWidth = GetMinWidth(rectTransform); PreferredWidth = GetPreferredWidth(rectTransform); FlexibleWidth = GetFlexibleWidth(rectTransform); } if (Layout.ChildrenHeight != ChildrenSize.DoNothing) { MinHeight = GetMinHeight(rectTransform); PreferredHeight = GetPreferredHeight(rectTransform); FlexibleHeight = GetFlexibleHeight(rectTransform); } }
/// <summary> /// Constructor. /// </summary> /// <param name="layout">Layout.</param> public EasyLayoutResizer(EasyLayout layout) { Layout = layout; }
static void GroupVertical(List <LayoutElementInfo> elements, float baseLength, EasyLayout layout, List <List <LayoutElementInfo> > group) { var length = baseLength; var spacing = layout.Spacing.y; var block = 0; group.Add(new List <LayoutElementInfo>()); foreach (var element in elements) { if (group[block].Count == 0) { length -= element.Size; group[block].Add(element); continue; } if (length >= (element.Size + spacing)) { length -= element.Size + spacing; block += 1; if (group.Count == block) { group.Add(new List <LayoutElementInfo>()); } group[block].Add(element); } else { length = baseLength - element.Size; group[0].Add(element); block = 0; } } }
static void GroupHorizontal(List <LayoutElementInfo> elements, float baseLength, EasyLayout layout, List <List <LayoutElementInfo> > resultedGroup) { var length = baseLength; var spacing = layout.Spacing.x; var row = new List <LayoutElementInfo>(); resultedGroup.Add(row); foreach (var element in elements) { if (row.Count == 0) { length -= element.Size; row.Add(element); continue; } if (length >= (element.Size + spacing)) { length -= element.Size + spacing; row.Add(element); } else { length = baseLength - element.Size; row = new List <LayoutElementInfo>(); resultedGroup.Add(row); row.Add(element); } } }
/// <summary> /// Group the specified elements. /// </summary> /// <param name="elements">Elements.</param> /// <param name="baseLength">Base length (width or height).</param> /// <param name="layout">Layout.</param> /// <param name="resultedGroup">Result</param> public static void Group(List <LayoutElementInfo> elements, float baseLength, EasyLayout layout, List <List <LayoutElementInfo> > resultedGroup) { if (elements.Count == 0) { return; } if (layout.Stacking == Stackings.Horizontal) { GroupHorizontal(elements, baseLength, layout, resultedGroup); } else { GroupVertical(elements, baseLength, layout, resultedGroup); } var rows = resultedGroup.Count; var columns = rows > 0 ? resultedGroup.Max(x => x.Count) : 0; if ((layout.CompactConstraint == CompactConstraints.MaxRowCount) && (rows > layout.ConstraintCount)) { resultedGroup.Clear(); EasyLayoutGrid.GroupByRows(elements, layout, resultedGroup); } else if ((layout.CompactConstraint == CompactConstraints.MaxColumnCount) && (columns > layout.ConstraintCount)) { resultedGroup.Clear(); EasyLayoutGrid.GroupByColumns(elements, layout, resultedGroup); } }
/// <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> /// 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 size).</param> /// <param name="layout">Layout.</param> /// <param name="group">Result</param> public static void GroupFlexible(List <RectTransform> uiElements, float baseLength, EasyLayout layout, List <List <RectTransform> > group) { int max_columns = 999999; while (true) { var new_max_columns = GetMaxColumnsCount(uiElements, baseLength, layout, max_columns); if ((max_columns == new_max_columns) || (new_max_columns == 1)) { break; } max_columns = new_max_columns; } if (layout.Stacking == Stackings.Horizontal) { GroupByColumnsHorizontal(uiElements, layout, max_columns, group); } else { GroupByRowsVertical(uiElements, layout, max_columns, group); } }
// Token: 0x06004701 RID: 18177 RVA: 0x00180C08 File Offset: 0x0017F008 private void SetPositions(List <List <RectTransform> > group, Vector2 startPosition, Vector2 groupSize) { Vector2 position = startPosition; List <float> rowsWidths = this.GetRowsWidths(group); float[] maxColumnsWidths = this.GetMaxColumnsWidths(group); Vector2 align = new Vector2(0f, 0f); int num = 0; foreach (List <RectTransform> list in group) { Vector2 maxCellSize = this.GetMaxCellSize(list); int num2 = 0; foreach (RectTransform rectTransform in list) { align = this.GetAlign(rectTransform, maxColumnsWidths[num2], maxCellSize, groupSize.x - rowsWidths[num]); Vector2 uiposition = this.GetUIPosition(rectTransform, position, align); if (rectTransform.localPosition.x != uiposition.x || rectTransform.localPosition.y != uiposition.y) { rectTransform.localPosition = uiposition; rectTransform.localRotation = Quaternion.identity; } position.x += ((this.LayoutType != LayoutTypes.Compact) ? maxColumnsWidths[num2] : EasyLayout.ScaledWidth(rectTransform)) + this.Spacing.x; num2++; } position.x = startPosition.x; position.y -= maxCellSize.y + this.Spacing.y; num++; } }
// Token: 0x06004700 RID: 18176 RVA: 0x00180B74 File Offset: 0x0017EF74 private Vector2 GetAlign(RectTransform ui, float maxWidth, Vector2 cellMaxSize, float emptyWidth) { if (this.LayoutType == LayoutTypes.Compact) { return(new Vector2(emptyWidth * EasyLayout.rowAligns[this.RowAlign], (cellMaxSize.y - EasyLayout.ScaledHeight(ui)) * EasyLayout.innerAligns[this.InnerAlign])); } Vector2 vector = EasyLayout.groupPositions[this.CellAlign]; return(new Vector2((maxWidth - EasyLayout.ScaledWidth(ui)) * vector.x, (cellMaxSize.y - EasyLayout.ScaledHeight(ui)) * (1f - vector.y))); }
// Token: 0x060046F6 RID: 18166 RVA: 0x00180614 File Offset: 0x0017EA14 private float GetLength(RectTransform ui, bool scaled = true) { if (scaled) { return((this.Stacking != Stackings.Horizontal) ? EasyLayout.ScaledHeight(ui) : EasyLayout.ScaledWidth(ui)); } return((this.Stacking != Stackings.Horizontal) ? ui.rect.height : ui.rect.width); }
/// <summary> /// Group the specified uiElements. /// </summary> /// <param name="uiElements">User interface elements.</param> /// <param name="baseLength">Base length (width or size).</param> /// <param name="layout">Layout.</param> /// <param name="maxColumns">Max columns.</param> public static List <List <RectTransform> > Group(List <RectTransform> uiElements, float baseLength, EasyLayout layout, int maxColumns = 0) { int max_columns = 999999; while (true) { var new_max_columns = GetMaxColumnsCount(uiElements, baseLength, layout, max_columns); if ((max_columns == new_max_columns) || (new_max_columns == 1)) { max_columns = new_max_columns; break; } max_columns = new_max_columns; } var group = new List <List <RectTransform> >(); var row = new List <RectTransform>(); int i = 0; foreach (var ui_element in uiElements) { if ((i > 0) && ((i % max_columns) == 0)) { group.Add(row); row = new List <RectTransform>(); } row.Add(ui_element); i++; } 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 size).</param> /// <param name="layout">Layout.</param> /// <param name="resultedGroup">Result</param> public static void Group(List <LayoutElementInfo> uiElements, float baseLength, EasyLayout layout, List <List <LayoutElementInfo> > resultedGroup) { if (layout.GridConstraint == GridConstraints.Flexible) { EasyLayoutGrid.GroupFlexible(uiElements, baseLength, layout, resultedGroup); } else if (layout.GridConstraint == GridConstraints.FixedRowCount) { EasyLayoutGrid.GroupByRows(uiElements, layout, resultedGroup); } else if (layout.GridConstraint == GridConstraints.FixedColumnCount) { EasyLayoutGrid.GroupByColumns(uiElements, layout, resultedGroup); } }
/// <summary> /// Constructor. /// </summary> /// <param name="layout">Layout.</param> public EasyLayoutPositioner(EasyLayout layout) { Layout = layout; }