Implement deRegisterConstraint and deRegisterRigidBody.

Add getName method for querying the dom for the name of a constraint or rigid body.
This commit is contained in:
john.mccutchan
2008-03-13 20:57:23 +00:00
parent fe5386a5c8
commit fde2551637
2 changed files with 66 additions and 2 deletions

View File

@@ -3189,6 +3189,35 @@ void ColladaConverter::registerRigidBody(btRigidBody* body, const char* name)
}
void ColladaConverter::deRegisterRigidBody(btRigidBody* body)
{
btRigidBodyColladaInfo* rbci = findRigidBodyColladaInfo (body);
if (!rbci)
return;
daeElement::removeFromParent (rbci->m_instanceRigidBody);
daeElement::removeFromParent (rbci->m_domRigidBody);
daeElement::removeFromParent (rbci->m_node);
delete rbci;
// remove from map
int uid = body->getBroadphaseProxy()->getUid();
btHashKeyPtr<btRigidBodyColladaInfo*> tmpKey(uid);
m_rbUserInfoHashMap.remove (tmpKey);
}
const char* ColladaConverter::getName (btRigidBody* body)
{
btRigidBodyColladaInfo* rbci = findRigidBodyColladaInfo (body);
if (!rbci)
return NULL;
return rbci->m_node->getSid();
}
void ColladaConverter::registerConstraint(btTypedConstraint* constraint, const char* name)
{
@@ -3203,3 +3232,38 @@ void ColladaConverter::registerConstraint(btTypedConstraint* constraint, const c
rcci->m_domRigidConstraint->setSid(name);
rcci->m_domInstanceRigidConstraint->setConstraint (name);
}
void ColladaConverter::deRegisterConstraint(btTypedConstraint* constraint)
{
if (constraint->getConstraintType () != D6_CONSTRAINT_TYPE)
{
return;
}
btRigidConstraintColladaInfo* rcci = findRigidConstraintColladaInfo(constraint);
if (!rcci)
{
return;
}
daeElement::removeFromParent (rcci->m_domInstanceRigidConstraint);
daeElement::removeFromParent (rcci->m_domRigidConstraint);
delete rcci;
// remove from map
int uid = constraint->getUid();
btHashKeyPtr<btRigidConstraintColladaInfo*> tmpKey(uid);
m_constraintUserInfoHashMap.remove (tmpKey);
}
const char* ColladaConverter::getName (btTypedConstraint* constraint)
{
btRigidConstraintColladaInfo* rcci = findRigidConstraintColladaInfo (constraint);
if (!rcci)
return NULL;
return rcci->m_domRigidConstraint->getSid();
}