remove enforcement of MOTION_TYPE_STATIC for mesh shapes

This commit is contained in:
Andrew Meadows 2019-02-15 16:50:45 -08:00
parent 7446fa9e7e
commit 304f993391

View file

@ -203,21 +203,6 @@ PhysicsMotionType EntityMotionState::computePhysicsMotionType() const {
}
assert(entityTreeIsLocked());
if (_entity->getShapeType() == SHAPE_TYPE_STATIC_MESH
|| (_body && _body->getCollisionShape()->getShapeType() == TRIANGLE_MESH_SHAPE_PROXYTYPE)) {
if (_entity->isMoving()) {
// DANGER: Bullet doesn't support non-zero velocity for these shapes --> collision details may be wrong
// in ways that allow other DYNAMIC objects to tunnel/penetrate/snag.
// However, in practice low-velocity collisions work OK most of the time, and if we enforce these objects
// to be MOTION_TYPE_STATIC then some other bugs can be worse (e.g. when Grabbing --> Grab Action fails)
// so we're making a tradeoff here.
// TODO: The Correct Solution is to NOT use btBvhTriangleMesh shape for moving objects and instead compute the convex
// decomposition and build a btCompoundShape with convex sub-shapes.
return MOTION_TYPE_KINEMATIC;
}
return MOTION_TYPE_STATIC;
}
if (_entity->getLocked()) {
if (_entity->isMoving()) {
return MOTION_TYPE_KINEMATIC;