minor: replaced convenience lambda functions

This commit is contained in:
kubas
2014-01-09 01:15:51 +01:00
parent aa87e47d2d
commit 876293ac95

View File

@@ -508,32 +508,48 @@ void btMultiBodyDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo)
for(int dof = 0; dof < numDofs; ++dof) for(int dof = 0; dof < numDofs; ++dof)
scratch_qd0[dof] = bod->getVelocityVector()[dof]; scratch_qd0[dof] = bod->getVelocityVector()[dof];
//// ////
struct
auto pResetQx = [&scratch_qx, &scratch_q0, &bod]()
{ {
for(int dof = 0; dof < bod->getNumPosVars() + 7; ++dof) btMultiBody *bod;
scratch_qx[dof] = scratch_q0[dof]; btScalar *scratch_qx, *scratch_q0;
};
auto pEulerIntegrate = [](btScalar dt, const btScalar *pDer, const btScalar *pCurVal, btScalar *pVal, int size) void operator()()
{ {
for(int i = 0; i < size; ++i) for(int dof = 0; dof < bod->getNumPosVars() + 7; ++dof)
pVal[i] = pCurVal[i] + dt * pDer[i]; scratch_qx[dof] = scratch_q0[dof];
}; }
} pResetQx = {bod, scratch_qx, scratch_q0};
// //
auto pCopyToVelocityVector = [](btMultiBody *pBody, const btScalar *pData) struct
{ {
btScalar *pVel = const_cast<btScalar*>(pBody->getVelocityVector()); void operator()(btScalar dt, const btScalar *pDer, const btScalar *pCurVal, btScalar *pVal, int size)
{
for(int i = 0; i < size; ++i)
pVal[i] = pCurVal[i] + dt * pDer[i];
}
for(int i = 0; i < pBody->getNumDofs() + 6; ++i) } pEulerIntegrate;
pVel[i] = pData[i];
};
// //
auto pCopy = [](const btScalar *pSrc, btScalar *pDst, int start, int size) struct
{
void operator()(btMultiBody *pBody, const btScalar *pData)
{
btScalar *pVel = const_cast<btScalar*>(pBody->getVelocityVector());
for(int i = 0; i < pBody->getNumDofs() + 6; ++i)
pVel[i] = pData[i];
}
} pCopyToVelocityVector;
//
struct
{ {
for(int i = 0; i < size; ++i) void operator()(const btScalar *pSrc, btScalar *pDst, int start, int size)
pDst[i] = pSrc[start + i]; {
}; for(int i = 0; i < size; ++i)
pDst[i] = pSrc[start + i];
}
} pCopy;
// //
btScalar h = solverInfo.m_timeStep; btScalar h = solverInfo.m_timeStep;