26 template <
typename VertexType>
32 template <
typename VertexType>
37 template <
typename VertexType>
40 return m_vecTriangleIndices;
43 template <
typename VertexType>
46 return m_vecTriangleIndices.size();
49 template <
typename VertexType>
53 for(uint32_t i = 0; i < m_vecTriangleIndices.size() - 2; i += 3)
55 if((m_vecVertices[m_vecTriangleIndices[i]].getMaterial() == m_vecVertices[m_vecTriangleIndices[i+1]].getMaterial())
56 && (m_vecVertices[m_vecTriangleIndices[i]].getMaterial() == m_vecVertices[m_vecTriangleIndices[i+2]].getMaterial()))
67 template <
typename VertexType>
71 for(uint32_t i = 0; i < m_vecTriangleIndices.size() - 2; i += 3)
73 if((m_vecVertices[m_vecTriangleIndices[i]].getMaterial() == m_vecVertices[m_vecTriangleIndices[i+1]].getMaterial())
74 && (m_vecVertices[m_vecTriangleIndices[i]].getMaterial() == m_vecVertices[m_vecTriangleIndices[i+2]].getMaterial()))
82 template <
typename VertexType>
85 return m_vecVertices.size();
88 template <
typename VertexType>
94 template <
typename VertexType>
100 template <
typename VertexType>
104 assert(index0 < m_vecVertices.size());
105 assert(index1 < m_vecVertices.size());
106 assert(index2 < m_vecVertices.size());
108 m_vecTriangleIndices.push_back(index0);
109 m_vecTriangleIndices.push_back(index1);
110 m_vecTriangleIndices.push_back(index2);
113 template <
typename VertexType>
117 assert(index0 < m_vecVertices.size());
118 assert(index1 < m_vecVertices.size());
119 assert(index2 < m_vecVertices.size());
121 m_vecTriangleIndices.push_back(index0);
122 m_vecTriangleIndices.push_back(index1);
123 m_vecTriangleIndices.push_back(index2);
126 template <
typename VertexType>
129 m_vecVertices.push_back(vertex);
130 return m_vecVertices.size() - 1;
133 template <
typename VertexType>
136 m_vecVertices.clear();
137 m_vecTriangleIndices.clear();
138 m_vecLodRecords.clear();
141 template <
typename VertexType>
144 return (getNoOfVertices() == 0) || (getNoOfIndices() == 0);
313 template <
typename VertexType>
317 for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size();)
319 int v0 = m_vecTriangleIndices[triCt];
321 int v1 = m_vecTriangleIndices[triCt];
323 int v2 = m_vecTriangleIndices[triCt];
326 if((v0 == v1) || (v1 == v2) || (v2 == v0))
334 template <
typename VertexType>
337 int noOfNonDegenerate = 0;
339 for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size();)
341 int v0 = m_vecTriangleIndices[triCt];
343 int v1 = m_vecTriangleIndices[triCt];
345 int v2 = m_vecTriangleIndices[triCt];
348 if((v0 != v1) && (v1 != v2) & (v2 != v0))
350 m_vecTriangleIndices[targetCt] = v0;
352 m_vecTriangleIndices[targetCt] = v1;
354 m_vecTriangleIndices[targetCt] = v2;
361 m_vecTriangleIndices.resize(noOfNonDegenerate * 3);
364 template <
typename VertexType>
367 std::vector<bool> isVertexUsed(m_vecVertices.size());
368 fill(isVertexUsed.begin(), isVertexUsed.end(),
false);
370 for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++)
372 int v = m_vecTriangleIndices[triCt];
373 isVertexUsed[v] =
true;
376 int noOfUsedVertices = 0;
377 std::vector<uint32_t> newPos(m_vecVertices.size());
378 for(uint32_t vertCt = 0; vertCt < m_vecVertices.size(); vertCt++)
380 if(isVertexUsed[vertCt])
382 m_vecVertices[noOfUsedVertices] = m_vecVertices[vertCt];
383 newPos[vertCt] = noOfUsedVertices;
388 m_vecVertices.resize(noOfUsedVertices);
390 for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++)
392 m_vecTriangleIndices[triCt] = newPos[m_vecTriangleIndices[triCt]];
397 template <
typename VertexType>
402 result->m_Region = inputMesh.
m_Region;
416 std::vector<int32_t> indexMap(inputMesh.
m_vecVertices.size());
417 std::fill(indexMap.begin(), indexMap.end(), -1);
427 (setMaterials.find(v0.getMaterial()) != setMaterials.end()) ||
428 (setMaterials.find(v1.getMaterial()) != setMaterials.end()) ||
429 (setMaterials.find(v2.getMaterial()) != setMaterials.end()))
452 result->addTriangle(i0,i1,i2);
456 result->m_vecLodRecords.clear();
459 lodRecord.
endIndex = result->getNoOfIndices();
460 result->m_vecLodRecords.push_back(lodRecord);
465 template <
typename VertexType>
468 for(uint32_t ct = 0; ct < m_vecVertices.size(); ct++)
473 m_vecVertices[ct].setPosition(position);
477 template <
typename VertexType>
480 for(uint32_t ct = 0; ct < m_vecVertices.size(); ct++)
485 m_vecVertices[ct].setPosition(position);