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__
|