- quick workaround in the COLLADA-DOM to handle INF/-INF
- started few lines into COLLADA constraint importing
This commit is contained in:
@@ -1499,13 +1499,55 @@ int main(int argc,char** argv)
|
|||||||
|
|
||||||
} //for each instance_rigid_body
|
} //for each instance_rigid_body
|
||||||
|
|
||||||
|
|
||||||
|
} //for each physics model
|
||||||
|
|
||||||
//we don't handle constraints just yet
|
//we don't handle constraints just yet
|
||||||
for (int c=0;c<instance_physicsModelRef->getInstance_rigid_constraint_array().getCount();i++)
|
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
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,9 +25,18 @@ daeMetaAttribute::set(daeElement* e, daeString s)
|
|||||||
daeErrorHandler::get()->handleWarning(msg);
|
daeErrorHandler::get()->handleWarning(msg);
|
||||||
}
|
}
|
||||||
else if ( strcmp(s, "INF") == 0 ) {
|
else if ( strcmp(s, "INF") == 0 ) {
|
||||||
char msg[256];
|
//quick workaround for http://sourceforge.net/tracker/index.php?func=detail&aid=1530106&group_id=157838&atid=805424
|
||||||
sprintf(msg, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
|
s = "999999.9";
|
||||||
daeErrorHandler::get()->handleWarning( msg );
|
//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));
|
_type->stringToMemory((char*)s, getWritableMemory(e));
|
||||||
@@ -50,9 +59,18 @@ daeMetaArrayAttribute::set(daeElement* e, daeString s)
|
|||||||
daeErrorHandler::get()->handleWarning(msg);
|
daeErrorHandler::get()->handleWarning(msg);
|
||||||
}
|
}
|
||||||
else if ( strcmp(s, "INF") == 0 ) {
|
else if ( strcmp(s, "INF") == 0 ) {
|
||||||
char msg[256];
|
s = "999999.9";
|
||||||
sprintf(msg, "INF encountered while setting %s attribute in %s element.\n", (daeString)_name, (daeString)_container->getName() );
|
//quick workaround for http://sourceforge.net/tracker/index.php?func=detail&aid=1530106&group_id=157838&atid=805424
|
||||||
daeErrorHandler::get()->handleWarning( msg );
|
//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);
|
daeArray* array = (daeArray*)getWritableMemory(e);
|
||||||
|
|||||||
Reference in New Issue
Block a user