Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/collisionmodel.cc')
-rw-r--r--src/model/collisionmodel.cc76
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