diff options
Diffstat (limited to 'src/Data/Triangle.h')
-rw-r--r-- | src/Data/Triangle.h | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/src/Data/Triangle.h b/src/Data/Triangle.h index 03e0fa4..e3e6130 100644 --- a/src/Data/Triangle.h +++ b/src/Data/Triangle.h @@ -21,17 +21,68 @@ #define ZOOMEDIT_DATA_TRIANGLE_H_ #include "Vertex.h" +#include "TexCoords.h" namespace ZoomEdit { namespace Data { class Triangle { private: - Vertex a, b, c; - Vector na, nb, nc; + Vertex vertices[3]; + Vector normals[3]; + TexCoords texCoords[3]; + bool visible; public: - Triangle(Vertex a0, Vertex b0, Vertex c0) : a(a0), b(b0), c(c0) {} + Triangle(bool vis = true) : visible(vis) {} + + Triangle(Vertex v0, Vertex v1, Vertex v2, bool vis = true) : visible(vis) { + vertices[0] = v0; vertices[1] = v1; vertices[2] = v2; + } + + Triangle(Vertex v[3], bool vis = true) : visible(vis) { + vertices[0] = v[0]; vertices[1] = v[1]; vertices[2] = v[2]; + } + + Triangle(Vertex v[3], Vector n[3], bool vis = true) : visible(vis) { + vertices[0] = v[0]; vertices[1] = v[1]; vertices[2] = v[2]; + normals[0] = n[0]; normals[1] = n[1]; normals[2] = n[2]; + } + + Triangle(Vertex v[3], TexCoords t[3], bool vis = true) : visible(vis) { + vertices[0] = v[0]; vertices[1] = v[1]; vertices[2] = v[2]; + texCoords[0] = t[0]; texCoords[1] = t[1]; texCoords[2] = t[2]; + } + + Triangle(Vertex v[3], Vector n[3], TexCoords t[3], bool vis = true) : visible(vis) { + vertices[0] = v[0]; vertices[1] = v[1]; vertices[2] = v[2]; + normals[0] = n[0]; normals[1] = n[1]; normals[2] = n[2]; + texCoords[0] = t[0]; texCoords[1] = t[1]; texCoords[2] = t[2]; + } + + Vertex& getVertex(unsigned int i) {return vertices[i%3];} + const Vertex& getVertex(unsigned int i) const {return vertices[i%3];} + void setVertex(unsigned int i, Vertex v) {vertices[i%3] = v;} + void setVertices(Vertex v[3]) { + vertices[0] = v[0]; vertices[1] = v[1]; vertices[2] = v[2]; + } + + Vector& getNormal(unsigned int i) {return normals[i%3];} + const Vector& getNormal(unsigned int i) const {return normals[i%3];} + void setNormal(unsigned int i, Vector n) {normals[i%3] = n;} + void setNormals(Vector n[3]) { + normals[0] = n[0]; normals[1] = n[1]; normals[2] = n[2]; + } + + TexCoords& getTexCoords(unsigned int i) {return texCoords[i%3];} + const TexCoords& getTexCoords(unsigned int i) const {return texCoords[i%3];} + void getTexCoords(unsigned int i, TexCoords t) {texCoords[i%3] = t;} + void getTexCoords(TexCoords t[3]) { + texCoords[0] = t[0]; texCoords[1] = t[1]; texCoords[2] = t[2]; + } + + bool isVisible() {return visible;} + void setVisible(bool vis) {visible = vis;} }; } |