From 8c4ac371fd1563d1b4559c7e604f5fb6cd0bad8e Mon Sep 17 00:00:00 2001 From: spherallic Date: Wed, 26 Apr 2023 00:36:11 +0200 Subject: [PATCH] Revert "Linedefs Mode, Sectors Mode, Vertices Mode, Sound Environment Mode, Sound Propagation Mode: slightly improved performance when moving the mouse" --- .../BuilderModes/ClassicModes/LinedefsMode.cs | 46 +++----------- .../BuilderModes/ClassicModes/SectorsMode.cs | 14 +---- .../BuilderModes/ClassicModes/VerticesMode.cs | 61 ++----------------- 3 files changed, 12 insertions(+), 109 deletions(-) diff --git a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs index ec80557..83094b5 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs @@ -70,9 +70,6 @@ namespace CodeImp.DoomBuilder.BuilderModes private bool editpressed; private bool selectionfromhighlight; //mxd - // The blockmap makes is used to make finding lines faster - BlockMap blockmap; - // Stores sizes of the text for text labels so that they only have to be computed once private Dictionary textlabelsizecache; @@ -584,20 +581,9 @@ namespace CodeImp.DoomBuilder.BuilderModes labels.Add(linedef, l); } } - - /// - /// Create a blockmap containing linedefs. This is used to speed up determining the closest line - /// to the mouse cursor - /// - private void CreateBlockmap() - { - RectangleF area = MapSet.CreateArea(General.Map.Map.Vertices); - blockmap = new BlockMap(area); - blockmap.AddLinedefsSet(General.Map.Map.Linedefs); - } - + #endregion - + #region ================== Events public override void OnHelp() @@ -649,9 +635,6 @@ namespace CodeImp.DoomBuilder.BuilderModes BuilderPlug.Me.MenusForm.SyncronizeThingEditButton.ToolTipText = "Synchronized Things Editing" + Environment.NewLine + BuilderPlug.Me.MenusForm.SyncronizeThingEditLinedefsItem.ToolTipText; General.Interface.EndToolbarUpdate(); //mxd - // Create the blockmap - CreateBlockmap(); - // Convert geometry selection to linedefs selection General.Map.Map.ConvertSelection(SelectionType.Linedefs); UpdateSelectionInfo(); //mxd @@ -992,9 +975,6 @@ namespace CodeImp.DoomBuilder.BuilderModes { base.OnUndoEnd(); - // Recreate the blockmap to not include the potentially un-done lines anymore - CreateBlockmap(); - // Select changed map elements if (BuilderPlug.Me.SelectChangedafterUndoRedo) { @@ -1012,9 +992,6 @@ namespace CodeImp.DoomBuilder.BuilderModes { base.OnRedoEnd(); - // Recreate the blockmap to include the potentially re-done linedefs again - CreateBlockmap(); - // Select changed map elements if (BuilderPlug.Me.SelectChangedafterUndoRedo) { @@ -1048,7 +1025,7 @@ namespace CodeImp.DoomBuilder.BuilderModes else if(paintselectpressed && !editpressed && !selecting) //mxd. Drag-select { // Find the nearest thing within highlight range - Linedef l = MapSet.NearestLinedefRange(blockmap, mousemappos, BuilderPlug.Me.HighlightRange / renderer.Scale); + Linedef l = General.Map.Map.NearestLinedefRange(mousemappos, BuilderPlug.Me.HighlightRange / renderer.Scale); if(l != null) { @@ -1080,11 +1057,11 @@ namespace CodeImp.DoomBuilder.BuilderModes else if(e.Button == MouseButtons.None) // Not holding any buttons? { // Find the nearest linedef within highlight range - Linedef l = MapSet.NearestLinedefRange(blockmap, mousemappos, BuilderPlug.Me.HighlightRange / renderer.Scale); + Linedef l = General.Map.Map.NearestLinedefRange(mousemappos, BuilderPlug.Me.HighlightRange / renderer.Scale); //mxd. Render insert vertex preview - Linedef sl = MapSet.NearestLinedefRange(blockmap, mousemappos, BuilderPlug.Me.StitchRange / renderer.Scale); - if (sl != null) + Linedef sl = General.Map.Map.NearestLinedefRange(mousemappos, BuilderPlug.Me.StitchRange / renderer.Scale); + if(sl != null) { bool snaptogrid = General.Interface.ShiftState ^ General.Interface.SnapToGrid; bool snaptonearest = General.Interface.CtrlState ^ General.Interface.AutoMerge; @@ -1579,9 +1556,6 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.IsChanged = true; General.Map.Map.Update(); - // Recreate the blockmap since it shouldn't include the deleted linedefs anymore - CreateBlockmap(); - // Redraw screen SetupSectorLabels(); //mxd UpdateSelectionInfo(); //mxd @@ -1668,10 +1642,7 @@ namespace CodeImp.DoomBuilder.BuilderModes // Update cache values General.Map.IsChanged = true; General.Map.Map.Update(); - - // Recreate the blockmap since it shouldn't include the dissolved linedefs anymore - CreateBlockmap(); - + // Redraw screen SetupSectorLabels(); //mxd UpdateSelectionInfo(); //mxd @@ -1892,9 +1863,6 @@ namespace CodeImp.DoomBuilder.BuilderModes //BuilderPlug.Me.AdjustSplitCoordinates(ld, sld); } - // Create the blockmap - CreateBlockmap(); - // Update cache values General.Map.IsChanged = true; General.Map.Map.Update(); diff --git a/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs index 9ad6d0a..d8b180b 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs @@ -75,7 +75,6 @@ namespace CodeImp.DoomBuilder.BuilderModes // The blockmap makes synchronized editing faster BlockMap blockmap; - bool addedlinedefstoblockmap; // Stores sizes of the text for text labels so that they only have to be computed once private Dictionary textlabelsizecache; @@ -754,10 +753,6 @@ namespace CodeImp.DoomBuilder.BuilderModes blockmap = new BlockMap(area); blockmap.AddSectorsSet(General.Map.Map.Sectors); blockmap.AddThingsSet(General.Map.Map.Things); - - // Don't add linedefs here. They are only needed for paint select, so let's save some - // time (and add them when paint select is used t he first time) - addedlinedefstoblockmap = false; } #endregion @@ -1165,15 +1160,8 @@ namespace CodeImp.DoomBuilder.BuilderModes } else if(paintselectpressed && !editpressed && !selecting) //mxd. Drag-select { - // If linedefs were not added to the blockmap yet add them here - if (!addedlinedefstoblockmap) - { - blockmap.AddLinedefsSet(General.Map.Map.Linedefs); - addedlinedefstoblockmap = true; - } - // Find the nearest linedef within highlight range - Linedef l = MapSet.NearestLinedefRange(blockmap, mousemappos, BuilderPlug.Me.HighlightRange / renderer.Scale); + Linedef l = General.Map.Map.NearestLinedefRange(mousemappos, BuilderPlug.Me.HighlightRange / renderer.Scale); Sector s = null; if(l != null) diff --git a/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs b/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs index 617e141..21541e6 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs @@ -56,9 +56,6 @@ namespace CodeImp.DoomBuilder.BuilderModes private bool editpressed; private bool selectionfromhighlight; //mxd - // The blockmap makes is used to make finding lines faster - BlockMap blockmap; - #endregion #region ================== Properties @@ -73,17 +70,6 @@ namespace CodeImp.DoomBuilder.BuilderModes #region ================== Methods - /// - /// Create a blockmap containing linedefs. This is used to speed up determining the closest line - /// to the mouse cursor - /// - private void CreateBlockmap() - { - RectangleF area = MapSet.CreateArea(General.Map.Map.Vertices); - blockmap = new BlockMap(area); - blockmap.AddLinedefsSet(General.Map.Map.Linedefs); - } - public override void OnHelp() { General.ShowHelp("e_vertices.html"); @@ -121,9 +107,6 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.AddButton(BuilderPlug.Me.MenusForm.PerpendicularLinedef); //JBR General.Interface.AddButton(BuilderPlug.Me.MenusForm.ParallelLinedef); //JBR - // Create the blockmap - CreateBlockmap(); - // Convert geometry selection to vertices only General.Map.Map.ConvertSelection(SelectionType.Vertices); UpdateSelectionInfo(); //mxd @@ -321,7 +304,7 @@ namespace CodeImp.DoomBuilder.BuilderModes else if(!selecting) //mxd. We don't want to do this stuff while multiselecting { // Find the nearest linedef within highlight range - Linedef l = MapSet.NearestLinedefRange(blockmap, mousemappos, BuilderPlug.Me.SplitLinedefsRange / renderer.Scale); + Linedef l = General.Map.Map.NearestLinedefRange(mousemappos, BuilderPlug.Me.SplitLinedefsRange / renderer.Scale); if(l != null) { // Create undo @@ -372,9 +355,6 @@ namespace CodeImp.DoomBuilder.BuilderModes } //BuilderPlug.Me.AdjustSplitCoordinates(l, sld); - // Create the blockmap - CreateBlockmap(); - // Update General.Map.Map.Update(); @@ -501,7 +481,7 @@ namespace CodeImp.DoomBuilder.BuilderModes else if(e.Button == MouseButtons.None) // Not holding any buttons? { //mxd. Render insert vertex preview - Linedef l = MapSet.NearestLinedefRange(blockmap, mousemappos, BuilderPlug.Me.SplitLinedefsRange / renderer.Scale); + Linedef l = General.Map.Map.NearestLinedefRange(mousemappos, BuilderPlug.Me.SplitLinedefsRange / renderer.Scale); if(l != null) { @@ -575,36 +555,6 @@ namespace CodeImp.DoomBuilder.BuilderModes Highlight(null); } - public override void OnUndoEnd() - { - base.OnUndoEnd(); - - // Recreate the blockmap - CreateBlockmap(); - - // Select changed map elements - if (BuilderPlug.Me.SelectChangedafterUndoRedo) - { - General.Map.Map.SelectMarkedGeometry(true, true); - General.Map.Map.ConvertSelection(SelectionType.Vertices); - } - } - - public override void OnRedoEnd() - { - base.OnRedoEnd(); - - // Recreate the blockmap - CreateBlockmap(); - - // Select changed map elements - if (BuilderPlug.Me.SelectChangedafterUndoRedo) - { - General.Map.Map.SelectMarkedGeometry(true, true); - General.Map.Map.ConvertSelection(SelectionType.Vertices); - } - } - //mxd protected override void BeginViewPan() { @@ -901,7 +851,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.UndoRedo.CreateUndo("Insert vertex"); // Snap to geometry? - Linedef l = MapSet.NearestLinedefRange(blockmap, mousemappos, BuilderPlug.Me.SplitLinedefsRange / renderer.Scale); + Linedef l = General.Map.Map.NearestLinedefRange(mousemappos, BuilderPlug.Me.SplitLinedefsRange / renderer.Scale); if(snaptonearest && (l != null)) { // Snip to grid also? @@ -962,7 +912,7 @@ namespace CodeImp.DoomBuilder.BuilderModes if(snaptonearest) { //mxd. Check if snapped vertex is still on top of a linedef - l = MapSet.NearestLinedefRange(blockmap, v.Position, BuilderPlug.Me.SplitLinedefsRange / renderer.Scale); + l = General.Map.Map.NearestLinedefRange(v.Position, BuilderPlug.Me.SplitLinedefsRange / renderer.Scale); if(l != null) { @@ -989,9 +939,6 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.DisplayStatus(StatusType.Action, "Inserted a vertex."); } - // Create the blockmap - CreateBlockmap(); - // Update General.Map.Map.Update();