diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index fa3682716c5e6e687117edece98f170ef2b62395..5dcd4cb240811fcf1696ebc41ba0315cbfd1ec91 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -986,7 +986,8 @@ namespace CodeImp.DoomBuilder.BuilderModes base.OnDisengage(); //mxd - if(BuilderPlug.Me.SyncSelection ? !General.Interface.ShiftState : General.Interface.ShiftState) { + if(BuilderPlug.Me.SyncSelection ? !General.Interface.ShiftState : General.Interface.ShiftState) + { //clear previously selected stuff General.Map.Map.ClearAllSelected(); @@ -995,42 +996,41 @@ namespace CodeImp.DoomBuilder.BuilderModes List<Linedef> selectedLines = new List<Linedef>(); List<Vertex> selectedVertices = new List<Vertex>(); - foreach(IVisualEventReceiver obj in selectedobjects) { - if(obj is BaseVisualThing) { + foreach(IVisualEventReceiver obj in selectedobjects) + { + if(obj is BaseVisualThing) + { ((BaseVisualThing)obj).Thing.Selected = true; - } else if(obj is VisualFloor || obj is VisualCeiling) { + } + else if(obj is VisualFloor || obj is VisualCeiling) + { VisualGeometry vg = obj as VisualGeometry; - if(vg.Sector != null && vg.Sector.Sector != null && !selectedSectors.Contains(vg.Sector.Sector)) { + if(vg.Sector != null && vg.Sector.Sector != null && !selectedSectors.Contains(vg.Sector.Sector)) selectedSectors.Add(vg.Sector.Sector); - - foreach(Sidedef s in vg.Sector.Sector.Sidedefs){ - if(!selectedLines.Contains(s.Line)) - selectedLines.Add(s.Line); - } - } - } else if(obj is VisualLower || obj is VisualUpper || obj is VisualMiddleDouble || obj is VisualMiddleSingle || obj is VisualMiddle3D) { + } + else if(obj is VisualLower || obj is VisualUpper || obj is VisualMiddleDouble + || obj is VisualMiddleSingle || obj is VisualMiddle3D) + { VisualGeometry vg = obj as VisualGeometry; if(vg.Sidedef != null && !selectedLines.Contains(vg.Sidedef.Line)) selectedLines.Add(vg.Sidedef.Line); } + else if (obj is VisualVertex) + { + VisualVertex v = obj as VisualVertex; + if(!selectedVertices.Contains(v.Vertex)) selectedVertices.Add(v.Vertex); + } } - foreach(Sector s in selectedSectors) - s.Selected = true; + foreach(Sector s in selectedSectors) s.Selected = true; + foreach(Linedef l in selectedLines) l.Selected = true; - foreach(Linedef l in selectedLines) { - l.Selected = true; - - if(!selectedVertices.Contains(l.Start)) - selectedVertices.Add(l.Start); - if(!selectedVertices.Contains(l.End)) - selectedVertices.Add(l.End); + if (selectedSectors.Count == 0) + { + foreach (Vertex v in selectedVertices) v.Selected = true; } - - foreach(Vertex v in selectedVertices) - v.Selected = true; } copyBuffer.Clear(); //mxd