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();
}

View File

@@ -99,7 +99,6 @@ protected:
btHashMap<btHashKeyPtr<btRigidBodyColladaInfo*>,btRigidBodyColladaInfo*> m_rbUserInfoHashMap;
btHashMap<btHashKeyPtr<btRigidConstraintColladaInfo*>,btRigidConstraintColladaInfo*> m_constraintUserInfoHashMap;
class DAE* m_collada;
class domCOLLADA* m_dom;
char* m_filename;
@@ -191,10 +190,11 @@ public:
void registerRigidBody(btRigidBody* body, const char* name);
void deRegisterRigidBody(btRigidBody* body);
const char* getName (btRigidBody* body);
void registerConstraint(btTypedConstraint* constraint, const char* name);
void deRegisterConstraint(btTypedConstraint* constraint);
const char* getName (btTypedConstraint* constraint);
///those virtuals are called by load and save.
virtual btTypedConstraint* createUniversalD6Constraint(