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.
This commit is contained in:
Ricardo Buring 2022-04-04 11:07:57 +02:00
parent a5f9e1ce18
commit 887a5cd4f9

View file

@ -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);