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