Fix #101877, rigidbodies & constraints causing frequent crashes. #108399

Open
himisa wants to merge 5 commits from himisa/blender:fix_rigid_crash into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
1 changed files with 5 additions and 2 deletions
Showing only changes of commit de13e0c360 - Show all commits

View File

@ -530,6 +530,10 @@ void btDiscreteDynamicsWorld::removeCollisionObject(btCollisionObject* collision
void btDiscreteDynamicsWorld::removeRigidBody(btRigidBody* body)
{
for (int i = body->getNumConstraintRefs() - 1; i >= 0; i--) {
btTypedConstraint *con=body->getConstraintRef(i);
removeConstraint(con);
}
m_nonStaticRigidBodies.remove(body);
btCollisionWorld::removeCollisionObject(body);
}
@ -644,8 +648,7 @@ void btDiscreteDynamicsWorld::addConstraint(btTypedConstraint* constraint, bool
void btDiscreteDynamicsWorld::removeConstraint(btTypedConstraint* constraint)
{
m_constraints.remove(constraint);
constraint->getRigidBodyA().removeConstraintRef(constraint);
constraint->getRigidBodyB().removeConstraintRef(constraint);
constraint->invalidate();
}
void btDiscreteDynamicsWorld::addAction(btActionInterface* action)