int Level::loadFrom(const Loader& loader) { cameras.clear(); meshes.clear(); materials.clear(); lights.clear(); for (auto e : mesh_objects) { delete e; } mesh_objects.clear(); for (auto e : game_objects) { delete e; } game_objects.clear(); if (physics_world != nullptr) delete physics_world; physics_world = new b2World(b2Vec2(0.0f, -9.81f)); physics_world->SetContinuousPhysics(true); physics_world->SetContactListener(new DungeonContactListener()); return loader.processScene(*this); }