public override void AddChildControl(UiControl control)
        {
            Vector2 relativePosition = ResolvePosition(control);

            if (!UiControlPositions.ContainsKey(control))
            {
                UiControlPositions.Add(control, relativePosition);
            }

            if (!UiControls.Contains(control))
            {
                UiControls.Add(control);
            }

            ControlManager.Add(control);
        }
        public void AddChildControl(UiControl control, Vector2 position)
        {
            if (!UiControls.Contains(control))
            {
                UiControls.Add(control);
            }

            if (!UiControlPositions.ContainsKey(control))
            {
                UiControlPositions.Add(control, position);

                Vector2 controlPosition = control.Position;
                controlPosition.X = DisplayRectangle.X + position.X;
                controlPosition.Y = DisplayRectangle.Y + position.Y;
                control.Position  = controlPosition;
            }

            ControlManager.Add(control);
        }
        public void AddChildControlAtControl(UiControl newControl, UiControl existingControl, float childX, float atParentX, float childY, float atParentY, Vector2 offset)
        {
            if (!UiControls.Contains(newControl))
            {
                UiControls.Add(newControl);
            }

            if (!UiControlPositions.ContainsKey(newControl))
            {
                Vector2 position = new Vector2();
                position.X = ToRelativeX(newControl.DisplayRectangle, existingControl.DisplayRectangle, childX, atParentX) + offset.X;
                position.Y = ToRelativeY(newControl.DisplayRectangle, existingControl.DisplayRectangle, childY, atParentY) + offset.Y;

                UiControlPositions.Add(newControl, position + UiControlPositions[existingControl]);

                newControl.Position = existingControl.Position + position;
            }

            ControlManager.Add(newControl);
        }