diff options
| author | Kane Rogers <kane.m.rogers@gmail.com> | 2021-08-25 15:19:52 +1000 |
|---|---|---|
| committer | Sébastien Crozet <sebastien@crozet.re> | 2021-08-26 10:29:24 +0200 |
| commit | 3f223aaf9e8334893e6ed0ca1e9e72604f5ab35d (patch) | |
| tree | c2374c6854a1548bd3a52ccc93c81812c5813e67 /src/geometry | |
| parent | 1d55e841ec22ea2acd03a5293a226f37218c3b6d (diff) | |
| download | rapier-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.rs | 8 |
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( |
