aboutsummaryrefslogtreecommitdiff
path: root/src/geometry
diff options
context:
space:
mode:
authorKane Rogers <kane.m.rogers@gmail.com>2021-08-25 15:19:52 +1000
committerSébastien Crozet <sebastien@crozet.re>2021-08-26 10:29:24 +0200
commit3f223aaf9e8334893e6ed0ca1e9e72604f5ab35d (patch)
treec2374c6854a1548bd3a52ccc93c81812c5813e67 /src/geometry
parent1d55e841ec22ea2acd03a5293a226f37218c3b6d (diff)
downloadrapier-3f223aaf9e8334893e6ed0ca1e9e72604f5ab35d.tar.gz
rapier-3f223aaf9e8334893e6ed0ca1e9e72604f5ab35d.tar.bz2
rapier-3f223aaf9e8334893e6ed0ca1e9e72604f5ab35d.zip
Fix bug with colliders without rigid bodies
- When `NarrowPhase` adds a collision pair, it checks to make sure that they don't have the same parent - In the case where the colliders have no parents (eg. they are not attached to a `RigidBody`) this yields a false positive. - The fix is to ensure that colliders have a parent before ignoring the pair.
Diffstat (limited to 'src/geometry')
-rw-r--r--src/geometry/narrow_phase.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/geometry/narrow_phase.rs b/src/geometry/narrow_phase.rs
index c3c7685..18900b9 100644
--- a/src/geometry/narrow_phase.rs
+++ b/src/geometry/narrow_phase.rs
@@ -571,8 +571,12 @@ impl NarrowPhase {
let co_parent2: Option<&ColliderParent> = colliders.get(pair.collider2.0);
if co_parent1.map(|p| p.handle) == co_parent2.map(|p| p.handle) {
- // Same parents. Ignore collisions.
- return;
+ if co_parent1.is_some() {
+ // Same parents. Ignore collisions.
+ return;
+ }
+
+ // These colliders have no parents - continue.
}
let (gid1, gid2) = self.graph_indices.ensure_pair_exists(