diff --git a/Robust.Shared/GameObjects/Systems/SharedMapSystem.Grid.cs b/Robust.Shared/GameObjects/Systems/SharedMapSystem.Grid.cs index 53cd5af405d..7af2d9cb4ca 100644 --- a/Robust.Shared/GameObjects/Systems/SharedMapSystem.Grid.cs +++ b/Robust.Shared/GameObjects/Systems/SharedMapSystem.Grid.cs @@ -312,7 +312,7 @@ private void ApplyChunkData( if (data.IsDeleted()) { - if (!component.Chunks.TryGetValue(index, out var deletedChunk)) + if (!component.Chunks.Remove(index, out var deletedChunk)) return; // Deleted chunks still need to raise tile-changed events. @@ -330,11 +330,13 @@ private void ApplyChunkData( } } - component.Chunks.Remove(index); return; } var chunk = GetOrAddChunk(uid, component, index); + chunk.Fixtures.Clear(); + chunk.Fixtures.UnionWith(data.Fixtures); + chunk.SuppressCollisionRegeneration = true; DebugTools.Assert(data.TileData.Any(x => !x.IsEmpty)); DebugTools.Assert(data.TileData.Length == component.ChunkSize * component.ChunkSize); @@ -355,12 +357,6 @@ private void ApplyChunkData( // These should never refer to the same object DebugTools.AssertNotEqual(chunk.Fixtures, data.Fixtures); - if (!chunk.Fixtures.SetEquals(data.Fixtures)) - { - chunk.Fixtures.Clear(); - chunk.Fixtures.UnionWith(data.Fixtures); - } - chunk.CachedBounds = data.CachedBounds!.Value; chunk.SuppressCollisionRegeneration = false; }