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:
@@ -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();
|
||||
}
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user