forked from bartvdbraak/blender
BGE bug #17863: Shaky game camera.
This commit is contained in:
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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user