/* model/collisionmesh.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/collisionmesh.h" 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::~CollisionMesh() { delete collisionmesh_triangles; } void CollisionMesh::set_type(const FragmentGroup::Type type) { collisionmesh_type = type; } void CollisionMesh::add_triangle(const math::Vector3f & v0, const math::Vector3f & v1, const math::Vector3f & v2) { collisionmesh_triangles->addTriangle( to_btVector3(v0), to_btVector3(v1), to_btVector3(v2), true ); collisionmesh_size++; } } // namespace model