diff --git a/OpenRA.Game/Traits/World/SpatialBins.cs b/OpenRA.Game/Traits/World/SpatialBins.cs index 33cb890f63..5a390a5728 100644 --- a/OpenRA.Game/Traits/World/SpatialBins.cs +++ b/OpenRA.Game/Traits/World/SpatialBins.cs @@ -33,13 +33,17 @@ namespace OpenRA.Traits self.World.Map.MapSize.Y / info.BinSize]; scale = Game.CellSize * info.BinSize; + + for (var j = 0; j <= bins.GetUpperBound(1); j++) + for (var i = 0; i <= bins.GetUpperBound(0); i++) + bins[i, j] = new List(); } public void Tick(Actor self) { for (var j = 0; j <= bins.GetUpperBound(1); j++) for (var i = 0; i <= bins.GetUpperBound(0); i++) - bins[i, j] = new List(); + bins[i, j].Clear(); foreach (var a in self.World.Actors) { @@ -63,8 +67,6 @@ namespace OpenRA.Traits IEnumerable ActorsInBins(int i1, int i2, int j1, int j2) { - if (bins[0, 0] == null) yield break; // hack - j1 = Math.Max(0, j1); j2 = Math.Min(j2, bins.GetUpperBound(1)); i1 = Math.Max(0, i1); i2 = Math.Min(i2, bins.GetUpperBound(0)); for (var j = j1; j <= j2; j++)