private void FillThreeDFloorPanel(List <ThreeDFloor> threedfloors)
        {
            if (threedfloors.Count > 0)
            {
                // Create a new controller instance for each linedef and set its properties
                foreach (ThreeDFloor tdf in threedfloors.OrderByDescending(o => o.TopHeight).ToList())
                {
                    ThreeDFloorHelperControl ctrl = GetThreeDFloorControl();
                    ctrl.Update(tdf);
                    ctrl.Show();
                }

                no3dfloorspanel.Hide();
            }
            else
            {
                no3dfloorspanel.Show();
            }

            // Hide all unused pool controls
            if (controlpool.Count - threedfloors.Count > 0)
            {
                foreach (ThreeDFloorHelperControl ctrl in controlpool.Skip(threedfloors.Count))
                {
                    ctrl.Used = false;
                    ctrl.Hide();
                }
            }
        }
        public void DuplicateThreeDFloor(ThreeDFloorHelperControl ctrl)
        {
            ThreeDFloorHelperControl dup = GetThreeDFloorControl();

            dup.Update(ctrl);
            dup.Show();

            threeDFloorPanel.ScrollControlIntoView(dup);
        }
        public void DetachThreeDFloor(ThreeDFloorHelperControl ctrl)
        {
            ThreeDFloorHelperControl dup = GetThreeDFloorControl();

            dup.Update(ctrl);

            for (int i = 0; i < ctrl.checkedListBoxSectors.Items.Count; i++)
            {
                if (ctrl.checkedListBoxSectors.GetItemCheckState(i) == CheckState.Checked)
                {
                    ctrl.checkedListBoxSectors.SetItemChecked(i, false);
                }
            }

            dup.Show();

            threeDFloorPanel.ScrollControlIntoView(dup);
        }