Started getting rid of IntegrealVector3.
Also added ForwardDeclarations.h
This commit is contained in:
@ -65,7 +65,7 @@ namespace PolyVox
|
||||
RegionGeometry regionGeometry;
|
||||
regionGeometry.m_patchSingleMaterial = new IndexedSurfacePatch(false);
|
||||
regionGeometry.m_patchMultiMaterial = new IndexedSurfacePatch(true);
|
||||
regionGeometry.m_v3dRegionPosition.setData(regionX, regionY, regionZ);
|
||||
regionGeometry.m_v3dRegionPosition = Vector3DInt32(regionX, regionY, regionZ);
|
||||
|
||||
generateMeshDataForRegion(regionX,regionY,regionZ, regionGeometry.m_patchSingleMaterial, regionGeometry.m_patchMultiMaterial);
|
||||
|
||||
@ -241,9 +241,9 @@ namespace PolyVox
|
||||
const uint16_t lastZ = (std::min)(firstZ + OGRE_REGION_SIDE_LENGTH-1,static_cast<uint32_t>(OGRE_VOLUME_SIDE_LENGTH-2));
|
||||
|
||||
//Offset from lower block corner
|
||||
const UIntVector3 offset(firstX*2,firstY*2,firstZ*2);
|
||||
const Vector3DUint32 offset(firstX*2,firstY*2,firstZ*2);
|
||||
|
||||
UIntVector3 vertlist[12];
|
||||
Vector3DUint32 vertlist[12];
|
||||
uint8_t vertMaterials[12];
|
||||
VolumeIterator volIter(*volumeData);
|
||||
volIter.setValidRegion(firstX,firstY,firstZ,lastX,lastY,lastZ);
|
||||
@ -291,95 +291,95 @@ namespace PolyVox
|
||||
/* Find the vertices where the surface intersects the cube */
|
||||
if (edgeTable[iCubeIndex] & 1)
|
||||
{
|
||||
vertlist[0].x = 2*x + 1;
|
||||
vertlist[0].y = 2*y;
|
||||
vertlist[0].z = 2*z;
|
||||
vertlist[0].setX(2*x + 1);
|
||||
vertlist[0].setY(2*y);
|
||||
vertlist[0].setZ(2*z);
|
||||
vertMaterials[0] = v000 | v100; //Because one of these is 0, the or operation takes the max.
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 2)
|
||||
{
|
||||
vertlist[1].x = 2*x + 2;
|
||||
vertlist[1].y = 2*y + 1;
|
||||
vertlist[1].z = 2*z;
|
||||
vertlist[1].setX(2*x + 2);
|
||||
vertlist[1].setY(2*y + 1);
|
||||
vertlist[1].setZ(2*z);
|
||||
vertMaterials[1] = v100 | v110;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 4)
|
||||
{
|
||||
vertlist[2].x = 2*x + 1;
|
||||
vertlist[2].y = 2*y + 2;
|
||||
vertlist[2].z = 2*z;
|
||||
vertlist[2].setX(2*x + 1);
|
||||
vertlist[2].setY(2*y + 2);
|
||||
vertlist[2].setZ(2*z);
|
||||
vertMaterials[2] = v010 | v110;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 8)
|
||||
{
|
||||
vertlist[3].x = 2*x;
|
||||
vertlist[3].y = 2*y + 1;
|
||||
vertlist[3].z = 2*z;
|
||||
vertlist[3].setX(2*x);
|
||||
vertlist[3].setY(2*y + 1);
|
||||
vertlist[3].setZ(2*z);
|
||||
vertMaterials[3] = v000 | v010;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 16)
|
||||
{
|
||||
vertlist[4].x = 2*x + 1;
|
||||
vertlist[4].y = 2*y;
|
||||
vertlist[4].z = 2*z + 2;
|
||||
vertlist[4].setX(2*x + 1);
|
||||
vertlist[4].setY(2*y);
|
||||
vertlist[4].setZ(2*z + 2);
|
||||
vertMaterials[4] = v001 | v101;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 32)
|
||||
{
|
||||
vertlist[5].x = 2*x + 2;
|
||||
vertlist[5].y = 2*y + 1;
|
||||
vertlist[5].z = 2*z + 2;
|
||||
vertlist[5].setX(2*x + 2);
|
||||
vertlist[5].setY(2*y + 1);
|
||||
vertlist[5].setZ(2*z + 2);
|
||||
vertMaterials[5] = v101 | v111;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 64)
|
||||
{
|
||||
vertlist[6].x = 2*x + 1;
|
||||
vertlist[6].y = 2*y + 2;
|
||||
vertlist[6].z = 2*z + 2;
|
||||
vertlist[6].setX(2*x + 1);
|
||||
vertlist[6].setY(2*y + 2);
|
||||
vertlist[6].setZ(2*z + 2);
|
||||
vertMaterials[6] = v011 | v111;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 128)
|
||||
{
|
||||
vertlist[7].x = 2*x;
|
||||
vertlist[7].y = 2*y + 1;
|
||||
vertlist[7].z = 2*z + 2;
|
||||
vertlist[7].setX(2*x);
|
||||
vertlist[7].setY(2*y + 1);
|
||||
vertlist[7].setZ(2*z + 2);
|
||||
vertMaterials[7] = v001 | v011;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 256)
|
||||
{
|
||||
vertlist[8].x = 2*x;
|
||||
vertlist[8].y = 2*y;
|
||||
vertlist[8].z = 2*z + 1;
|
||||
vertlist[8].setX(2*x);
|
||||
vertlist[8].setY(2*y);
|
||||
vertlist[8].setZ(2*z + 1);
|
||||
vertMaterials[8] = v000 | v001;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 512)
|
||||
{
|
||||
vertlist[9].x = 2*x + 2;
|
||||
vertlist[9].y = 2*y;
|
||||
vertlist[9].z = 2*z + 1;
|
||||
vertlist[9].setX(2*x + 2);
|
||||
vertlist[9].setY(2*y);
|
||||
vertlist[9].setZ(2*z + 1);
|
||||
vertMaterials[9] = v100 | v101;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 1024)
|
||||
{
|
||||
vertlist[10].x = 2*x + 2;
|
||||
vertlist[10].y = 2*y + 2;
|
||||
vertlist[10].z = 2*z + 1;
|
||||
vertlist[10].setX(2*x + 2);
|
||||
vertlist[10].setY(2*y + 2);
|
||||
vertlist[10].setZ(2*z + 1);
|
||||
vertMaterials[10] = v110 | v111;
|
||||
}
|
||||
if (edgeTable[iCubeIndex] & 2048)
|
||||
{
|
||||
vertlist[11].x = 2*x;
|
||||
vertlist[11].y = 2*y + 2;
|
||||
vertlist[11].z = 2*z + 1;
|
||||
vertlist[11].setX(2*x);
|
||||
vertlist[11].setY(2*y + 2);
|
||||
vertlist[11].setZ(2*z + 1);
|
||||
vertMaterials[11] = v010 | v011;
|
||||
}
|
||||
|
||||
for (int i=0;triTable[iCubeIndex][i]!=-1;i+=3)
|
||||
{
|
||||
//The three vertices forming a triangle
|
||||
const UIntVector3 vertex0 = vertlist[triTable[iCubeIndex][i ]] - offset;
|
||||
const UIntVector3 vertex1 = vertlist[triTable[iCubeIndex][i+1]] - offset;
|
||||
const UIntVector3 vertex2 = vertlist[triTable[iCubeIndex][i+2]] - offset;
|
||||
const Vector3DUint32 vertex0 = vertlist[triTable[iCubeIndex][i ]] - offset;
|
||||
const Vector3DUint32 vertex1 = vertlist[triTable[iCubeIndex][i+1]] - offset;
|
||||
const Vector3DUint32 vertex2 = vertlist[triTable[iCubeIndex][i+2]] - offset;
|
||||
|
||||
const uint8_t material0 = vertMaterials[triTable[iCubeIndex][i ]];
|
||||
const uint8_t material1 = vertMaterials[triTable[iCubeIndex][i+1]];
|
||||
@ -507,7 +507,7 @@ namespace PolyVox
|
||||
std::vector<SurfaceVertex>::iterator iterSurfaceVertex = singleMaterialPatch->m_vecVertices.begin();
|
||||
while(iterSurfaceVertex != singleMaterialPatch->m_vecVertices.end())
|
||||
{
|
||||
Vector3DFloat tempNormal = computeNormal((iterSurfaceVertex->getPosition() + offset).toVector3DFloat()/2.0f, CENTRAL_DIFFERENCE);
|
||||
Vector3DFloat tempNormal = computeNormal(static_cast<Vector3DFloat>(iterSurfaceVertex->getPosition() + offset)/2.0f, CENTRAL_DIFFERENCE);
|
||||
const_cast<SurfaceVertex&>(*iterSurfaceVertex).setNormal(tempNormal);
|
||||
++iterSurfaceVertex;
|
||||
}
|
||||
@ -515,7 +515,7 @@ namespace PolyVox
|
||||
iterSurfaceVertex = multiMaterialPatch->m_vecVertices.begin();
|
||||
while(iterSurfaceVertex != multiMaterialPatch->m_vecVertices.end())
|
||||
{
|
||||
Vector3DFloat tempNormal = computeNormal((iterSurfaceVertex->getPosition() + offset).toVector3DFloat()/2.0f, CENTRAL_DIFFERENCE);
|
||||
Vector3DFloat tempNormal = computeNormal(static_cast<Vector3DFloat>(iterSurfaceVertex->getPosition() + offset)/2.0f, CENTRAL_DIFFERENCE);
|
||||
const_cast<SurfaceVertex&>(*iterSurfaceVertex).setNormal(tempNormal);
|
||||
++iterSurfaceVertex;
|
||||
}
|
||||
|
Reference in New Issue
Block a user