UnityEngine.GUILayoutGroup.SetHorizontal C# (CSharp) Method

SetHorizontal() public method

public SetHorizontal ( float x, float width ) : void
x float
width float
return void
        public override void SetHorizontal(float x, float width)
        {
            base.SetHorizontal(x, width);
            if (this.resetCoords)
            {
                x = 0f;
            }
            RectOffset padding = base.style.padding;
            if (this.isVertical)
            {
                if (base.style != GUIStyle.none)
                {
                    foreach (GUILayoutEntry entry in this.entries)
                    {
                        float num = Mathf.Max(entry.margin.left, padding.left);
                        float num2 = x + num;
                        float num3 = (width - Mathf.Max(entry.margin.right, padding.right)) - num;
                        if (entry.stretchWidth != 0)
                        {
                            entry.SetHorizontal(num2, num3);
                        }
                        else
                        {
                            entry.SetHorizontal(num2, Mathf.Clamp(num3, entry.minWidth, entry.maxWidth));
                        }
                    }
                }
                else
                {
                    float num4 = x - this.margin.left;
                    float num5 = width + this.margin.horizontal;
                    foreach (GUILayoutEntry entry2 in this.entries)
                    {
                        if (entry2.stretchWidth != 0)
                        {
                            entry2.SetHorizontal(num4 + entry2.margin.left, num5 - entry2.margin.horizontal);
                        }
                        else
                        {
                            entry2.SetHorizontal(num4 + entry2.margin.left, Mathf.Clamp(num5 - entry2.margin.horizontal, entry2.minWidth, entry2.maxWidth));
                        }
                    }
                }
            }
            else
            {
                if (base.style != GUIStyle.none)
                {
                    float left = padding.left;
                    float right = padding.right;
                    if (this.entries.Count != 0)
                    {
                        left = Mathf.Max(left, (float) this.entries[0].margin.left);
                        right = Mathf.Max(right, (float) this.entries[this.entries.Count - 1].margin.right);
                    }
                    x += left;
                    width -= right + left;
                }
                float num8 = width - (this.spacing * (this.entries.Count - 1));
                float t = 0f;
                if (this.m_ChildMinWidth != this.m_ChildMaxWidth)
                {
                    t = Mathf.Clamp((float) ((num8 - this.m_ChildMinWidth) / (this.m_ChildMaxWidth - this.m_ChildMinWidth)), (float) 0f, (float) 1f);
                }
                float num10 = 0f;
                if ((num8 > this.m_ChildMaxWidth) && (this.m_StretchableCountX > 0))
                {
                    num10 = (num8 - this.m_ChildMaxWidth) / ((float) this.m_StretchableCountX);
                }
                int num11 = 0;
                bool flag = true;
                foreach (GUILayoutEntry entry3 in this.entries)
                {
                    float f = Mathf.Lerp(entry3.minWidth, entry3.maxWidth, t) + (num10 * entry3.stretchWidth);
                    if (entry3.style != GUILayoutUtility.spaceStyle)
                    {
                        int num13 = entry3.margin.left;
                        if (flag)
                        {
                            num13 = 0;
                            flag = false;
                        }
                        int num14 = (num11 <= num13) ? num13 : num11;
                        x += num14;
                        num11 = entry3.margin.right;
                    }
                    entry3.SetHorizontal(Mathf.Round(x), Mathf.Round(f));
                    x += f + this.spacing;
                }
            }
        }

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::SetHorizontal