Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
blob: 47288664f0749508d72e4a6531c8783ad6a3c5ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
   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;
	}

	/// face normal
	inline math::Vector3f &normal() {
		return quad_normal;
	}

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;
				
	math::Vector3f 		quad_normal;
	bool			quad_detail;
};

}

#endif // __INCLUDED_MODEL_QUAD_H__