Flood.Editor.Client.GUI.Container.MergeSubContainers C# (CSharp) Method

MergeSubContainers() private static method

private static MergeSubContainers ( Container parentContainer ) : void
parentContainer Container
return void
        private static void MergeSubContainers(Container parentContainer)
        {
            var parentContainerSize = (parentContainer.IsHorizontal)? parentContainer.Width : parentContainer.Height;

            for (var parentPIndex = parentContainer.Panels.Count - 1; parentPIndex >= 0  ; parentPIndex--)
            {
                var childContainer = parentContainer.Panels[parentPIndex] as Container;
                if (childContainer == null ||
                    childContainer.IsHorizontal != parentContainer.IsHorizontal)
                    continue;

                for (var childPIndex = childContainer.Panels.Count - 1; childPIndex > 0  ; childPIndex--)
                {
                    var childPanel = childContainer.Panels[childPIndex];
                    parentContainer.InsertPanel(childPanel, childContainer, false);

                    var childPanelSize = (childContainer.IsHorizontal)? childPanel.Width : childPanel.Height;

                    var rightRPos = 1.0f;
                    if(parentContainer.Splitters.Count > parentPIndex + 1)
                        rightRPos = parentContainer.Splitters[parentPIndex + 1].RelativePosition;

                    var right = rightRPos * parentContainerSize;
                    var leftSplitter = parentContainer.Splitters[parentPIndex];
                    leftSplitter.RelativePosition = (right - childPanelSize) / parentContainerSize;
                }

                ReplaceContainerByPaneGroup(childContainer);
            }
            parentContainer.Invalidate();
        }