diff --git a/Source/Core/Map/Linedef.cs b/Source/Core/Map/Linedef.cs index c3ab79b..14d2344 100644 --- a/Source/Core/Map/Linedef.cs +++ b/Source/Core/Map/Linedef.cs @@ -153,6 +153,9 @@ namespace CodeImp.DoomBuilder.Map // Already set isdisposed so that changes can be prohibited isdisposed = true; + if (map == General.Map.Map && General.Network != null && General.Network.ActionRunning) + General.Map.Map.RemovedElements.Add(this); + // Dispose sidedefs if((front != null) && map.AutoRemove) front.Dispose(); else AttachFrontP(null); if((back != null) && map.AutoRemove) back.Dispose(); else AttachBackP(null); diff --git a/Source/Core/Map/MapSet.cs b/Source/Core/Map/MapSet.cs index 463280a..e18fd09 100644 --- a/Source/Core/Map/MapSet.cs +++ b/Source/Core/Map/MapSet.cs @@ -163,6 +163,13 @@ namespace CodeImp.DoomBuilder.Map internal bool AutoRemove { get { return autoremove; } set { autoremove = value; } } + public bool GeometryChanged { set; get; } + + public bool PopulationChanged { set; get; } + + /// List of all elements that were removed while the previous network action was running + public List RemovedElements { set; get; } = new List(); + #endregion #region ================== Constructor / Disposer diff --git a/Source/Core/Map/Sector.cs b/Source/Core/Map/Sector.cs index 772082a..6a10b78 100644 --- a/Source/Core/Map/Sector.cs +++ b/Source/Core/Map/Sector.cs @@ -175,6 +175,9 @@ namespace CodeImp.DoomBuilder.Map // Already set isdisposed so that changes can be prohibited isdisposed = true; + if (map == General.Map.Map && General.Network != null && General.Network.ActionRunning) + General.Map.Map.RemovedElements.Add(this); + // Dispose the sidedefs that are attached to this sector // because a sidedef cannot exist without reference to its sector. if(map.AutoRemove) diff --git a/Source/Core/Map/Sidedef.cs b/Source/Core/Map/Sidedef.cs index 0712ac2..bbb7091 100644 --- a/Source/Core/Map/Sidedef.cs +++ b/Source/Core/Map/Sidedef.cs @@ -127,6 +127,9 @@ namespace CodeImp.DoomBuilder.Map // Already set isdisposed so that changes can be prohibited isdisposed = true; + if (map == General.Map.Map && General.Network != null && General.Network.ActionRunning) + General.Map.Map.RemovedElements.Add(this); + if(map == General.Map.Map) General.Map.UndoRedo.RecRemSidedef(this); diff --git a/Source/Core/Map/Thing.cs b/Source/Core/Map/Thing.cs index d33cade..ceaa0c9 100644 --- a/Source/Core/Map/Thing.cs +++ b/Source/Core/Map/Thing.cs @@ -162,6 +162,9 @@ namespace CodeImp.DoomBuilder.Map // Not already disposed? if(!isdisposed) { + if (map == General.Map.Map && General.Network != null && General.Network.ActionRunning) + General.Map.Map.RemovedElements.Add(this); + if(map == General.Map.Map) General.Map.UndoRedo.RecRemThing(this); diff --git a/Source/Core/Map/Vertex.cs b/Source/Core/Map/Vertex.cs index 0bb6df1..bd14fed 100644 --- a/Source/Core/Map/Vertex.cs +++ b/Source/Core/Map/Vertex.cs @@ -118,6 +118,9 @@ namespace CodeImp.DoomBuilder.Map // Already set isdisposed so that changes can be prohibited isdisposed = true; + if (map == General.Map.Map && General.Network != null && General.Network.ActionRunning) + General.Map.Map.RemovedElements.Add(this); + if(map.AutoRemove) { // Dispose the lines that are attached to this vertex