2
0
Fork 0

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.
3.5
Ricardo Buring 2022-04-04 11:07:57 +07:00
parent a5f9e1ce18
commit 887a5cd4f9
1 changed files with 3 additions and 0 deletions

@ -1256,6 +1256,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);