btGeneric6DOFSpringConstraint's setEquilibriumPoint has an issue. It's too small of a fix, I'm lazy to create a patch.
Code: Select all
void btGeneric6DofSpringConstraint::setEquilibriumPoint(int index)
{
btAssert((index >= 0) && (index < 6));
calculateTransforms();
if(index < 3)
{
m_equilibriumPoint[index] = m_calculatedLinearDiff[index];
}
else
{
m_equilibriumPoint[index + 3] = m_calculatedAxisAngleDiff[index];
}
}
m_equilibriumPoint[index + 3] = m_calculatedAxisAngleDiff[index];
to
m_equilibriumPoint[index] = m_calculatedAxisAngleDiff[index - 3];
Let me know if there's anything wrong with my code.
Thanks.