added a destructor to OdeWorld::Object to clean up the ODE body and geometries

git-svn-id: svn://anubis/misc/OdeWorld@170 bd8a9e45-a331-0410-811e-c64571078777
This commit is contained in:
josh 2009-10-12 15:39:38 +00:00
parent 8f95a9fed4
commit e9d8872826
2 changed files with 9 additions and 1 deletions

View File

@ -168,6 +168,14 @@ OdeWorld::Object::Object(const OdeWorld::Object & orig)
} }
} }
OdeWorld::Object::~Object()
{
for (int i = 0, sz = m_geoms.size(); i < sz; i++)
dGeomDestroy(m_geoms[i]);
if (m_body != 0)
dBodyDestroy(m_body);
}
dGeomID OdeWorld::Object::cloneGeom(dGeomID geom, dBodyID body) dGeomID OdeWorld::Object::cloneGeom(dGeomID geom, dBodyID body)
{ {
dGeomID id = 0; dGeomID id = 0;

View File

@ -18,6 +18,7 @@ class OdeWorld
public: public:
Object(bool is_static, dWorldID world, dSpaceID space); Object(bool is_static, dWorldID world, dSpaceID space);
Object(const Object & orig); Object(const Object & orig);
~Object();
void loadPhy(const std::string & path); void loadPhy(const std::string & path);
void setPosition(double x, double y, double z); void setPosition(double x, double y, double z);
@ -62,7 +63,6 @@ class OdeWorld
dWorldID m_world; dWorldID m_world;
dSpaceID m_space; dSpaceID m_space;
dJointGroupID m_contactJointGroup; dJointGroupID m_contactJointGroup;
std::map<std::string, dGeomID> m_objects;
}; };
#endif #endif