diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2006-12-04 07:13:42 +0300 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2006-12-04 07:13:42 +0300 |
commit | 2ec5d00da91848ce8c56d383a23a35b76243b956 (patch) | |
tree | 293000afd2bfeb82b9633aa285407dcbb58f6fd7 /source/gameengine/Physics | |
parent | fc691cdb5e0c23bf36e68a14903d6bc4d0cc5242 (diff) |
fixed some motionstate synchronization issues
nearsensor was not synchronized at the start
wheels not synchronized properly (one frame delay)
Diffstat (limited to 'source/gameengine/Physics')
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 2 | ||||
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index f6a087887f9..3ddac72618d 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -99,7 +99,7 @@ public: m_blenderMotionState->setWorldPosition(worldTrans.getOrigin().getX(),worldTrans.getOrigin().getY(),worldTrans.getOrigin().getZ()); btQuaternion rotQuat = worldTrans.getRotation(); m_blenderMotionState->setWorldOrientation(rotQuat[0],rotQuat[1],rotQuat[2],rotQuat[3]); - + m_blenderMotionState->calculateWorldTransformations(); } }; diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 418271a5c46..edd4c2e2bb4 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -108,7 +108,8 @@ public: { btWheelInfo& info = m_vehicle->getWheelInfo(i); PHY_IMotionState* motionState = (PHY_IMotionState*)info.m_clientInfo ; - m_vehicle->updateWheelTransform(i,true); + // m_vehicle->updateWheelTransformsWS(info,false); + m_vehicle->updateWheelTransform(i,false); btTransform trans = m_vehicle->getWheelInfo(i).m_worldTransform; btQuaternion orn = trans.getRotation(); const btVector3& pos = trans.getOrigin(); @@ -463,7 +464,7 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep) for (i=0;i<numCtrl;i++) { CcdPhysicsController* ctrl = GetPhysicsController(i); - //ctrl->SynchronizeMotionStates(timeStep); + ctrl->SynchronizeMotionStates(timeStep); } for (i=0;i<m_wrapperVehicles.size();i++) @@ -829,6 +830,8 @@ void CcdPhysicsEnvironment::addSensor(PHY_IPhysicsController* ctrl) } //force collision detection with everything, including static objects (might hurt performance!) ctrl1->GetRigidBody()->getBroadphaseHandle()->m_collisionFilterMask = btBroadphaseProxy::AllFilter; + ctrl1->GetRigidBody()->getBroadphaseHandle()->m_collisionFilterGroup = btBroadphaseProxy::AllFilter; + //todo: make this 'sensor'! requestCollisionCallback(ctrl); //printf("addSensor\n"); |