diff --git a/src/Collision/Fixed/SpatialHash2D.cs b/src/Collision/Fixed/SpatialHash2D.cs index d597cdd..0821799 100644 --- a/src/Collision/Fixed/SpatialHash2D.cs +++ b/src/Collision/Fixed/SpatialHash2D.cs @@ -125,21 +125,24 @@ namespace MoonWorks.Collision.Fixed /// public void Remove(T id) { - var (shape, transform, collisionGroups) = IDLookup[id]; - - var box = AABB2D.Transformed(shape.AABB, transform); - var minHash = Hash(box.Min); - var maxHash = Hash(box.Max); - - foreach (var key in Keys(minHash.Item1, minHash.Item2, maxHash.Item1, maxHash.Item2)) + if (IDLookup.TryGetValue(id, out var data)) { - if (hashDictionary.ContainsKey(key)) - { - hashDictionary[key].Remove(id); - } - } + var (shape, transform, collisionGroups) = data; - IDLookup.Remove(id); + var box = AABB2D.Transformed(shape.AABB, transform); + var minHash = Hash(box.Min); + var maxHash = Hash(box.Max); + + foreach (var key in Keys(minHash.Item1, minHash.Item2, maxHash.Item1, maxHash.Item2)) + { + if (hashDictionary.ContainsKey(key)) + { + hashDictionary[key].Remove(id); + } + } + + IDLookup.Remove(id); + } } ///