Replace all hardcoded 1e30(f) by BT_LARGE_FLOAT, defined in btScalar.h as 1e18(f) so that its square still fits in FLT_MAX
Thanks to Ole K. for reporting! http://code.google.com/p/bullet/issues/detail?id=206
This commit is contained in:
@@ -64,7 +64,7 @@ void btConeTwistConstraint::init()
|
||||
m_bMotorEnabled = false;
|
||||
m_maxMotorImpulse = btScalar(-1);
|
||||
|
||||
setLimit(btScalar(1e30), btScalar(1e30), btScalar(1e30));
|
||||
setLimit(btScalar(BT_LARGE_FLOAT), btScalar(BT_LARGE_FLOAT), btScalar(BT_LARGE_FLOAT));
|
||||
m_damping = btScalar(0.01);
|
||||
m_fixThresh = CONETWIST_DEF_FIX_THRESH;
|
||||
}
|
||||
|
||||
@@ -191,8 +191,8 @@ btScalar btRotationalLimitMotor::solveAngularLimits(
|
||||
|
||||
|
||||
// sort with accumulated impulses
|
||||
btScalar lo = btScalar(-1e30);
|
||||
btScalar hi = btScalar(1e30);
|
||||
btScalar lo = btScalar(-BT_LARGE_FLOAT);
|
||||
btScalar hi = btScalar(BT_LARGE_FLOAT);
|
||||
|
||||
btScalar oldaccumImpulse = m_accumulatedImpulse;
|
||||
btScalar sum = oldaccumImpulse + clippedMotorImpulse;
|
||||
@@ -283,8 +283,8 @@ btScalar btTranslationalLimitMotor::solveLinearAxis(
|
||||
|
||||
//positional error (zeroth order error)
|
||||
btScalar depth = -(pointInA - pointInB).dot(axis_normal_on_a);
|
||||
btScalar lo = btScalar(-1e30);
|
||||
btScalar hi = btScalar(1e30);
|
||||
btScalar lo = btScalar(-BT_LARGE_FLOAT);
|
||||
btScalar hi = btScalar(BT_LARGE_FLOAT);
|
||||
|
||||
btScalar minLimit = m_lowerLimit[limit_index];
|
||||
btScalar maxLimit = m_upperLimit[limit_index];
|
||||
|
||||
@@ -79,8 +79,8 @@ btHingeConstraint::btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const bt
|
||||
rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() );
|
||||
|
||||
//start with free
|
||||
m_lowerLimit = btScalar(1e30);
|
||||
m_upperLimit = btScalar(-1e30);
|
||||
m_lowerLimit = btScalar(BT_LARGE_FLOAT);
|
||||
m_upperLimit = btScalar(-BT_LARGE_FLOAT);
|
||||
m_biasFactor = 0.3f;
|
||||
m_relaxationFactor = 1.0f;
|
||||
m_limitSoftness = 0.9f;
|
||||
@@ -119,8 +119,8 @@ m_useReferenceFrameA(useReferenceFrameA)
|
||||
rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() );
|
||||
|
||||
//start with free
|
||||
m_lowerLimit = btScalar(1e30);
|
||||
m_upperLimit = btScalar(-1e30);
|
||||
m_lowerLimit = btScalar(BT_LARGE_FLOAT);
|
||||
m_upperLimit = btScalar(-BT_LARGE_FLOAT);
|
||||
m_biasFactor = 0.3f;
|
||||
m_relaxationFactor = 1.0f;
|
||||
m_limitSoftness = 0.9f;
|
||||
@@ -139,8 +139,8 @@ m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER),
|
||||
m_useReferenceFrameA(useReferenceFrameA)
|
||||
{
|
||||
//start with free
|
||||
m_lowerLimit = btScalar(1e30);
|
||||
m_upperLimit = btScalar(-1e30);
|
||||
m_lowerLimit = btScalar(BT_LARGE_FLOAT);
|
||||
m_upperLimit = btScalar(-BT_LARGE_FLOAT);
|
||||
m_biasFactor = 0.3f;
|
||||
m_relaxationFactor = 1.0f;
|
||||
m_limitSoftness = 0.9f;
|
||||
@@ -162,8 +162,8 @@ m_useReferenceFrameA(useReferenceFrameA)
|
||||
m_rbBFrame.getOrigin() = m_rbA.getCenterOfMassTransform()(m_rbAFrame.getOrigin());
|
||||
|
||||
//start with free
|
||||
m_lowerLimit = btScalar(1e30);
|
||||
m_upperLimit = btScalar(-1e30);
|
||||
m_lowerLimit = btScalar(BT_LARGE_FLOAT);
|
||||
m_upperLimit = btScalar(-BT_LARGE_FLOAT);
|
||||
m_biasFactor = 0.3f;
|
||||
m_relaxationFactor = 1.0f;
|
||||
m_limitSoftness = 0.9f;
|
||||
|
||||
@@ -1147,8 +1147,8 @@ void btDiscreteDynamicsWorld::debugDrawObject(const btTransform& worldTransform,
|
||||
btConcaveShape* concaveMesh = (btConcaveShape*) shape;
|
||||
|
||||
///@todo pass camera, for some culling? no -> we are not a graphics lib
|
||||
btVector3 aabbMax(btScalar(1e30),btScalar(1e30),btScalar(1e30));
|
||||
btVector3 aabbMin(btScalar(-1e30),btScalar(-1e30),btScalar(-1e30));
|
||||
btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT));
|
||||
btVector3 aabbMin(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT));
|
||||
|
||||
DebugDrawcallback drawCallback(getDebugDrawer(),worldTransform,color);
|
||||
concaveMesh->processAllTriangles(&drawCallback,aabbMin,aabbMax);
|
||||
@@ -1159,8 +1159,8 @@ void btDiscreteDynamicsWorld::debugDrawObject(const btTransform& worldTransform,
|
||||
{
|
||||
btConvexTriangleMeshShape* convexMesh = (btConvexTriangleMeshShape*) shape;
|
||||
//todo: pass camera for some culling
|
||||
btVector3 aabbMax(btScalar(1e30),btScalar(1e30),btScalar(1e30));
|
||||
btVector3 aabbMin(btScalar(-1e30),btScalar(-1e30),btScalar(-1e30));
|
||||
btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT));
|
||||
btVector3 aabbMin(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT));
|
||||
//DebugDrawcallback drawCallback;
|
||||
DebugDrawcallback drawCallback(getDebugDrawer(),worldTransform,color);
|
||||
convexMesh->getMeshInterface()->InternalProcessAllTriangles(&drawCallback,aabbMin,aabbMax);
|
||||
|
||||
Reference in New Issue
Block a user