reset the companion Id back to -1, because of a bug related to kinematic objects
Thanks to Francois for the report. See Issue 652
This commit is contained in:
@@ -1555,36 +1555,25 @@ btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyFinish(btCo
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (infoGlobal.m_splitImpulse)
|
for ( i=0;i<m_tmpSolverBodyPool.size();i++)
|
||||||
{
|
{
|
||||||
for ( i=0;i<m_tmpSolverBodyPool.size();i++)
|
btRigidBody* body = m_tmpSolverBodyPool[i].m_originalBody;
|
||||||
|
if (body)
|
||||||
{
|
{
|
||||||
btRigidBody* body = m_tmpSolverBodyPool[i].m_originalBody;
|
if (infoGlobal.m_splitImpulse)
|
||||||
if (body)
|
|
||||||
{
|
|
||||||
m_tmpSolverBodyPool[i].writebackVelocityAndTransform(infoGlobal.m_timeStep, infoGlobal.m_splitImpulseTurnErp);
|
m_tmpSolverBodyPool[i].writebackVelocityAndTransform(infoGlobal.m_timeStep, infoGlobal.m_splitImpulseTurnErp);
|
||||||
m_tmpSolverBodyPool[i].m_originalBody->setLinearVelocity(m_tmpSolverBodyPool[i].m_linearVelocity);
|
else
|
||||||
m_tmpSolverBodyPool[i].m_originalBody->setAngularVelocity(m_tmpSolverBodyPool[i].m_angularVelocity);
|
m_tmpSolverBodyPool[i].writebackVelocity();
|
||||||
|
|
||||||
|
m_tmpSolverBodyPool[i].m_originalBody->setLinearVelocity(m_tmpSolverBodyPool[i].m_linearVelocity);
|
||||||
|
m_tmpSolverBodyPool[i].m_originalBody->setAngularVelocity(m_tmpSolverBodyPool[i].m_angularVelocity);
|
||||||
|
if (infoGlobal.m_splitImpulse)
|
||||||
m_tmpSolverBodyPool[i].m_originalBody->setWorldTransform(m_tmpSolverBodyPool[i].m_worldTransform);
|
m_tmpSolverBodyPool[i].m_originalBody->setWorldTransform(m_tmpSolverBodyPool[i].m_worldTransform);
|
||||||
|
|
||||||
}
|
m_tmpSolverBodyPool[i].m_originalBody->setCompanionId(-1);
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
for ( i=0;i<m_tmpSolverBodyPool.size();i++)
|
|
||||||
{
|
|
||||||
btRigidBody* body = m_tmpSolverBodyPool[i].m_originalBody;
|
|
||||||
if (body)
|
|
||||||
{
|
|
||||||
m_tmpSolverBodyPool[i].writebackVelocity();
|
|
||||||
m_tmpSolverBodyPool[i].m_originalBody->setLinearVelocity(m_tmpSolverBodyPool[i].m_linearVelocity);
|
|
||||||
m_tmpSolverBodyPool[i].m_originalBody->setAngularVelocity(m_tmpSolverBodyPool[i].m_angularVelocity);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
m_tmpSolverContactConstraintPool.resizeNoInitialize(0);
|
m_tmpSolverContactConstraintPool.resizeNoInitialize(0);
|
||||||
m_tmpSolverNonContactConstraintPool.resizeNoInitialize(0);
|
m_tmpSolverNonContactConstraintPool.resizeNoInitialize(0);
|
||||||
m_tmpSolverContactFrictionConstraintPool.resizeNoInitialize(0);
|
m_tmpSolverContactFrictionConstraintPool.resizeNoInitialize(0);
|
||||||
|
|||||||
Reference in New Issue
Block a user