From 5a0e6471cd65dfcaf605d4bc2c0f2ae6e4e54546 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Sat, 3 Apr 2021 12:03:49 +0200 Subject: Fix crash caused by a collider being remove before the first timestep. --- src/geometry/collider_set.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/geometry') diff --git a/src/geometry/collider_set.rs b/src/geometry/collider_set.rs index 7af34f1..b0209bb 100644 --- a/src/geometry/collider_set.rs +++ b/src/geometry/collider_set.rs @@ -139,7 +139,9 @@ impl ColliderSet { self.modified_all_colliders = false; } else { for handle in self.modified_colliders.drain(..) { - self.colliders[handle.0].changes = ColliderChanges::empty(); + if let Some(co) = self.colliders.get_mut(handle.0) { + co.changes = ColliderChanges::empty(); + } } } } -- cgit From 88b7a5588bba6da0b2833c424b37c29274832255 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Sat, 3 Apr 2021 12:12:12 +0200 Subject: Add comment regarding the fix. --- src/geometry/collider_set.rs | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/geometry') diff --git a/src/geometry/collider_set.rs b/src/geometry/collider_set.rs index b0209bb..7b453a3 100644 --- a/src/geometry/collider_set.rs +++ b/src/geometry/collider_set.rs @@ -139,6 +139,9 @@ impl ColliderSet { self.modified_all_colliders = false; } else { for handle in self.modified_colliders.drain(..) { + // NOTE: if the collider was added, then removed from this set before + // a an update, then it will no longer exist in `self.colliders` + // so we need to do this `if let`. if let Some(co) = self.colliders.get_mut(handle.0) { co.changes = ColliderChanges::empty(); } -- cgit