TDME2  1.9.200
Face.cpp
Go to the documentation of this file.
2 
3 #include <tdme/tdme.h>
5 
8 
9 Face::Face()
10 {
11 }
12 
13 Face::Face(Node* node, int32_t vi0, int32_t vi1, int32_t vi2, int32_t ni0, int32_t ni1, int32_t ni2)
14 {
15  this->node = node;
16  vertexIndices[0] = vi0;
17  vertexIndices[1] = vi1;
18  vertexIndices[2] = vi2;
19  normalIndices[0] = ni0;
20  normalIndices[1] = ni1;
21  normalIndices[2] = ni2;
22 }
23 
24 Face::Face(Node* node, int32_t vi0, int32_t vi1, int32_t vi2, int32_t ni0, int32_t ni1, int32_t ni2, int32_t vt0, int32_t vt1, int32_t vt2)
25 {
26  this->node = node;
27  vertexIndices[0] = vi0;
28  vertexIndices[1] = vi1;
29  vertexIndices[2] = vi2;
30  normalIndices[0] = ni0;
31  normalIndices[1] = ni1;
32  normalIndices[2] = ni2;
33  textureCoordinateIndices[0] = vt0;
34  textureCoordinateIndices[1] = vt1;
35  textureCoordinateIndices[2] = vt2;
36 }
37 
38 void Face::setNormalIndices(int32_t ni0, int32_t ni1, int32_t ni2)
39 {
40  normalIndices[0] = ni0;
41  normalIndices[1] = ni1;
42  normalIndices[2] = ni2;
43 }
44 
45 void Face::setTextureCoordinateIndices(int32_t vt0, int32_t vt1, int32_t vt2)
46 {
47  textureCoordinateIndices[0] = vt0;
48  textureCoordinateIndices[1] = vt1;
49  textureCoordinateIndices[2] = vt2;
50 }
51 
52 void Face::setTangentIndices(int32_t ti0, int32_t ti1, int32_t ti2)
53 {
54  tangentIndices[0] = ti0;
55  tangentIndices[1] = ti1;
56  tangentIndices[2] = ti2;
57 }
58 
59 void Face::setBitangentIndices(int32_t bi0, int32_t bi1, int32_t bi2)
60 {
61  bitangentIndices[0] = bi0;
62  bitangentIndices[1] = bi1;
63  bitangentIndices[2] = bi2;
64 }
65 
66 void Face::setIndexedRenderingIndices(const array<int32_t, 3>& indices)
67 {
68  vertexIndices = indices;
69  normalIndices = indices;
70  textureCoordinateIndices = indices;
71  tangentIndices = indices;
72  bitangentIndices = indices;
73 }
74 
76  auto vertexIndicesCopy = vertexIndices;
77  auto normalIndicesCopy = normalIndices;
78  auto textureCoordinateIndicesCopy = textureCoordinateIndices;
79  auto tangentIndicesCopy = tangentIndices;;
80  auto bitangentIndicesCopy = bitangentIndices;
81  vertexIndices[0] = vertexIndicesCopy[2];
82  vertexIndices[2] = vertexIndicesCopy[0];
83  normalIndices[0] = normalIndicesCopy[2];
84  normalIndices[2] = normalIndicesCopy[0];
85  textureCoordinateIndices[0] = textureCoordinateIndicesCopy[2];
86  textureCoordinateIndices[2] = textureCoordinateIndicesCopy[0];
87  tangentIndices[0] = tangentIndicesCopy[2];
88  tangentIndices[2] = tangentIndicesCopy[0];
89  bitangentIndices[0] = bitangentIndicesCopy[2];
90  bitangentIndices[2] = bitangentIndicesCopy[0];
91 }
Represents a model face, consisting of vertex, normal, tangent and bitangent vectors,...
Definition: Face.h:18
void changeFrontFace()
Change front face from counter clock wise to clock wise or clock wise to counter clock wise.
Definition: Face.cpp:75
array< int32_t, 3 > textureCoordinateIndices
Definition: Face.h:25
void setIndexedRenderingIndices(const array< int32_t, 3 > &indices)
Prepared this face for indexed rendering.
Definition: Face.cpp:66
array< int32_t, 3 > vertexIndices
Definition: Face.h:23
void setNormalIndices(int32_t ni0, int32_t ni1, int32_t ni2)
Set normal indices.
Definition: Face.cpp:38
void setTextureCoordinateIndices(int32_t vt0, int32_t vt1, int32_t vt2)
Set up optional texture coordinate indices.
Definition: Face.cpp:45
Face()
Public constructor.
Definition: Face.cpp:9
void setTangentIndices(int32_t ti0, int32_t ti1, int32_t ti2)
Set tangent indices.
Definition: Face.cpp:52
array< int32_t, 3 > tangentIndices
Definition: Face.h:26
array< int32_t, 3 > normalIndices
Definition: Face.h:24
void setBitangentIndices(int32_t bi0, int32_t bi1, int32_t bi2)
Set bitangent indices.
Definition: Face.cpp:59
array< int32_t, 3 > bitangentIndices
Definition: Face.h:27
Model node.
Definition: Node.h:32