Tidying mesh class.

This commit is contained in:
David Williams 2014-08-09 09:31:45 +02:00
parent 94d1b57b81
commit 29baac9d6d
2 changed files with 30 additions and 21 deletions

View File

@ -52,17 +52,15 @@ namespace PolyVox
IndexType getNoOfVertices(void) const; IndexType getNoOfVertices(void) const;
const VertexType& getVertex(IndexType index) const; const VertexType& getVertex(IndexType index) const;
const std::vector<VertexType>& getVertices(void) const; //Should probably deprecate const VertexType* getRawVertexData(void) const;
POLYVOX_DEPRECATED const std::vector<VertexType>& getVertices(void) const;
uint32_t getNoOfIndices(void) const; uint32_t getNoOfIndices(void) const;
IndexType getIndex(uint32_t index) const; IndexType getIndex(uint32_t index) const;
const std::vector<IndexType>& getIndices(void) const; //Should probably deprecate const IndexType* getRawIndexData(void);
POLYVOX_DEPRECATED const std::vector<IndexType>& getIndices(void) const;
const Vector3DInt32& getOffset(void) const; const Vector3DInt32& getOffset(void) const;
//void setNoOfVertices(IndexType noOfVertices);
//void setVertex()
void setOffset(const Vector3DInt32& offset); void setOffset(const Vector3DInt32& offset);
IndexType addVertex(const VertexType& vertex); IndexType addVertex(const VertexType& vertex);
@ -70,13 +68,12 @@ namespace PolyVox
void clear(void); void clear(void);
bool isEmpty(void) const; bool isEmpty(void) const;
void removeUnusedVertices(void); void removeUnusedVertices(void);
Vector3DInt32 m_offset;
private: private:
std::vector<IndexType> m_vecTriangleIndices; std::vector<IndexType> m_vecIndices;
std::vector<VertexType> m_vecVertices; std::vector<VertexType> m_vecVertices;
Vector3DInt32 m_offset;
}; };
template <typename MeshType> template <typename MeshType>

View File

@ -45,6 +45,12 @@ namespace PolyVox
return m_vecVertices[index]; return m_vecVertices[index];
} }
template <typename VertexType, typename IndexType>
const VertexType* Mesh<VertexType, IndexType>::getRawVertexData(void) const
{
return &(m_vecVertices[0]);
}
template <typename VertexType, typename IndexType> template <typename VertexType, typename IndexType>
const std::vector<VertexType>& Mesh<VertexType, IndexType>::getVertices(void) const const std::vector<VertexType>& Mesh<VertexType, IndexType>::getVertices(void) const
{ {
@ -54,19 +60,25 @@ namespace PolyVox
template <typename VertexType, typename IndexType> template <typename VertexType, typename IndexType>
uint32_t Mesh<VertexType, IndexType>::getNoOfIndices(void) const uint32_t Mesh<VertexType, IndexType>::getNoOfIndices(void) const
{ {
return m_vecTriangleIndices.size(); return m_vecIndices.size();
} }
template <typename VertexType, typename IndexType> template <typename VertexType, typename IndexType>
IndexType Mesh<VertexType, IndexType>::getIndex(uint32_t index) const IndexType Mesh<VertexType, IndexType>::getIndex(uint32_t index) const
{ {
return m_vecTriangleIndices[index]; return m_vecIndices[index];
}
template <typename VertexType, typename IndexType>
const IndexType* Mesh<VertexType, IndexType>::getRawIndexData(void)
{
return &(m_vecIndices[0]);
} }
template <typename VertexType, typename IndexType> template <typename VertexType, typename IndexType>
const std::vector<IndexType>& Mesh<VertexType, IndexType>::getIndices(void) const const std::vector<IndexType>& Mesh<VertexType, IndexType>::getIndices(void) const
{ {
return m_vecTriangleIndices; return m_vecIndices;
} }
template <typename VertexType, typename IndexType> template <typename VertexType, typename IndexType>
@ -89,9 +101,9 @@ namespace PolyVox
POLYVOX_ASSERT(index1 < m_vecVertices.size(), "Index points at an invalid vertex."); POLYVOX_ASSERT(index1 < m_vecVertices.size(), "Index points at an invalid vertex.");
POLYVOX_ASSERT(index2 < m_vecVertices.size(), "Index points at an invalid vertex."); POLYVOX_ASSERT(index2 < m_vecVertices.size(), "Index points at an invalid vertex.");
m_vecTriangleIndices.push_back(index0); m_vecIndices.push_back(index0);
m_vecTriangleIndices.push_back(index1); m_vecIndices.push_back(index1);
m_vecTriangleIndices.push_back(index2); m_vecIndices.push_back(index2);
} }
template <typename VertexType, typename IndexType> template <typename VertexType, typename IndexType>
@ -108,7 +120,7 @@ namespace PolyVox
void Mesh<VertexType, IndexType>::clear(void) void Mesh<VertexType, IndexType>::clear(void)
{ {
m_vecVertices.clear(); m_vecVertices.clear();
m_vecTriangleIndices.clear(); m_vecIndices.clear();
} }
template <typename VertexType, typename IndexType> template <typename VertexType, typename IndexType>
@ -123,9 +135,9 @@ namespace PolyVox
std::vector<bool> isVertexUsed(m_vecVertices.size()); std::vector<bool> isVertexUsed(m_vecVertices.size());
std::fill(isVertexUsed.begin(), isVertexUsed.end(), false); std::fill(isVertexUsed.begin(), isVertexUsed.end(), false);
for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++) for(uint32_t triCt = 0; triCt < m_vecIndices.size(); triCt++)
{ {
int v = m_vecTriangleIndices[triCt]; int v = m_vecIndices[triCt];
isVertexUsed[v] = true; isVertexUsed[v] = true;
} }
@ -143,9 +155,9 @@ namespace PolyVox
m_vecVertices.resize(noOfUsedVertices); m_vecVertices.resize(noOfUsedVertices);
for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++) for(uint32_t triCt = 0; triCt < m_vecIndices.size(); triCt++)
{ {
m_vecTriangleIndices[triCt] = newPos[m_vecTriangleIndices[triCt]]; m_vecIndices[triCt] = newPos[m_vecIndices[triCt]];
} }
} }
} }