From 5f171392bf6bdad4018dfbf4dca8d244883417f7 Mon Sep 17 00:00:00 2001 From: metalgearsloth Date: Fri, 31 Jan 2025 21:33:17 +1100 Subject: [PATCH] Tweak grid state slightly Doubt it affects anything but if tile changes throws it at least ensures the fixtures are updated. --- .../GameObjects/Systems/SharedMapSystem.Grid.cs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) 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; }