diff --git a/Source/Core/Editing/UndoManager.cs b/Source/Core/Editing/UndoManager.cs index a6acad1..1549408 100644 --- a/Source/Core/Editing/UndoManager.cs +++ b/Source/Core/Editing/UndoManager.cs @@ -718,24 +718,19 @@ namespace CodeImp.DoomBuilder.Editing //General.MainWindow.RedrawDisplay(); // (Re)set hacky flat alignment - bool alignmentupdate = false; foreach (Linedef l in General.Map.Map.Linedefs) if (l.Marked && (l.IsFlatAlignment || l.Action == 0)) { l.Front.Sector.UpdateFloorSurface(); l.Front.Sector.UpdateCeilingSurface(); linedeftags.Add(l.Tag); - alignmentupdate = true; } - if (alignmentupdate) - { - foreach (Sector s in General.Map.Map.Sectors) - if (linedeftags.Contains(s.Tag)) - { - s.UpdateFloorSurface(); - s.UpdateCeilingSurface(); - } - } + foreach (Sector s in General.Map.Map.Sectors) + if (linedeftags.Contains(s.Tag) || s.Marked) + { + s.UpdateFloorSurface(); + s.UpdateCeilingSurface(); + } // Map changed! General.Map.IsChanged = true; @@ -882,24 +877,19 @@ namespace CodeImp.DoomBuilder.Editing //General.MainWindow.RedrawDisplay(); // (Re)set hacky flat alignment - bool alignmentupdate = false; foreach (Linedef l in General.Map.Map.Linedefs) if (l.Marked && (l.IsFlatAlignment || l.Action == 0)) { l.Front.Sector.UpdateFloorSurface(); l.Front.Sector.UpdateCeilingSurface(); linedeftags.Add(l.Tag); - alignmentupdate = true; } - if (alignmentupdate) - { - foreach (Sector s in General.Map.Map.Sectors) - if (linedeftags.Contains(s.Tag)) - { - s.UpdateFloorSurface(); - s.UpdateCeilingSurface(); - } - } + foreach (Sector s in General.Map.Map.Sectors) + if (linedeftags.Contains(s.Tag) || s.Marked) + { + s.UpdateFloorSurface(); + s.UpdateCeilingSurface(); + } // Map changed! General.Map.IsChanged = true; diff --git a/Source/Core/Windows/SectorEditForm.cs b/Source/Core/Windows/SectorEditForm.cs index c7049e0..4743159 100644 --- a/Source/Core/Windows/SectorEditForm.cs +++ b/Source/Core/Windows/SectorEditForm.cs @@ -324,6 +324,10 @@ namespace CodeImp.DoomBuilder.Windows // Action s.Tag = General.Clamp(tagSelector.GetSmartTag(s.Tag, tagoffset++), General.Map.FormatInterface.MinTag, General.Map.FormatInterface.MaxTag); //mxd + + // Update hacky flat alignment + s.UpdateFloorSurface(); + s.UpdateCeilingSurface(); } // Done diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs index 0e37ec2..923cd99 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs @@ -517,6 +517,30 @@ namespace CodeImp.DoomBuilder.BuilderModes } } } + else + { + // Update hacky flat alignment + foreach (Linedef l in General.Map.Map.LinedefsFromMarkedVertices(true, true, true)) + { + if (l.IsFlatAlignment) + { + if (l.Tag == 0) + { + l.Front.Sector.UpdateFloorSurface(); + l.Front.Sector.UpdateCeilingSurface(); + } + else + { + foreach (Sector s in General.Map.Map.Sectors) + if (s.Tag == l.Tag) + { + s.UpdateFloorSurface(); + s.UpdateCeilingSurface(); + } + } + } + } + } // Update cached values General.Map.Map.Update();