avoid crash in inertia calculation of btBvhTriangleMeshShape

This commit is contained in:
Andrew Meadows 2018-06-15 10:28:12 -07:00
parent d0baa2d2a1
commit 93ac70ead4

View file

@ -92,7 +92,7 @@ void ObjectMotionState::setMass(float mass) {
}
float ObjectMotionState::getMass() const {
if (_shape) {
if (_shape && _shape->getShapeType() != TRIANGLE_MESH_SHAPE_PROXYTYPE) {
// scale the density by the current Aabb volume to get mass
btTransform transform;
transform.setIdentity();
@ -348,8 +348,10 @@ void ObjectMotionState::updateLastKinematicStep() {
void ObjectMotionState::updateBodyMassProperties() {
float mass = getMass();
btVector3 inertia(0.0f, 0.0f, 0.0f);
_body->getCollisionShape()->calculateLocalInertia(mass, inertia);
btVector3 inertia(1.0f, 1.0f, 1.0f);
if (mass > 0.0f) {
_body->getCollisionShape()->calculateLocalInertia(mass, inertia);
}
_body->setMassProps(mass, inertia);
_body->updateInertiaTensor();
}