示例#1
0
 // 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;
 }
示例#2
0
        // 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;
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="layout">Layout.</param>
 public EasyLayoutResizer(EasyLayout layout)
 {
     Layout = layout;
 }
示例#5
0
        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;
                }
            }
        }
示例#6
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);
                }
            }
        }
示例#7
0
        /// <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);
            }
        }
示例#8
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);
        }
示例#9
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);
        }
示例#10
0
        /// <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);
            }
        }
示例#11
0
        // 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++;
            }
        }
示例#12
0
        // 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)));
        }
示例#13
0
 // 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);
 }
示例#14
0
        /// <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);
        }
示例#15
0
 /// <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);
     }
 }
示例#16
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="layout">Layout.</param>
 public EasyLayoutPositioner(EasyLayout layout)
 {
     Layout = layout;
 }