diff options
author | Stijn Buys <ingar@osirion.org> | 2011-05-05 18:08:45 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2011-05-05 18:08:45 +0000 |
commit | 1687737ca713cd0baeca3cf79950ef4877640c99 (patch) | |
tree | f6cfd31c850cec95da491036f1dd772397128549 /src/model/collisionmodel.cc | |
parent | 09d68d3d1d77d45343e3562c0b5e0cd6816d47d3 (diff) |
Initial support for btCompoundShape and the infrastructure required to accomodate multiple meshes per collision model,
added prototype files for signals
Diffstat (limited to 'src/model/collisionmodel.cc')
-rw-r--r-- | src/model/collisionmodel.cc | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/model/collisionmodel.cc b/src/model/collisionmodel.cc new file mode 100644 index 0000000..d52c9bc --- /dev/null +++ b/src/model/collisionmodel.cc @@ -0,0 +1,76 @@ +/* + 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() +{ + // clear the list of meshes, do not delete the meshes + for (CollisionMeshes::iterator it = collisionmodel_meshes.begin(); it != collisionmodel_meshes.end(); 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() +{ + CollisionMesh::init(); + clear(); +} + +void CollisionModel::shutdown() +{ + clear(); + CollisionMesh::shutdown(); +} + +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
\ No newline at end of file |