Got carried away with the cleaning up and removed some stuff that is still needed by Thermite. Would be nice to remove it in the future though.
This commit is contained in:
parent
1d64f7aecb
commit
a57e1d749a
@ -90,13 +90,13 @@ namespace PolyVox
|
|||||||
|
|
||||||
if(currentVoxelIsSolid > negXVoxelIsSolid)
|
if(currentVoxelIsSolid > negXVoxelIsSolid)
|
||||||
{
|
{
|
||||||
m_meshCurrent->addTriangle(v0,v1,v2);
|
m_meshCurrent->addTriangleCubic(v0,v1,v2);
|
||||||
m_meshCurrent->addTriangle(v1,v3,v2);
|
m_meshCurrent->addTriangleCubic(v1,v3,v2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_meshCurrent->addTriangle(v0,v2,v1);
|
m_meshCurrent->addTriangleCubic(v0,v2,v1);
|
||||||
m_meshCurrent->addTriangle(v1,v2,v3);
|
m_meshCurrent->addTriangleCubic(v1,v2,v3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,13 +114,13 @@ namespace PolyVox
|
|||||||
|
|
||||||
if(currentVoxelIsSolid > negYVoxelIsSolid)
|
if(currentVoxelIsSolid > negYVoxelIsSolid)
|
||||||
{
|
{
|
||||||
m_meshCurrent->addTriangle(v0,v2,v1);
|
m_meshCurrent->addTriangleCubic(v0,v2,v1);
|
||||||
m_meshCurrent->addTriangle(v1,v2,v3);
|
m_meshCurrent->addTriangleCubic(v1,v2,v3);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_meshCurrent->addTriangle(v0,v1,v2);
|
m_meshCurrent->addTriangleCubic(v0,v1,v2);
|
||||||
m_meshCurrent->addTriangle(v1,v3,v2);
|
m_meshCurrent->addTriangleCubic(v1,v3,v2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,13 +138,13 @@ namespace PolyVox
|
|||||||
|
|
||||||
if(currentVoxelIsSolid > negZVoxelIsSolid)
|
if(currentVoxelIsSolid > negZVoxelIsSolid)
|
||||||
{
|
{
|
||||||
m_meshCurrent->addTriangle(v0,v1,v2);
|
m_meshCurrent->addTriangleCubic(v0,v1,v2);
|
||||||
m_meshCurrent->addTriangle(v1,v3,v2);
|
m_meshCurrent->addTriangleCubic(v1,v3,v2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_meshCurrent->addTriangle(v0,v2,v1);
|
m_meshCurrent->addTriangleCubic(v0,v2,v1);
|
||||||
m_meshCurrent->addTriangle(v1,v2,v3);
|
m_meshCurrent->addTriangleCubic(v1,v2,v3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,8 +67,8 @@ namespace PolyVox
|
|||||||
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ - 0.5f), Vector3DFloat(1.0f, 0.0f, 0.0f), material));
|
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ - 0.5f), Vector3DFloat(1.0f, 0.0f, 0.0f), material));
|
||||||
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(1.0f, 0.0f, 0.0f), material));
|
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(1.0f, 0.0f, 0.0f), material));
|
||||||
|
|
||||||
m_meshCurrent->addTriangle(v0,v2,v1);
|
m_meshCurrent->addTriangleCubic(v0,v2,v1);
|
||||||
m_meshCurrent->addTriangle(v1,v2,v3);
|
m_meshCurrent->addTriangleCubic(v1,v2,v3);
|
||||||
}
|
}
|
||||||
if(currentVoxel < plusXVoxel)
|
if(currentVoxel < plusXVoxel)
|
||||||
{
|
{
|
||||||
@ -79,8 +79,8 @@ namespace PolyVox
|
|||||||
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ - 0.5f), Vector3DFloat(-1.0f, 0.0f, 0.0f), material));
|
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ - 0.5f), Vector3DFloat(-1.0f, 0.0f, 0.0f), material));
|
||||||
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(-1.0f, 0.0f, 0.0f), material));
|
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(-1.0f, 0.0f, 0.0f), material));
|
||||||
|
|
||||||
m_meshCurrent->addTriangle(v0,v1,v2);
|
m_meshCurrent->addTriangleCubic(v0,v1,v2);
|
||||||
m_meshCurrent->addTriangle(v1,v3,v2);
|
m_meshCurrent->addTriangleCubic(v1,v3,v2);
|
||||||
}
|
}
|
||||||
|
|
||||||
int plusYVoxel = m_volData->getVoxelAt(x,y+1,z).getDensity() >= VoxelType::getThreshold();
|
int plusYVoxel = m_volData->getVoxelAt(x,y+1,z).getDensity() >= VoxelType::getThreshold();
|
||||||
@ -93,8 +93,8 @@ namespace PolyVox
|
|||||||
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ - 0.5f), Vector3DFloat(0.0f, 1.0f, 0.0f), material));
|
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ - 0.5f), Vector3DFloat(0.0f, 1.0f, 0.0f), material));
|
||||||
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 1.0f, 0.0f), material));
|
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 1.0f, 0.0f), material));
|
||||||
|
|
||||||
m_meshCurrent->addTriangle(v0,v1,v2);
|
m_meshCurrent->addTriangleCubic(v0,v1,v2);
|
||||||
m_meshCurrent->addTriangle(v1,v3,v2);
|
m_meshCurrent->addTriangleCubic(v1,v3,v2);
|
||||||
}
|
}
|
||||||
if(currentVoxel < plusYVoxel)
|
if(currentVoxel < plusYVoxel)
|
||||||
{
|
{
|
||||||
@ -105,8 +105,8 @@ namespace PolyVox
|
|||||||
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ - 0.5f), Vector3DFloat(0.0f, -1.0f, 0.0f), material));
|
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ - 0.5f), Vector3DFloat(0.0f, -1.0f, 0.0f), material));
|
||||||
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, -1.0f, 0.0f), material));
|
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, -1.0f, 0.0f), material));
|
||||||
|
|
||||||
m_meshCurrent->addTriangle(v0,v2,v1);
|
m_meshCurrent->addTriangleCubic(v0,v2,v1);
|
||||||
m_meshCurrent->addTriangle(v1,v2,v3);
|
m_meshCurrent->addTriangleCubic(v1,v2,v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
int plusZVoxel = m_volData->getVoxelAt(x,y,z+1).getDensity() >= VoxelType::getThreshold();
|
int plusZVoxel = m_volData->getVoxelAt(x,y,z+1).getDensity() >= VoxelType::getThreshold();
|
||||||
@ -119,8 +119,8 @@ namespace PolyVox
|
|||||||
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY - 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 0.0f, 1.0f), material));
|
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY - 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 0.0f, 1.0f), material));
|
||||||
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 0.0f, 1.0f), material));
|
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 0.0f, 1.0f), material));
|
||||||
|
|
||||||
m_meshCurrent->addTriangle(v0,v2,v1);
|
m_meshCurrent->addTriangleCubic(v0,v2,v1);
|
||||||
m_meshCurrent->addTriangle(v1,v2,v3);
|
m_meshCurrent->addTriangleCubic(v1,v2,v3);
|
||||||
}
|
}
|
||||||
if(currentVoxel < plusZVoxel)
|
if(currentVoxel < plusZVoxel)
|
||||||
{
|
{
|
||||||
@ -131,8 +131,8 @@ namespace PolyVox
|
|||||||
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY - 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 0.0f, -1.0f), material));
|
uint32_t v2 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY - 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 0.0f, -1.0f), material));
|
||||||
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 0.0f, -1.0f), material));
|
uint32_t v3 = m_meshCurrent->addVertex(PositionMaterialNormal(Vector3DFloat(regX + 0.5f, regY + 0.5f, regZ + 0.5f), Vector3DFloat(0.0f, 0.0f, -1.0f), material));
|
||||||
|
|
||||||
m_meshCurrent->addTriangle(v0,v1,v2);
|
m_meshCurrent->addTriangleCubic(v0,v1,v2);
|
||||||
m_meshCurrent->addTriangle(v1,v3,v2);
|
m_meshCurrent->addTriangleCubic(v1,v3,v2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,7 @@ namespace PolyVox
|
|||||||
const std::vector<VertexType>& getVertices(void) const;
|
const std::vector<VertexType>& getVertices(void) const;
|
||||||
|
|
||||||
void addTriangle(uint32_t index0, uint32_t index1, uint32_t index2);
|
void addTriangle(uint32_t index0, uint32_t index1, uint32_t index2);
|
||||||
|
void addTriangleCubic(uint32_t index0, uint32_t index1, uint32_t index2);
|
||||||
uint32_t addVertex(const VertexType& vertex);
|
uint32_t addVertex(const VertexType& vertex);
|
||||||
void clear(void);
|
void clear(void);
|
||||||
const bool isEmpty(void) const;
|
const bool isEmpty(void) const;
|
||||||
@ -84,6 +85,11 @@ namespace PolyVox
|
|||||||
std::vector<VertexType> m_vecVertices;
|
std::vector<VertexType> m_vecVertices;
|
||||||
|
|
||||||
std::vector<LodRecord> m_vecLodRecords;
|
std::vector<LodRecord> m_vecLodRecords;
|
||||||
|
|
||||||
|
//The set of materials which are in this mesh. Only those materials
|
||||||
|
//which cover a whole triangle are counted. Materials which only
|
||||||
|
//exist on a material boundary do not count.
|
||||||
|
std::set<uint8_t> m_mapUsedMaterials;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,6 +105,19 @@ namespace PolyVox
|
|||||||
|
|
||||||
template <typename VertexType>
|
template <typename VertexType>
|
||||||
void SurfaceMesh<VertexType>::addTriangle(uint32_t index0, uint32_t index1, uint32_t index2)
|
void SurfaceMesh<VertexType>::addTriangle(uint32_t index0, uint32_t index1, uint32_t index2)
|
||||||
|
{
|
||||||
|
m_vecTriangleIndices.push_back(index0);
|
||||||
|
m_vecTriangleIndices.push_back(index1);
|
||||||
|
m_vecTriangleIndices.push_back(index2);
|
||||||
|
|
||||||
|
if((m_vecVertices[index0].material == m_vecVertices[index1].material) && (m_vecVertices[index0].material == m_vecVertices[index2].material))
|
||||||
|
{
|
||||||
|
m_mapUsedMaterials.insert(m_vecVertices[index0].material);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename VertexType>
|
||||||
|
void SurfaceMesh<VertexType>::addTriangleCubic(uint32_t index0, uint32_t index1, uint32_t index2)
|
||||||
{
|
{
|
||||||
m_vecTriangleIndices.push_back(index0);
|
m_vecTriangleIndices.push_back(index0);
|
||||||
m_vecTriangleIndices.push_back(index1);
|
m_vecTriangleIndices.push_back(index1);
|
||||||
@ -124,6 +137,7 @@ namespace PolyVox
|
|||||||
m_vecVertices.clear();
|
m_vecVertices.clear();
|
||||||
m_vecTriangleIndices.clear();
|
m_vecTriangleIndices.clear();
|
||||||
m_vecLodRecords.clear();
|
m_vecLodRecords.clear();
|
||||||
|
m_mapUsedMaterials.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename VertexType>
|
template <typename VertexType>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user