BGE bug #17863: Shaky game camera.

This commit is contained in:
Benoit Bolsee 2009-04-23 20:30:01 +00:00
parent 70f1b45430
commit 67b3e1a07b

@ -571,11 +571,23 @@ bool CcdPhysicsController::SynchronizeMotionStates(float time)
btSoftBody* sb = GetSoftBody(); btSoftBody* sb = GetSoftBody();
if (sb) if (sb)
{
if (sb->m_pose.m_bframe)
{
btVector3 worldPos = sb->m_pose.m_com;
btQuaternion worldquat;
btMatrix3x3 trs = sb->m_pose.m_rot*sb->m_pose.m_scl;
trs.getRotation(worldquat);
m_MotionState->setWorldPosition(worldPos[0],worldPos[1],worldPos[2]);
m_MotionState->setWorldOrientation(worldquat[0],worldquat[1],worldquat[2],worldquat[3]);
}
else
{ {
btVector3 aabbMin,aabbMax; btVector3 aabbMin,aabbMax;
sb->getAabb(aabbMin,aabbMax); sb->getAabb(aabbMin,aabbMax);
btVector3 worldPos = (aabbMax+aabbMin)*0.5f; btVector3 worldPos = (aabbMax+aabbMin)*0.5f;
m_MotionState->setWorldPosition(worldPos[0],worldPos[1],worldPos[2]); m_MotionState->setWorldPosition(worldPos[0],worldPos[1],worldPos[2]);
}
m_MotionState->calculateWorldTransformations(); m_MotionState->calculateWorldTransformations();
return true; return true;
} }