aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/geometry/narrow_phase.rs40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/geometry/narrow_phase.rs b/src/geometry/narrow_phase.rs
index 30c1f8c..cf7b531 100644
--- a/src/geometry/narrow_phase.rs
+++ b/src/geometry/narrow_phase.rs
@@ -137,25 +137,27 @@ impl NarrowPhase {
let mut i = 0;
while let Some(collider) = colliders.removed_colliders.read_ith(&cursor, i) {
- let graph_idx = self.graph_indices.get(collider.handle).unwrap();
-
- let proximity_graph_id = prox_id_remap
- .get(&collider.handle)
- .copied()
- .unwrap_or(graph_idx.proximity_graph_index);
- let contact_graph_id = contact_id_remap
- .get(&collider.handle)
- .copied()
- .unwrap_or(graph_idx.contact_graph_index);
-
- self.remove_collider(
- proximity_graph_id,
- contact_graph_id,
- colliders,
- bodies,
- &mut prox_id_remap,
- &mut contact_id_remap,
- );
+ // NOTE: if the collider does not have any graph indices currently, there is nothing
+ // to remove in the narrow-phase for this collider.
+ if let Some(graph_idx) = self.graph_indices.get(collider.handle) {
+ let proximity_graph_id = prox_id_remap
+ .get(&collider.handle)
+ .copied()
+ .unwrap_or(graph_idx.proximity_graph_index);
+ let contact_graph_id = contact_id_remap
+ .get(&collider.handle)
+ .copied()
+ .unwrap_or(graph_idx.contact_graph_index);
+
+ self.remove_collider(
+ proximity_graph_id,
+ contact_graph_id,
+ colliders,
+ bodies,
+ &mut prox_id_remap,
+ &mut contact_id_remap,
+ );
+ }
i += 1;
}