Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2011-05-06 17:08:21 +0000
committerStijn Buys <ingar@osirion.org>2011-05-06 17:08:21 +0000
commite7a0b54c4717afdfa12a8847d5bc72b7b68290b4 (patch)
tree015dc7cc0f75c4405f5d07e137533d5dbc761598 /src/model/collisionmesh.cc
parentebe064bf159a5c6e90f2bbe902efa16c6e654ff8 (diff)
Import submodel clip
Diffstat (limited to 'src/model/collisionmesh.cc')
-rw-r--r--src/model/collisionmesh.cc49
1 files changed, 16 insertions, 33 deletions
diff --git a/src/model/collisionmesh.cc b/src/model/collisionmesh.cc
index e341e9f..808da63 100644
--- a/src/model/collisionmesh.cc
+++ b/src/model/collisionmesh.cc
@@ -9,53 +9,36 @@
namespace model {
-CollisionMesh::Registry CollisionMesh::collisionmesh_registry;
-bool CollisionMesh::collisionmesh_initialized = false;
-
-void CollisionMesh::init()
-{
- clear();
- collisionmesh_initialized = true;
-}
-
-void CollisionMesh::shutdown()
-{
- clear();
- collisionmesh_initialized = false;
-}
-
-void CollisionMesh::add(CollisionMesh *collisionmesh)
-{
- collisionmesh_registry.push_back(collisionmesh);
-}
-
-void CollisionMesh::clear()
-{
- con_debug << " clearing collision meshes" << std::endl;
-
- for (Registry::iterator i = collisionmesh_registry.begin(); i != collisionmesh_registry.end(); ++i) {
- delete (*i);
- (*i) = 0;
- }
-
- collisionmesh_registry.clear();
-}
-
CollisionMesh::CollisionMesh()
{
collisionmesh_type = FragmentGroup::None;
collisionmesh_size = 0;
// btTriangleMesh (bool use32bitIndices=true, bool use4componentVertices=true)
collisionmesh_triangles = new btTriangleMesh(true, false);
+ collisionmesh_owns_triangles = true;
collisionmesh_scale = 1.0f;
collisionmesh_speed = 0.0f;
collisionmesh_distance = 0.0f;
}
+CollisionMesh::CollisionMesh(const CollisionMesh &other)
+{
+ collisionmesh_type = other.type();
+ collisionmesh_size = other.size();
+ collisionmesh_triangles = other.collisionmesh_triangles;
+ collisionmesh_owns_triangles = false;
+
+ collisionmesh_scale = other.scale();
+ collisionmesh_speed = other.speed();
+ collisionmesh_distance = other.distance();
+}
CollisionMesh::~CollisionMesh()
{
- delete collisionmesh_triangles;
+ if (collisionmesh_owns_triangles)
+ delete collisionmesh_triangles;
+
+ collisionmesh_triangles = 0;
}
void CollisionMesh::set_params(const FragmentGroup *group)