SpaceBullet::recover_from_penetration: skip compound shapes without child shapes

Before, this case would incorrectly get caught as an error, causing an
early return, in particular skipping other possibly relevant shapes.

(cherry picked from commit 887a5cd4f9)
This commit is contained in:
Ricardo Buring 2022-04-04 11:07:57 +02:00 committed by Rémi Verschelde
parent dba3a8d2aa
commit f7930560c3
1 changed files with 3 additions and 0 deletions

View File

@ -1302,6 +1302,9 @@ bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTran
if (otherObject->getCollisionShape()->isCompound()) {
const btCompoundShape *cs = static_cast<const btCompoundShape *>(otherObject->getCollisionShape());
if (cs->getNumChildShapes() == 0) {
continue; // No shapes to depenetrate from.
}
int shape_idx = recover_broad_result.results[i].compound_child_index;
ERR_FAIL_COND_V(shape_idx < 0 || shape_idx >= cs->getNumChildShapes(), false);