/* model/collisionmodel.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include "sys/sys.h" #include "model/collisionmodel.h" namespace model { CollisionModel::CollisionModel(const std::string & label) : collisionmodel_label(label) { } CollisionModel::~CollisionModel() { // delete meshes for (CollisionMeshes::iterator it = collisionmodel_meshes.begin(); it != collisionmodel_meshes.end(); it++) { delete (*it); (*it) = 0; } collisionmodel_meshes.clear(); } void CollisionModel::add_mesh(CollisionMesh *mesh) { collisionmodel_meshes.push_back(mesh); } /* ---- static methods --------------------------------------------- */ CollisionModel::Registry CollisionModel::collisionmodel_registry; void CollisionModel::init() { clear(); } void CollisionModel::shutdown() { clear(); } CollisionModel *CollisionModel::find(const std::string & label) { for (Registry::iterator it = collisionmodel_registry.begin(); it != collisionmodel_registry.end(); it++) { CollisionModel *cmodel = (*it); if (cmodel->label().compare(label) == 0) return cmodel; } return 0; } void CollisionModel::clear() { for (Registry::iterator it = collisionmodel_registry.begin(); it != collisionmodel_registry.end(); it++) { CollisionModel *collisionmodel = (*it); delete collisionmodel; (*it) = 0; } collisionmodel_registry.clear(); con_debug << " clearing collision models" << std::endl; } void CollisionModel::add(CollisionModel *collisionmodel) { collisionmodel_registry.push_back(collisionmodel); } } //namespace model