btBulletWorldImporter fix: don't crash when loading files that have wrong constraint setup for btGeneric6DofConstraints
This commit is contained in:
@@ -810,11 +810,20 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
|
|||||||
rbBFrame.deSerializeFloat(dofData->m_rbBFrame);
|
rbBFrame.deSerializeFloat(dofData->m_rbBFrame);
|
||||||
dof = createGeneric6DofConstraint(*rbA,*rbB,rbAFrame,rbBFrame,dofData->m_useLinearReferenceFrameA!=0);
|
dof = createGeneric6DofConstraint(*rbA,*rbB,rbAFrame,rbBFrame,dofData->m_useLinearReferenceFrameA!=0);
|
||||||
} else
|
} else
|
||||||
|
{
|
||||||
|
if (rbB)
|
||||||
{
|
{
|
||||||
btTransform rbBFrame;
|
btTransform rbBFrame;
|
||||||
rbBFrame.deSerializeFloat(dofData->m_rbBFrame);
|
rbBFrame.deSerializeFloat(dofData->m_rbBFrame);
|
||||||
dof = createGeneric6DofConstraint(*rbB,rbBFrame,dofData->m_useLinearReferenceFrameA!=0);
|
dof = createGeneric6DofConstraint(*rbB,rbBFrame,dofData->m_useLinearReferenceFrameA!=0);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
printf("Error in btWorldImporter::createGeneric6DofConstraint: missing rbB\n");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dof)
|
||||||
|
{
|
||||||
btVector3 angLowerLimit,angUpperLimit, linLowerLimit,linUpperlimit;
|
btVector3 angLowerLimit,angUpperLimit, linLowerLimit,linUpperlimit;
|
||||||
angLowerLimit.deSerializeFloat(dofData->m_angularLowerLimit);
|
angLowerLimit.deSerializeFloat(dofData->m_angularLowerLimit);
|
||||||
angUpperLimit.deSerializeFloat(dofData->m_angularUpperLimit);
|
angUpperLimit.deSerializeFloat(dofData->m_angularUpperLimit);
|
||||||
@@ -825,6 +834,7 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
|
|||||||
dof->setAngularUpperLimit(angUpperLimit);
|
dof->setAngularUpperLimit(angUpperLimit);
|
||||||
dof->setLinearLowerLimit(linLowerLimit);
|
dof->setLinearLowerLimit(linLowerLimit);
|
||||||
dof->setLinearUpperLimit(linUpperlimit);
|
dof->setLinearUpperLimit(linUpperlimit);
|
||||||
|
}
|
||||||
|
|
||||||
constraint = dof;
|
constraint = dof;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user