From 8a3e761896118d2163ca8e2f51ffe137423a2d79 Mon Sep 17 00:00:00 2001 From: codeimp Date: Wed, 10 Sep 2008 12:44:38 +0000 Subject: [PATCH] each basic mode now takes care of converting the current selection as best as possible for that mode --- .../BuilderModes/ClassicModes/LinedefsMode.cs | 26 ++++-------- .../BuilderModes/ClassicModes/SectorsMode.cs | 42 +++++++++++-------- .../BuilderModes/ClassicModes/ThingsMode.cs | 8 ++++ .../BuilderModes/ClassicModes/VerticesMode.cs | 31 +++++++------- 4 files changed, 56 insertions(+), 51 deletions(-) diff --git a/Source/BuilderModes/ClassicModes/LinedefsMode.cs b/Source/BuilderModes/ClassicModes/LinedefsMode.cs index 935e48d2..8aeb77f3 100644 --- a/Source/BuilderModes/ClassicModes/LinedefsMode.cs +++ b/Source/BuilderModes/ClassicModes/LinedefsMode.cs @@ -106,28 +106,20 @@ namespace CodeImp.DoomBuilder.BuilderModes { base.OnEngage(); renderer.SetPresentation(Presentation.Standard); + + // Convert geometry selection to linedefs selection + General.Map.Map.ClearAllMarks(); + General.Map.Map.MarkSelectedVertices(true, true); + ICollection lines = General.Map.Map.LinedefsFromMarkedVertices(false, true, false); + foreach(Linedef l in lines) l.Selected = true; + General.Map.Map.ClearSelectedSectors(); + General.Map.Map.ClearSelectedVertices(); } - + // Mode disengages public override void OnDisengage() { base.OnDisengage(); - - // Check which mode we are switching to - if(General.Map.NewMode is VerticesMode) - { - // Convert selection to vertices - - // Clear selected linedefs - General.Map.Map.ClearSelectedLinedefs(); - } - else if(General.Map.NewMode is SectorsMode) - { - // Convert selection to sectors - - // Clear selected linedefs - General.Map.Map.ClearSelectedLinedefs(); - } // Hide highlight info General.Interface.HideInfo(); diff --git a/Source/BuilderModes/ClassicModes/SectorsMode.cs b/Source/BuilderModes/ClassicModes/SectorsMode.cs index 1f675204..698e3bf4 100644 --- a/Source/BuilderModes/ClassicModes/SectorsMode.cs +++ b/Source/BuilderModes/ClassicModes/SectorsMode.cs @@ -165,28 +165,36 @@ namespace CodeImp.DoomBuilder.BuilderModes { base.OnEngage(); renderer.SetPresentation(Presentation.Standard); - } + // Convert geometry selection to sectors only + General.Map.Map.ClearAllMarks(); + General.Map.Map.MarkSelectedVertices(true, true); + ICollection lines = General.Map.Map.LinedefsFromMarkedVertices(false, true, false); + foreach(Linedef l in lines) l.Selected = true; + General.Map.Map.ClearMarkedSectors(true); + foreach(Linedef l in General.Map.Map.Linedefs) + { + if(!l.Selected) + { + if(l.Front != null) l.Front.Sector.Marked = false; + if(l.Back != null) l.Back.Sector.Marked = false; + } + } + General.Map.Map.ClearAllSelected(); + foreach(Sector s in General.Map.Map.Sectors) + { + if(s.Marked) + { + s.Selected = true; + foreach(Sidedef sd in s.Sidedefs) sd.Line.Selected = true; + } + } + } + // Mode disengages public override void OnDisengage() { base.OnDisengage(); - - // Check which mode we are switching to - if(General.Map.NewMode is VerticesMode) - { - // Convert selection to vertices - - // Clear selected sectors - General.Map.Map.ClearSelectedSectors(); - } - else if(General.Map.NewMode is LinedefsMode) - { - // Convert selection to linedefs - - // Clear selected sectors - General.Map.Map.ClearSelectedSectors(); - } // Hide highlight info General.Interface.HideInfo(); diff --git a/Source/BuilderModes/ClassicModes/ThingsMode.cs b/Source/BuilderModes/ClassicModes/ThingsMode.cs index 4ed08c2e..83e8661c 100644 --- a/Source/BuilderModes/ClassicModes/ThingsMode.cs +++ b/Source/BuilderModes/ClassicModes/ThingsMode.cs @@ -106,6 +106,14 @@ namespace CodeImp.DoomBuilder.BuilderModes { base.OnEngage(); renderer.SetPresentation(Presentation.Things); + + // Convert geometry selection to linedefs selection + General.Map.Map.ClearAllMarks(); + General.Map.Map.MarkSelectedVertices(true, true); + ICollection lines = General.Map.Map.LinedefsFromMarkedVertices(false, true, false); + foreach(Linedef l in lines) l.Selected = true; + General.Map.Map.ClearSelectedSectors(); + General.Map.Map.ClearSelectedVertices(); } // Mode disengages diff --git a/Source/BuilderModes/ClassicModes/VerticesMode.cs b/Source/BuilderModes/ClassicModes/VerticesMode.cs index a1a486c9..ff1966cc 100644 --- a/Source/BuilderModes/ClassicModes/VerticesMode.cs +++ b/Source/BuilderModes/ClassicModes/VerticesMode.cs @@ -101,31 +101,28 @@ namespace CodeImp.DoomBuilder.BuilderModes // Mode engages public override void OnEngage() { + ICollection verts; + base.OnEngage(); renderer.SetPresentation(Presentation.Standard); + + // Convert geometry selection to vertices only + General.Map.Map.ClearAllMarks(); + General.Map.Map.MarkSelectedLinedefs(true, true); + General.Map.Map.MarkSelectedSectors(true, true); + verts = General.Map.Map.GetVerticesFromLinesMarks(true); + foreach(Vertex v in verts) v.Selected = true; + verts = General.Map.Map.GetVerticesFromSectorsMarks(true); + foreach(Vertex v in verts) v.Selected = true; + General.Map.Map.ClearSelectedSectors(); + General.Map.Map.ClearSelectedLinedefs(); } // Mode disengages public override void OnDisengage() { base.OnDisengage(); - - // Check which mode we are switching to - if(General.Map.NewMode is LinedefsMode) - { - // Convert selection to linedefs - - // Clear selected vertices - General.Map.Map.ClearSelectedVertices(); - } - else if(General.Map.NewMode is SectorsMode) - { - // Convert selection to sectors - - // Clear selected vertices - General.Map.Map.ClearSelectedVertices(); - } - + // Hide highlight info General.Interface.HideInfo(); }