UnityEditor.SplitterState.DoSplitter C# (CSharp) Method

DoSplitter() public method

public DoSplitter ( int i1, int i2, int diff ) : void
i1 int
i2 int
diff int
return void
        public void DoSplitter(int i1, int i2, int diff)
        {
            int num = this.realSizes[i1];
            int num2 = this.realSizes[i2];
            int num3 = this.minSizes[i1];
            int num4 = this.minSizes[i2];
            int num5 = this.maxSizes[i1];
            int num6 = this.maxSizes[i2];
            bool flag = false;
            if (num3 == 0)
            {
                num3 = 0x10;
            }
            if (num4 == 0)
            {
                num4 = 0x10;
            }
            if ((num + diff) < num3)
            {
                diff -= num3 - num;
                this.realSizes[i2] += this.realSizes[i1] - num3;
                this.realSizes[i1] = num3;
                if (i1 != 0)
                {
                    this.DoSplitter(i1 - 1, i2, diff);
                }
                else
                {
                    this.splitterInitialOffset -= diff;
                }
                flag = true;
            }
            else if ((num2 - diff) < num4)
            {
                diff -= num2 - num4;
                this.realSizes[i1] += this.realSizes[i2] - num4;
                this.realSizes[i2] = num4;
                if (i2 != (this.realSizes.Length - 1))
                {
                    this.DoSplitter(i1, i2 + 1, diff);
                }
                else
                {
                    this.splitterInitialOffset -= diff;
                }
                flag = true;
            }
            if (!flag)
            {
                if ((num5 != 0) && ((num + diff) > num5))
                {
                    diff -= this.realSizes[i1] - num5;
                    this.realSizes[i2] += this.realSizes[i1] - num5;
                    this.realSizes[i1] = num5;
                    if (i1 != 0)
                    {
                        this.DoSplitter(i1 - 1, i2, diff);
                    }
                    else
                    {
                        this.splitterInitialOffset -= diff;
                    }
                    flag = true;
                }
                else if ((num6 != 0) && ((num2 - diff) > num6))
                {
                    diff -= num2 - num6;
                    this.realSizes[i1] += this.realSizes[i2] - num6;
                    this.realSizes[i2] = num6;
                    if (i2 != (this.realSizes.Length - 1))
                    {
                        this.DoSplitter(i1, i2 + 1, diff);
                    }
                    else
                    {
                        this.splitterInitialOffset -= diff;
                    }
                    flag = true;
                }
            }
            if (!flag)
            {
                this.realSizes[i1] += diff;
                this.realSizes[i2] -= diff;
            }
        }

Usage Example

示例#1
0
        internal override void Reflow()
        {
            SetupSplitter();

            for (int k = 0; k < children.Length - 1; k++)
            {
                splitState.DoSplitter(k, k + 1, 0);
            }
            splitState.RelativeToRealSizes(vertical ? GUIUtility.RoundToPixelGrid(position.height) : GUIUtility.RoundToPixelGrid(position.width));
            SetupRectsFromSplitter();
        }
All Usage Examples Of UnityEditor.SplitterState::DoSplitter