public void RefreshSelectedGMeshes()
        {
            const bool check_for_decal_issues = false;

            m_level.RefreshSideGMeshes(m_level.GetSelectedSide(), check_for_decal_issues);
            gl_panel.BuildLevelGMesh();
        }
        public void UpdateEntityLabels()
        {
            Editor editor = ActiveDocument;
            Level  level  = ActiveLevel;

            Entity e = level.GetSelectedEntity();

            if (e != null)
            {
                label_entity_type_value.Text = e.Type.ToString();
                label_entity_guid_value.Text = e.num + ": " + e.guid.ToPrettyString();

                // Update the complex labels, if necessary
                if (e.guid != editor.m_entity_prev_guid)
                {
                    ClearEntityLinkLabels();
                    prop_grid_entity.SelectedObject = e.GetEntityProps();
                    AddEntityLinkLabels(e);

                    comboBox_entity_subtype.Items.Clear();
                    foreach (string s in e.SubTypeNames())
                    {
                        if (s != "NUM")
                        {
                            comboBox_entity_subtype.Items.Add(Editor.CleanupName(s));
                        }
                    }
                    m_ignore_combobox_entity_sub_type_changed = true;
                    comboBox_entity_subtype.SelectedItem      = Editor.CleanupName(e.SubTypeName());
                    m_ignore_combobox_entity_sub_type_changed = false;

                    comboBox_entity_subtype.Enabled = true;

                    editor.m_entity_prev_guid = e.guid;
                }
            }
            else
            {
                label_entity_type_value.Text = "";
                label_entity_guid_value.Text = "";

                // Update the complex labels, if necessary
                if (editor.m_entity_prev_guid != Guid.Empty)
                {
                    prop_grid_entity.SelectedObject = null;
                    ClearEntityLinkLabels();

                    m_ignore_combobox_entity_sub_type_changed = true;
                    comboBox_entity_subtype.SelectedItem      = null;
                    m_ignore_combobox_entity_sub_type_changed = false;
                    comboBox_entity_subtype.Enabled           = false;

                    editor.m_entity_prev_guid = Guid.Empty;
                }
            }

            //Enable/disable place entity buttons based on selected segment/side, with special considerations for doors
            button_place_entity_segment.Enabled = ((level.selected_segment > -1) && (comboBox_entity_type.SelectedIndex != (int)EntityType.DOOR));
            button_place_entity_side.Enabled    = ((level.selected_segment > -1) && (level.selected_side > -1) && (level.GetSelectedSide().Door == -1));

            //Enable/disable buttons that depend on selected entity
            label_entity_type.Enabled                       = label_entity_type_value.Enabled = label_entity_guid.Enabled = label_entity_guid_value.Enabled =
                comboBox_entity_subtype.Enabled             =
                    button_entity_reset_rotation.Enabled    = button_entity_face_selected_side.Enabled =
                        button_entity_align_side.Enabled    = button_entity_move.Enabled =
                            button_entity_mark_type.Enabled = button_entity_mark_subtype.Enabled = (e != null);

            //Enable move to segment if there's a selected segment, a selected entity, and the entity isn't a door
            button_entity_move_segment.Enabled = ((level.selected_segment > -1) && (e != null) && (e.Type != EntityType.DOOR));

            //Enable move to side if there's a selected segment, a selected side, a selected entity and, if the entity is a door, there's not already a door in the side (unless the door is this door, in which case we allow move to side for alignment)
            button_entity_move_side.Enabled = ((level.selected_segment > -1) && (level.selected_side > -1) && (e != null) && (((level.GetSelectedSide().Door == -1) || (e.Type != EntityType.DOOR)) || (level.GetSelectedSide().Door == level.GetSelectedEntity().num)));

            //Enable/diable buttons that depend on marked
            List <Entity> marked_entities = level.GetMarkedEntities();

            button_entity_marked_reset_rotation.Enabled = button_entity_marked_face_selected_side.Enabled = button_entity_duplicate.Enabled = (marked_entities.Count > 0);

            //Enable/disable buttons that depend on selected AND marked
            bool enabled = false;

            if (e != null)                              //We have a selected entity; see if there are any marked of the same type
            {
                foreach (Entity entity in level.GetMarkedEntities())
                {
                    if ((entity != e) && (entity.Type == e.Type))
                    {
                        enabled = true;
                        break;
                    }
                }
            }
            button_entity_copy_to_marked.Enabled = button_entity_copy_subtype.Enabled = enabled;

            if (e != null)
            {
                string team = "ALL";
                if (e.m_multiplayer_team_association_mask == 1)
                {
                    team = "A";
                }
                else if (e.m_multiplayer_team_association_mask == 2)
                {
                    team = "B";
                }
                label_team.Text = "MP Team: " + team;
            }
            else
            {
                label_team.Text = "MP Team: -";
            }
        }