diff --git a/Robust.Client/GameObjects/ClientEntityManager.cs b/Robust.Client/GameObjects/ClientEntityManager.cs
index 13014b490..807840d99 100644
--- a/Robust.Client/GameObjects/ClientEntityManager.cs
+++ b/Robust.Client/GameObjects/ClientEntityManager.cs
@@ -65,9 +65,12 @@ namespace Robust.Client.GameObjects
base.DirtyEntity(uid, meta);
}
- public override void QueueDeleteEntity(EntityUid uid)
+ public override void QueueDeleteEntity(EntityUid? uid)
{
- if (IsClientSide(uid))
+ if (uid == null)
+ return;
+
+ if (IsClientSide(uid.Value))
{
base.QueueDeleteEntity(uid);
return;
@@ -78,7 +81,7 @@ namespace Robust.Client.GameObjects
// Client-side entity deletion is not supported and will cause errors.
if (_client.RunLevel == ClientRunLevel.Connected || _client.RunLevel == ClientRunLevel.InGame)
- LogManager.RootSawmill.Error($"Predicting the queued deletion of a networked entity: {ToPrettyString(uid)}. Trace: {Environment.StackTrace}");
+ LogManager.RootSawmill.Error($"Predicting the queued deletion of a networked entity: {ToPrettyString(uid.Value)}. Trace: {Environment.StackTrace}");
}
///
diff --git a/Robust.Shared/GameObjects/EntityManager.cs b/Robust.Shared/GameObjects/EntityManager.cs
index bd238c60d..b39134212 100644
--- a/Robust.Shared/GameObjects/EntityManager.cs
+++ b/Robust.Shared/GameObjects/EntityManager.cs
@@ -1,17 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
using Prometheus;
using Robust.Shared.Log;
using Robust.Shared.Map;
using Robust.Shared.Profiling;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.Manager;
+using Robust.Shared.Serialization.Markdown.Mapping;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using Robust.Shared.Serialization.Markdown.Mapping;
namespace Robust.Shared.GameObjects
{
@@ -545,13 +544,16 @@ namespace Robust.Shared.GameObjects
NetEntityLookup.Remove(netEntity);
}
- public virtual void QueueDeleteEntity(EntityUid uid)
+ public virtual void QueueDeleteEntity(EntityUid? uid)
{
- if (!QueuedDeletionsSet.Add(uid))
+ if (uid == null)
return;
- QueuedDeletions.Enqueue(uid);
- EntityQueueDeleted?.Invoke(uid);
+ if (!QueuedDeletionsSet.Add(uid.Value))
+ return;
+
+ QueuedDeletions.Enqueue(uid.Value);
+ EntityQueueDeleted?.Invoke(uid.Value);
}
public bool IsQueuedForDeletion(EntityUid uid) => QueuedDeletionsSet.Contains(uid);
diff --git a/Robust.Shared/GameObjects/EntitySystem.Proxy.cs b/Robust.Shared/GameObjects/EntitySystem.Proxy.cs
index 0a5ad6b05..a762933b1 100644
--- a/Robust.Shared/GameObjects/EntitySystem.Proxy.cs
+++ b/Robust.Shared/GameObjects/EntitySystem.Proxy.cs
@@ -651,7 +651,7 @@ public partial class EntitySystem
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- protected void QueueDel(EntityUid uid)
+ protected void QueueDel(EntityUid? uid)
{
EntityManager.QueueDeleteEntity(uid);
}
diff --git a/Robust.Shared/GameObjects/IEntityManager.cs b/Robust.Shared/GameObjects/IEntityManager.cs
index f0aadd622..d269f0ca7 100644
--- a/Robust.Shared/GameObjects/IEntityManager.cs
+++ b/Robust.Shared/GameObjects/IEntityManager.cs
@@ -87,7 +87,7 @@ namespace Robust.Shared.GameObjects
public void Dirty(EntityUid uid, Component component, MetaDataComponent? meta = null);
- public void QueueDeleteEntity(EntityUid uid);
+ public void QueueDeleteEntity(EntityUid? uid);
public bool IsQueuedForDeletion(EntityUid uid);