TDME2  1.9.200
FacesEntity.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 
6 #include <tdme/tdme.h>
9 
10 using std::string;
11 using std::vector;
12 
16 
17 /**
18  * Node faces entity
19  * A node can have multiple entities containing faces and a applied material
20  * @author Andreas Drewke
21  */
23 {
24 private:
25  string id;
28  vector<Face> faces;
31  vector<int32_t> lod1Indices;
32  vector<int32_t> lod2Indices;
33  vector<int32_t> lod3Indices;
34  float lod1Distance;
35  float lod2Distance;
36  float lod3Distance;
37 
38  /**
39  * Determine features
40  */
41  void determineFeatures();
42 
43 public:
44  /**
45  * Public constructor
46  */
47  FacesEntity();
48 
49  /**
50  * Public constructor
51  * @param node node
52  * @param id id
53  */
54  FacesEntity(Node* node, const string& id);
55 
56  /**
57  * @return faces entity id
58  */
59  inline const string& getId() const {
60  return id;
61  }
62 
63  /**
64  * Set up the entity's material
65  * @param material material
66  */
67  inline void setMaterial(Material* material) {
68  this->material = material;
69  }
70 
71  /**
72  * @return entity's material
73  */
74  inline const Material* getMaterial() const {
75  return material;
76  }
77 
78  /**
79  * @return entity's faces
80  */
81  inline const vector<Face>& getFaces() const {
82  return faces;
83  }
84 
85  /**
86  * Set up entity's faces
87  * @param faces faces
88  */
89  void setFaces(const vector<Face>& faces);
90 
91  /**
92  * @return if texture coordinates are available for the whole entity
93  */
94  inline bool isTextureCoordinatesAvailable() const {
95  return textureCoordinatesAvailable == true && node->getTextureCoordinates().size() > 0;
96  }
97 
98  /**
99  * @return if tangents and bitangents are available for the whole entity
100  */
101  inline bool isTangentBitangentAvailable() const {
102  return tangentBitangentAvailable == true && node->getTangents().size() > 0 && node->getBitangents().size() > 0;
103  }
104 
105  /**
106  * @return LOD1 distance
107  */
108  inline float getLOD1Distance() const {
109  return lod1Distance;
110  }
111 
112  /**
113  * Set LOD1 distance
114  * @param lod1Distance LOD1 distance
115  */
116  inline void setLOD1Distance(float lod1Distance) {
117  this->lod1Distance = lod1Distance;
118  }
119 
120  /**
121  * @return LOD1 indices
122  */
123  inline const vector<int32_t>& getLOD1Indices() const {
124  return lod1Indices;
125  }
126 
127  /**
128  * Set LOD1 indices
129  * @param lod1Indices lod1 indices
130  */
131  void setLOD1Indices(const vector<int32_t>& lod1Indices);
132 
133  /**
134  * @return LOD2 distance
135  */
136  inline float getLOD2Distance() const {
137  return lod2Distance;
138  }
139 
140  /**
141  * Set LOD2 distance
142  * @param lod2Distance LOD2 distance
143  */
144  inline void setLOD2Distance(float lod2Distance) {
145  this->lod2Distance = lod2Distance;
146  }
147 
148  /**
149  * @return LOD2 indices
150  */
151  inline const vector<int32_t>& getLOD2Indices() const {
152  return lod2Indices;
153  }
154 
155  /**
156  * Set LOD2 indices
157  * @param lod1Indices lod1 indices
158  */
159  void setLOD2Indices(const vector<int32_t>& lod2Indices);
160 
161  /**
162  * @return LOD3 distance
163  */
164  inline float getLOD3Distance() const {
165  return lod3Distance;
166  }
167 
168  /**
169  * Set LOD3 distance
170  * @param lod3Distance LOD1 distance
171  */
172  inline void setLOD3Distance(float lod3Distance) {
173  this->lod3Distance = lod3Distance;
174  }
175 
176  /**
177  * @return LOD3 indices
178  */
179  inline const vector<int32_t>& getLOD3Indices() const {
180  return lod3Indices;
181  }
182 
183  /**
184  * Set LOD3 indices
185  * @param lod3Indices lod3 indices
186  */
187  void setLOD3Indices(const vector<int32_t>& lod3Indices);
188 
189 };
Represents a model face, consisting of vertex, normal, tangent and bitangent vectors,...
Definition: Face.h:18
Node faces entity A node can have multiple entities containing faces and a applied material.
Definition: FacesEntity.h:23
const vector< int32_t > & getLOD3Indices() const
Definition: FacesEntity.h:179
const vector< Face > & getFaces() const
Definition: FacesEntity.h:81
const vector< int32_t > & getLOD2Indices() const
Definition: FacesEntity.h:151
FacesEntity()
Public constructor.
Definition: FacesEntity.cpp:19
void setMaterial(Material *material)
Set up the entity's material.
Definition: FacesEntity.h:67
void determineFeatures()
Determine features.
Definition: FacesEntity.cpp:54
vector< int32_t > lod1Indices
Definition: FacesEntity.h:31
vector< int32_t > lod2Indices
Definition: FacesEntity.h:32
const string & getId() const
Definition: FacesEntity.h:59
bool isTextureCoordinatesAvailable() const
Definition: FacesEntity.h:94
void setLOD1Distance(float lod1Distance)
Set LOD1 distance.
Definition: FacesEntity.h:116
vector< int32_t > lod3Indices
Definition: FacesEntity.h:33
void setLOD2Indices(const vector< int32_t > &lod2Indices)
Set LOD2 indices.
Definition: FacesEntity.cpp:76
const Material * getMaterial() const
Definition: FacesEntity.h:74
bool isTangentBitangentAvailable() const
Definition: FacesEntity.h:101
void setLOD2Distance(float lod2Distance)
Set LOD2 distance.
Definition: FacesEntity.h:144
void setLOD3Distance(float lod3Distance)
Set LOD3 distance.
Definition: FacesEntity.h:172
const vector< int32_t > & getLOD1Indices() const
Definition: FacesEntity.h:123
void setLOD1Indices(const vector< int32_t > &lod1Indices)
Set LOD1 indices.
Definition: FacesEntity.cpp:68
void setLOD3Indices(const vector< int32_t > &lod3Indices)
Set LOD3 indices.
Definition: FacesEntity.cpp:84
void setFaces(const vector< Face > &faces)
Set up entity's faces.
Definition: FacesEntity.cpp:43
Represents a material.
Definition: Material.h:23
Model node.
Definition: Node.h:32
const vector< Vector3 > & getBitangents() const
Definition: Node.h:216
const vector< Vector3 > & getTangents() const
Definition: Node.h:203
const vector< Vector2 > & getTextureCoordinates() const
Definition: Node.h:190