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);