- quick workaround in the COLLADA-DOM to handle INF/-INF

- started few lines into COLLADA constraint importing
This commit is contained in:
ejcoumans
2006-07-28 02:47:26 +00:00
parent bb4b099583
commit 63594284c3
2 changed files with 69 additions and 9 deletions

View File

@@ -1499,13 +1499,55 @@ int main(int argc,char** argv)
} //for each instance_rigid_body
} //for each physics model
//we don't handle constraints just yet
for (int c=0;c<instance_physicsModelRef->getInstance_rigid_constraint_array().getCount();i++)
//we don't handle constraints just yet
for (int m=0;m<physicsSceneRef->getInstance_physics_model_array().getCount();m++)
{
domInstance_physics_modelRef instance_physicsModelRef = physicsSceneRef->getInstance_physics_model_array()[m];
daeElementRef ref = instance_physicsModelRef->getUrl().getElement();
domPhysics_modelRef model = *(domPhysics_modelRef*)&ref;
for (int c=0;c<instance_physicsModelRef->getInstance_rigid_constraint_array().getCount();c++)
{
domInstance_rigid_constraintRef constraintRef = instance_physicsModelRef->getInstance_rigid_constraint_array().get(c);
xsNCName constraintName = constraintRef->getConstraint();
if (constraintName && model)
{
//try to find the rigid body
int numConstraints= model->getRigid_constraint_array().getCount();
for (int r=0;r<numConstraints;r++)
{
domRigid_constraintRef rigidConstraintRef = model->getRigid_constraint_array()[r];
if (rigidConstraintRef->getSid() && !strcmp(rigidConstraintRef->getSid(),constraintName))
{
/*
//two bodies
rigidConstraintRef->getRef_attachment();
rigidConstraintRef->getAttachment();
const domRigid_constraint::domTechnique_commonRef commonRef = rigidConstraintRef->getTechnique_common();
domFloat3 flMax = commonRef->getLimits()->getLinear()->getMax()->getValue();
SimdVector3 maxLinearLimit(flMax.get(0),flMax.get(1),flMax.get(2));
domFloat3 flMin = commonRef->getLimits()->getLinear()->getMin()->getValue();
SimdVector3 minLinearLimit(flMin.get(0),flMin.get(1),flMin.get(2));
commonRef->getLimits()->getSwing_cone_and_twist();
*/
}
}
}
}
}
} //2nd time, for each physics model
}
}

View File

@@ -25,9 +25,18 @@ daeMetaAttribute::set(daeElement* e, daeString s)
daeErrorHandler::get()->handleWarning(msg);
}
else if ( strcmp(s, "INF") == 0 ) {
char msg[256];
sprintf(msg, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
daeErrorHandler::get()->handleWarning( msg );
//quick workaround for http://sourceforge.net/tracker/index.php?func=detail&aid=1530106&group_id=157838&atid=805424
s = "999999.9";
//char msg[256];
//sprintf(msg, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
//daeErrorHandler::get()->handleWarning( msg );
}
else if ( strcmp(s, "-INF") == 0 ) {
s = "-999999.9";
//quick workaround for http://sourceforge.net/tracker/index.php?func=detail&aid=1530106&group_id=157838&atid=805424
//char msg[256];
//sprintf(msg, "-INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
//daeErrorHandler::get()->handleWarning( msg );
}
}
_type->stringToMemory((char*)s, getWritableMemory(e));
@@ -50,9 +59,18 @@ daeMetaArrayAttribute::set(daeElement* e, daeString s)
daeErrorHandler::get()->handleWarning(msg);
}
else if ( strcmp(s, "INF") == 0 ) {
char msg[256];
sprintf(msg, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
daeErrorHandler::get()->handleWarning( msg );
s = "999999.9";
//quick workaround for http://sourceforge.net/tracker/index.php?func=detail&aid=1530106&group_id=157838&atid=805424
//char msg[256];
//sprintf(msg, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
//daeErrorHandler::get()->handleWarning( msg );
}
else if ( strcmp(s, "-INF") == 0 ) {
s = "-999999.9";
//quick workaround for http://sourceforge.net/tracker/index.php?func=detail&aid=1530106&group_id=157838&atid=805424
//char msg[256];
//sprintf(msg, "-INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
//daeErrorHandler::get()->handleWarning( msg );
}
}
daeArray* array = (daeArray*)getWritableMemory(e);