diff options
author | Stijn Buys <ingar@osirion.org> | 2011-05-06 17:08:21 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2011-05-06 17:08:21 +0000 |
commit | e7a0b54c4717afdfa12a8847d5bc72b7b68290b4 (patch) | |
tree | 015dc7cc0f75c4405f5d07e137533d5dbc761598 /src/model/collisionmesh.cc | |
parent | ebe064bf159a5c6e90f2bbe902efa16c6e654ff8 (diff) |
Import submodel clip
Diffstat (limited to 'src/model/collisionmesh.cc')
-rw-r--r-- | src/model/collisionmesh.cc | 49 |
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) |