From 035653e94a3d74b8f18c993034199d7cd08a895a Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Fri, 21 Jan 2011 14:41:35 +0000 Subject: Support structures for complex entity collision, renamed sv_arrysize cvar to mem_vertex. --- src/model/collisionmesh.h | 102 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/model/collisionmesh.h (limited to 'src/model/collisionmesh.h') diff --git a/src/model/collisionmesh.h b/src/model/collisionmesh.h new file mode 100644 index 0000000..9efd21a --- /dev/null +++ b/src/model/collisionmesh.h @@ -0,0 +1,102 @@ +/* + model/collisionmesh.h + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_MODEL_COLLISIONMESH_H__ +#define __INCLUDED_MODEL_COLLISIONMESH_H__ + +#include "math/mathlib.h" + +#include "BulletCollision/CollisionShapes/btTriangleMesh.h" + +#include +#include + +namespace model +{ + +class CollisionMesh +{ +public: + + /// type definition for the material registry + typedef std::map Registry; + + CollisionMesh(const std::string &name); + + ~CollisionMesh(); + + /* ---- inspectors ----------------------------------------- */ + + inline const std::string &name() const { + return collisionmesh_name; + } + + /** + * @brief the number of triangles in the collision mesh + */ + inline size_t size() const { + return collisionmesh_size; + } + + static bool initialized() { + return collisionmesh_initialized; + } + + /** + * @brief the bullet triangle mesh object + */ + inline btTriangleMesh *triangles() { + return collisionmesh_triangles; + } + + /* ---- mutators ------------------------------------------- */ + + /** + * @brief add a triangle to the collision mesh + */ + void add_triangle(const math::Vector3f & v0, const math::Vector3f & v1, const math::Vector3f & v2); + + /* ---- static ----------------------------------------------------- */ + + /** + * @brief initialize collisionmesh registry + */ + static void init(); + + /** + * @brief shutdown collisionmesh registry + */ + static void shutdown(); + + /** + * @brief clear collisionmesh registry + */ + static void clear(); + + /** + * @brief find a collisionmesh in the registry + */ + static CollisionMesh *find(const std::string &name); + + /** + * @brief add a collisionmesh to the registry + */ + static void add(CollisionMesh *collisionmesh); + +private: + + /// the materials registry + static Registry collisionmesh_registry; + static bool collisionmesh_initialized; + + std::string collisionmesh_name; + size_t collisionmesh_size; + btTriangleMesh *collisionmesh_triangles; +}; + +} // namespace model + +#endif // __INCLUDED_MODEL_COLLISIONMESH_H__ -- cgit v1.2.3