/* model/quad.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_QUAD_H__ #define __INCLUDED_MODEL_QUAD_H__ #include "math/vector2f.h" #include "math/vector3f.h" namespace model { /// a model quad class Quad { public: /** * @brief a new quad with 4 vertices * this constructor assigns the face normal to every vertex normal */ Quad(const math::Vector3f &v0, const math::Vector3f &v1, const math::Vector3f &v2, const math::Vector3f &v3, const math::Vector3f &normal, const bool detail = false); /// delete quad ~Quad(); /// quad vertex 0 inline math::Vector3f & v0() { return quad_v0; } /// quad vertex 0 normal inline math::Vector3f & n0() { return quad_n0; } /// quad vertex 0 texture coordinates inline math::Vector2f & t0() { return quad_t0; } /// quad vertex 1 inline math::Vector3f & v1() { return quad_v1; } /// quad vertex 1 normal inline math::Vector3f & n1() { return quad_n1; } /// quad vertex 1 texture coordinates inline math::Vector2f & t1() { return quad_t1; } /// quad vertex 2 inline math::Vector3f & v2() { return quad_v2; } /// quad vertex 2 normal inline math::Vector3f & n2() { return quad_n2; } /// quad vertex 2 texture coordinates inline math::Vector2f & t2() { return quad_t2; } /// quad vertex 3 inline math::Vector3f & v3() { return quad_v3; } /// quad vertex 3 normal inline math::Vector3f & n3() { return quad_n3; } /// quad vertex 3 texture coordinates inline math::Vector2f & t3() { return quad_t3; } /// indidcates if this quad was generated from a detail brush inline bool detail() const { return quad_detail; } private: math::Vector3f quad_v0; math::Vector3f quad_n0; math::Vector2f quad_t0; math::Vector3f quad_v1; math::Vector3f quad_n1; math::Vector2f quad_t1; math::Vector3f quad_v2; math::Vector3f quad_n2; math::Vector2f quad_t2; math::Vector3f quad_v3; math::Vector3f quad_n3; math::Vector2f quad_t3; bool quad_detail; }; } #endif // __INCLUDED_MODEL_QUAD_H__