diff --git a/Content.Server/Parallax/BiomeSystem.cs b/Content.Server/Parallax/BiomeSystem.cs index 881663db56..fd44f24336 100644 --- a/Content.Server/Parallax/BiomeSystem.cs +++ b/Content.Server/Parallax/BiomeSystem.cs @@ -57,6 +57,8 @@ public sealed partial class BiomeSystem : SharedBiomeSystem private const float DefaultLoadRange = 16f; private float _loadRange = DefaultLoadRange; + private List<(Vector2i, Tile)> _tiles = new(); + private ObjectPool> _tilePool = new DefaultObjectPool>(new SetPolicy(), 256); @@ -582,7 +584,6 @@ public sealed partial class BiomeSystem : SharedBiomeSystem component.ForcedMarkerLayers.Clear(); var active = _activeChunks[component]; - List<(Vector2i, Tile)>? tiles = null; foreach (var chunk in active) { @@ -591,9 +592,8 @@ public sealed partial class BiomeSystem : SharedBiomeSystem if (!component.LoadedChunks.Add(chunk)) continue; - tiles ??= new List<(Vector2i, Tile)>(ChunkSize * ChunkSize); // Load NOW! - LoadChunk(component, gridUid, grid, chunk, seed, tiles); + LoadChunk(component, gridUid, grid, chunk, seed); } } @@ -665,11 +665,11 @@ public sealed partial class BiomeSystem : SharedBiomeSystem EntityUid gridUid, MapGridComponent grid, Vector2i chunk, - int seed, - List<(Vector2i, Tile)> tiles) + int seed) { component.ModifiedTiles.TryGetValue(chunk, out var modified); modified ??= _tilePool.Get(); + _tiles.Clear(); // Set tiles first for (var x = 0; x < ChunkSize; x++) @@ -686,15 +686,15 @@ public sealed partial class BiomeSystem : SharedBiomeSystem if (_mapSystem.TryGetTileRef(gridUid, grid, indices, out var tileRef) && !tileRef.Tile.IsEmpty) continue; - if (!TryGetBiomeTile(indices, component.Layers, seed, grid, out var biomeTile) || biomeTile.Value == tileRef.Tile) + if (!TryGetBiomeTile(indices, component.Layers, seed, grid, out var biomeTile)) continue; - tiles.Add((indices, biomeTile.Value)); + _tiles.Add((indices, biomeTile.Value)); } } - _mapSystem.SetTiles(gridUid, grid, tiles); - tiles.Clear(); + _mapSystem.SetTiles(gridUid, grid, _tiles); + _tiles.Clear(); // Now do entities var loadedEntities = new Dictionary();