/* model/triangle.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_TRIANGLE_H__ #define __INCLUDED_MODEL_TRIANGLE_H__ #include "math/vector2f.h" #include "math/vector3f.h" namespace model { /// a model triangle class Triangle { public: /** * @brief a new triangle with 3 vertices * this constructor is used by the ASE reader sets the detail flag to false */ Triangle(const math::Vector3f &v0, const math::Vector3f &v1, const math::Vector3f &v2); /** * @brief a new triangle with 3 vertices * this constructor is used by the MAP reader and assigns the face normal to every vertex normal */ Triangle(const math::Vector3f &v0,const math::Vector3f &v1, const math::Vector3f &v2, const math::Vector3f &normal, const bool detail = false); /// delete triangle ~Triangle(); /// triangle vertex 0 inline math::Vector3f & v0() { return triangle_v0; } /// triangle vertex 0 normal inline math::Vector3f & n0() { return triangle_n0; } /// triangle vertex 0 texture coordinates inline math::Vector2f & t0() { return triangle_t0; } /// triangle vertex 1 inline math::Vector3f & v1() { return triangle_v1; } /// triangle vertex 1 normal inline math::Vector3f & n1() { return triangle_n1; } /// triangle vertex 1 texture coordinates inline math::Vector2f & t1() { return triangle_t1; } /// triangle vertex 2 inline math::Vector3f & v2() { return triangle_v2; } /// triangle vertex 2 normal inline math::Vector3f & n2() { return triangle_n2; } /// triangle vertex 2 texture coordinates inline math::Vector2f & t2() { return triangle_t2; } /// indidcates if this triangle was generated from a detail brush inline bool detail() const { return triangle_detail; } /// face normal inline math::Vector3f &normal() { return triangle_normal; } private: math::Vector3f triangle_v0; math::Vector3f triangle_n0; math::Vector2f triangle_t0; math::Vector3f triangle_v1; math::Vector3f triangle_n1; math::Vector2f triangle_t1; math::Vector3f triangle_v2; math::Vector3f triangle_n2; math::Vector2f triangle_t2; math::Vector3f triangle_normal; bool triangle_detail; }; } #endif // __INCLUDED_MODEL_TRIANGLE_H__