diff options
author | Stijn Buys <ingar@osirion.org> | 2011-01-21 14:41:35 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2011-01-21 14:41:35 +0000 |
commit | 035653e94a3d74b8f18c993034199d7cd08a895a (patch) | |
tree | 6acc56c14a86b499657b6e7faaf50f9e6f7ff57d /src/model/collisionmesh.h | |
parent | 4af61dca099d2b7010d4fa83833ceeeef01b0b0f (diff) |
Support structures for complex entity collision,
renamed sv_arrysize cvar to mem_vertex.
Diffstat (limited to 'src/model/collisionmesh.h')
-rw-r--r-- | src/model/collisionmesh.h | 102 |
1 files changed, 102 insertions, 0 deletions
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 <string> +#include <map> + +namespace model +{ + +class CollisionMesh +{ +public: + + /// type definition for the material registry + typedef std::map<std::string, CollisionMesh *> 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__ |