diff --git a/OdeWorld.cc b/OdeWorld.cc index 3420c85..e0daea4 100644 --- a/OdeWorld.cc +++ b/OdeWorld.cc @@ -98,10 +98,8 @@ dBodyID OdeWorld::createBody() return id; } -void OdeWorld::destroyBody(dBodyID body) +void OdeWorld::enableAllBodies() { - m_bodies.erase(body); - dBodyDestroy(body); for (std::map::iterator it = m_bodies.begin(); it != m_bodies.end(); it++) @@ -110,6 +108,13 @@ void OdeWorld::destroyBody(dBodyID body) } } +void OdeWorld::destroyBody(dBodyID body) +{ + m_bodies.erase(body); + dBodyDestroy(body); + enableAllBodies(); +} + OdeWorld::Object::Object(bool is_static, OdeWorld * ode_world, dWorldID world, dSpaceID space, float scale) diff --git a/OdeWorld.h b/OdeWorld.h index d6b8fd9..ea7e248 100644 --- a/OdeWorld.h +++ b/OdeWorld.h @@ -65,8 +65,10 @@ class OdeWorld void setGravity(float x, float y, float z) { dWorldSetGravity(m_world, x, y, z); + enableAllBodies(); } void step(); + void enableAllBodies(); friend void OdeWorld_collide_callback(void * data, dGeomID o1, dGeomID o2);