/* 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[collisionmesh->name()] = 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).second; } collisionmesh_registry.clear(); } CollisionMesh *CollisionMesh::find(const std::string &name) { for (Registry::iterator i = collisionmesh_registry.begin(); i != collisionmesh_registry.end(); ++i) { if ((*i).first.compare(name) == 0) return (*i).second; } return 0; } CollisionMesh::CollisionMesh(const std::string &name) : collisionmesh_name(name) { collisionmesh_size = 0; // btTriangleMesh (bool use32bitIndices=true, bool use4componentVertices=true) collisionmesh_triangles = new btTriangleMesh(true, false); } CollisionMesh::~CollisionMesh() { delete collisionmesh_triangles; } 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(v1) ); collisionmesh_size += 1; } void CollisionMesh::translate(const math::Vector3f translation) { /* IndexedMeshArray & indexes = collisionmesh_triangles->getIndexedMeshArray(); for (size_t i =0; i < indexes.size(); i++) { btIndexedMesh & mesh = indexes[i]; } */ } } // namespace model