diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2006-12-25 05:02:13 +0300 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2006-12-25 05:02:13 +0300 |
commit | e820cdf6a0ab757cd83ffafd0ea04d736c3faa63 (patch) | |
tree | c412336bc8dcee4fad535e46205ddffd905ac37e /source/gameengine/Physics | |
parent | 0e094ffcab8ae40ce06584c02292102d53ece77d (diff) |
fixing some issues: force needs to wake up objects, property sensor issue, island activation issue
Diffstat (limited to 'source/gameengine/Physics')
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 11 | ||||
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 3ddac72618d..d3eb4db6f35 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -379,6 +379,10 @@ void CcdPhysicsController::ApplyTorque(float torqueX,float torqueY,float torque { btVector3 torque(torqueX,torqueY,torqueZ); btTransform xform = m_body->getCenterOfMassTransform(); + if (torque.length2() > (SIMD_EPSILON*SIMD_EPSILON)) + { + m_body->activate(); + } if (local) { torque = xform.getBasis()*torque; @@ -389,6 +393,13 @@ void CcdPhysicsController::ApplyTorque(float torqueX,float torqueY,float torque void CcdPhysicsController::ApplyForce(float forceX,float forceY,float forceZ,bool local) { btVector3 force(forceX,forceY,forceZ); + + if (force.length2() > (SIMD_EPSILON*SIMD_EPSILON)) + { + m_body->activate(); + } + + btTransform xform = m_body->getCenterOfMassTransform(); if (local) { diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 57fe533825e..bb6b62c7edc 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -653,6 +653,8 @@ void CcdPhysicsEnvironment::removeConstraint(int constraintId) btTypedConstraint* constraint = m_dynamicsWorld->getConstraint(i); if (constraint->getUserConstraintId() == constraintId) { + constraint->getRigidBodyA().activate(); + constraint->getRigidBodyB().activate(); m_dynamicsWorld->removeConstraint(constraint); break; } |