UnityEngine.GUILayoutGroup.CalcWidth C# (CSharp) Method

CalcWidth() public method

public CalcWidth ( ) : void
return void
        public override void CalcWidth()
        {
            if (this.entries.Count == 0)
            {
                base.maxWidth = base.minWidth = base.style.padding.horizontal;
            }
            else
            {
                int b = 0;
                int right = 0;
                this.m_ChildMinWidth = 0f;
                this.m_ChildMaxWidth = 0f;
                this.m_StretchableCountX = 0;
                bool flag = true;
                if (this.isVertical)
                {
                    foreach (GUILayoutEntry entry in this.entries)
                    {
                        entry.CalcWidth();
                        RectOffset margin = entry.margin;
                        if (entry.style != GUILayoutUtility.spaceStyle)
                        {
                            if (!flag)
                            {
                                b = Mathf.Min(margin.left, b);
                                right = Mathf.Min(margin.right, right);
                            }
                            else
                            {
                                b = margin.left;
                                right = margin.right;
                                flag = false;
                            }
                            this.m_ChildMinWidth = Mathf.Max(entry.minWidth + margin.horizontal, this.m_ChildMinWidth);
                            this.m_ChildMaxWidth = Mathf.Max(entry.maxWidth + margin.horizontal, this.m_ChildMaxWidth);
                        }
                        this.m_StretchableCountX += entry.stretchWidth;
                    }
                    this.m_ChildMinWidth -= b + right;
                    this.m_ChildMaxWidth -= b + right;
                }
                else
                {
                    int num4 = 0;
                    foreach (GUILayoutEntry entry2 in this.entries)
                    {
                        entry2.CalcWidth();
                        RectOffset offset2 = entry2.margin;
                        if (entry2.style != GUILayoutUtility.spaceStyle)
                        {
                            int num5;
                            if (!flag)
                            {
                                num5 = (num4 <= offset2.left) ? offset2.left : num4;
                            }
                            else
                            {
                                num5 = 0;
                                flag = false;
                            }
                            this.m_ChildMinWidth += (entry2.minWidth + this.spacing) + num5;
                            this.m_ChildMaxWidth += (entry2.maxWidth + this.spacing) + num5;
                            num4 = offset2.right;
                            this.m_StretchableCountX += entry2.stretchWidth;
                        }
                        else
                        {
                            this.m_ChildMinWidth += entry2.minWidth;
                            this.m_ChildMaxWidth += entry2.maxWidth;
                            this.m_StretchableCountX += entry2.stretchWidth;
                        }
                    }
                    this.m_ChildMinWidth -= this.spacing;
                    this.m_ChildMaxWidth -= this.spacing;
                    if (this.entries.Count != 0)
                    {
                        b = this.entries[0].margin.left;
                        right = num4;
                    }
                    else
                    {
                        b = right = 0;
                    }
                }
                float num6 = 0f;
                float num7 = 0f;
                if ((base.style != GUIStyle.none) || this.m_UserSpecifiedWidth)
                {
                    num6 = Mathf.Max(base.style.padding.left, b);
                    num7 = Mathf.Max(base.style.padding.right, right);
                }
                else
                {
                    this.m_Margin.left = b;
                    this.m_Margin.right = right;
                    num6 = num7 = 0f;
                }
                base.minWidth = Mathf.Max(base.minWidth, (this.m_ChildMinWidth + num6) + num7);
                if (base.maxWidth == 0f)
                {
                    base.stretchWidth += this.m_StretchableCountX + (!base.style.stretchWidth ? 0 : 1);
                    base.maxWidth = (this.m_ChildMaxWidth + num6) + num7;
                }
                else
                {
                    base.stretchWidth = 0;
                }
                base.maxWidth = Mathf.Max(base.maxWidth, base.minWidth);
                if (base.style.fixedWidth != 0f)
                {
                    base.maxWidth = base.minWidth = base.style.fixedWidth;
                    base.stretchWidth = 0;
                }
            }
        }

Usage Example

コード例 #1
0
        private static void LayoutSingleGroup(GUILayoutGroup i)
        {
            bool flag = !i.isWindow;

            if (flag)
            {
                float minWidth = i.minWidth;
                float maxWidth = i.maxWidth;
                i.CalcWidth();
                i.SetHorizontal(i.rect.x, Mathf.Clamp(i.maxWidth, minWidth, maxWidth));
                float minHeight = i.minHeight;
                float maxHeight = i.maxHeight;
                i.CalcHeight();
                i.SetVertical(i.rect.y, Mathf.Clamp(i.maxHeight, minHeight, maxHeight));
            }
            else
            {
                i.CalcWidth();
                Rect rect = GUILayoutUtility.Internal_GetWindowRect(i.windowID);
                i.SetHorizontal(rect.x, Mathf.Clamp(rect.width, i.minWidth, i.maxWidth));
                i.CalcHeight();
                i.SetVertical(rect.y, Mathf.Clamp(rect.height, i.minHeight, i.maxHeight));
                GUILayoutUtility.Internal_MoveWindow(i.windowID, i.rect);
            }
        }
All Usage Examples Of UnityEngine.GUILayoutGroup::CalcWidth