Fixing some warnings in PolyVox.

This commit is contained in:
David Williams 2011-06-11 18:49:56 +01:00
parent ffa4fcaade
commit 659529787a
7 changed files with 27 additions and 27 deletions

View File

@ -30,7 +30,7 @@ using namespace PolyVox;
void createSphereInVolume(LargeVolume<MaterialDensityPair44>& volData, float fRadius, uint8_t uValue) void createSphereInVolume(LargeVolume<MaterialDensityPair44>& volData, float fRadius, uint8_t uValue)
{ {
//This vector hold the position of the center of the volume //This vector hold the position of the center of the volume
Vector3DFloat v3dVolCenter(volData.getWidth() / 2, volData.getHeight() / 2, volData.getDepth() / 2); Vector3DInt32 v3dVolCenter = (volData.getEnclosingRegion().getUpperCorner() - volData.getEnclosingRegion().getLowerCorner()) / 2;
//This three-level for loop iterates over every voxel in the volume //This three-level for loop iterates over every voxel in the volume
for (int z = 0; z < volData.getWidth(); z++) for (int z = 0; z < volData.getWidth(); z++)
@ -40,9 +40,9 @@ void createSphereInVolume(LargeVolume<MaterialDensityPair44>& volData, float fRa
for (int x = 0; x < volData.getDepth(); x++) for (int x = 0; x < volData.getDepth(); x++)
{ {
//Store our current position as a vector... //Store our current position as a vector...
Vector3DFloat v3dCurrentPos(x,y,z); Vector3DInt32 v3dCurrentPos(x,y,z);
//And compute how far the current position is from the center of the volume //And compute how far the current position is from the center of the volume
float fDistToCenter = (v3dCurrentPos - v3dVolCenter).length(); double fDistToCenter = (v3dCurrentPos - v3dVolCenter).length();
//If the current voxel is less than 'radius' units from the center //If the current voxel is less than 'radius' units from the center
//then we make it solid, otherwise we make it empty space. //then we make it solid, otherwise we make it empty space.

View File

@ -359,7 +359,7 @@ namespace PolyVox
} }
Vector3DInt32 v3dSize = v3dEnd - v3dStart + Vector3DInt32(1,1,1); Vector3DInt32 v3dSize = v3dEnd - v3dStart + Vector3DInt32(1,1,1);
int32_t numblocks = v3dSize.getX() * v3dSize.getY() * v3dSize.getZ(); uint32_t numblocks = static_cast<uint32_t>(v3dSize.getX() * v3dSize.getY() * v3dSize.getZ());
if(numblocks > m_uMaxNumberOfBlocksInMemory) if(numblocks > m_uMaxNumberOfBlocksInMemory)
{ {
// cannot support the amount of blocks... so only load the maximum possible // cannot support the amount of blocks... so only load the maximum possible

View File

@ -85,7 +85,7 @@ namespace PolyVox
//Build a list of all the triangles, complete with face normals. //Build a list of all the triangles, complete with face normals.
m_vecTriangles.clear(); m_vecTriangles.clear();
m_vecTriangles.resize(m_pOutputMesh->m_vecTriangleIndices.size() / 3); m_vecTriangles.resize(m_pOutputMesh->m_vecTriangleIndices.size() / 3);
for(int triCt = 0; triCt < m_vecTriangles.size(); triCt++) for(uint32_t triCt = 0; triCt < m_vecTriangles.size(); triCt++)
{ {
m_vecTriangles[triCt].v0 = m_pOutputMesh->m_vecTriangleIndices[triCt * 3 + 0]; m_vecTriangles[triCt].v0 = m_pOutputMesh->m_vecTriangleIndices[triCt * 3 + 0];
m_vecTriangles[triCt].v1 = m_pOutputMesh->m_vecTriangleIndices[triCt * 3 + 1]; m_vecTriangles[triCt].v1 = m_pOutputMesh->m_vecTriangleIndices[triCt * 3 + 1];
@ -106,11 +106,11 @@ namespace PolyVox
//For each vertex, determine which triangles are using it. //For each vertex, determine which triangles are using it.
trianglesUsingVertex.clear(); trianglesUsingVertex.clear();
trianglesUsingVertex.resize(m_pOutputMesh->m_vecVertices.size()); trianglesUsingVertex.resize(m_pOutputMesh->m_vecVertices.size());
for(int ct = 0; ct < trianglesUsingVertex.size(); ct++) for(uint32_t ct = 0; ct < trianglesUsingVertex.size(); ct++)
{ {
trianglesUsingVertex[ct].reserve(6); trianglesUsingVertex[ct].reserve(6);
} }
for(int ct = 0; ct < m_vecTriangles.size(); ct++) for(uint32_t ct = 0; ct < m_vecTriangles.size(); ct++)
{ {
trianglesUsingVertex[m_vecTriangles[ct].v0].push_back(ct); trianglesUsingVertex[m_vecTriangles[ct].v0].push_back(ct);
trianglesUsingVertex[m_vecTriangles[ct].v1].push_back(ct); trianglesUsingVertex[m_vecTriangles[ct].v1].push_back(ct);
@ -145,7 +145,7 @@ namespace PolyVox
} }
//For each triangle... //For each triangle...
for(int ctIter = 0; ctIter < m_vecTriangles.size(); ctIter++) for(uint32_t ctIter = 0; ctIter < m_vecTriangles.size(); ctIter++)
{ {
if(attemptEdgeCollapse(m_vecTriangles[ctIter].v0, m_vecTriangles[ctIter].v1)) if(attemptEdgeCollapse(m_vecTriangles[ctIter].v0, m_vecTriangles[ctIter].v1))
{ {
@ -166,7 +166,7 @@ namespace PolyVox
if(noOfEdgesCollapsed > 0) if(noOfEdgesCollapsed > 0)
{ {
//Fix up the indices //Fix up the indices
for(int triCt = 0; triCt < m_pOutputMesh->m_vecTriangleIndices.size(); triCt++) for(uint32_t triCt = 0; triCt < m_pOutputMesh->m_vecTriangleIndices.size(); triCt++)
{ {
uint32_t before = m_pOutputMesh->m_vecTriangleIndices[triCt]; uint32_t before = m_pOutputMesh->m_vecTriangleIndices[triCt];
uint32_t after = vertexMapper[m_pOutputMesh->m_vecTriangleIndices[triCt]]; uint32_t after = vertexMapper[m_pOutputMesh->m_vecTriangleIndices[triCt]];

View File

@ -450,7 +450,7 @@ namespace PolyVox
const uint32_t uMaterial = v000.getMaterial() | v100.getMaterial(); //Because one of these is 0, the or operation takes the max. const uint32_t uMaterial = v000.getMaterial() | v100.getMaterial(); //Because one of these is 0, the or operation takes the max.
PositionMaterialNormal surfaceVertex(v3dPosition, v3dNormal, uMaterial); PositionMaterialNormal surfaceVertex(v3dPosition, v3dNormal, static_cast<float>(uMaterial));
uint32_t uLastVertexIndex = m_meshCurrent->addVertex(surfaceVertex); uint32_t uLastVertexIndex = m_meshCurrent->addVertex(surfaceVertex);
m_pCurrentVertexIndicesX[iXVolSpace - m_regSizeInVoxels.getLowerCorner().getX()][iYVolSpace - m_regSizeInVoxels.getLowerCorner().getY()] = uLastVertexIndex; m_pCurrentVertexIndicesX[iXVolSpace - m_regSizeInVoxels.getLowerCorner().getX()][iYVolSpace - m_regSizeInVoxels.getLowerCorner().getY()] = uLastVertexIndex;
@ -473,7 +473,7 @@ namespace PolyVox
const uint32_t uMaterial = v000.getMaterial() | v010.getMaterial(); //Because one of these is 0, the or operation takes the max. const uint32_t uMaterial = v000.getMaterial() | v010.getMaterial(); //Because one of these is 0, the or operation takes the max.
PositionMaterialNormal surfaceVertex(v3dPosition, v3dNormal, uMaterial); PositionMaterialNormal surfaceVertex(v3dPosition, v3dNormal, static_cast<float>(uMaterial));
uint32_t uLastVertexIndex = m_meshCurrent->addVertex(surfaceVertex); uint32_t uLastVertexIndex = m_meshCurrent->addVertex(surfaceVertex);
m_pCurrentVertexIndicesY[iXVolSpace - m_regSizeInVoxels.getLowerCorner().getX()][iYVolSpace - m_regSizeInVoxels.getLowerCorner().getY()] = uLastVertexIndex; m_pCurrentVertexIndicesY[iXVolSpace - m_regSizeInVoxels.getLowerCorner().getX()][iYVolSpace - m_regSizeInVoxels.getLowerCorner().getY()] = uLastVertexIndex;
@ -496,7 +496,7 @@ namespace PolyVox
const uint32_t uMaterial = v000.getMaterial() | v001.getMaterial(); //Because one of these is 0, the or operation takes the max. const uint32_t uMaterial = v000.getMaterial() | v001.getMaterial(); //Because one of these is 0, the or operation takes the max.
PositionMaterialNormal surfaceVertex(v3dPosition, v3dNormal, uMaterial); PositionMaterialNormal surfaceVertex(v3dPosition, v3dNormal, static_cast<float>(uMaterial));
uint32_t uLastVertexIndex = m_meshCurrent->addVertex(surfaceVertex); uint32_t uLastVertexIndex = m_meshCurrent->addVertex(surfaceVertex);
m_pCurrentVertexIndicesZ[iXVolSpace - m_regSizeInVoxels.getLowerCorner().getX()][iYVolSpace - m_regSizeInVoxels.getLowerCorner().getY()] = uLastVertexIndex; m_pCurrentVertexIndicesZ[iXVolSpace - m_regSizeInVoxels.getLowerCorner().getX()][iYVolSpace - m_regSizeInVoxels.getLowerCorner().getY()] = uLastVertexIndex;

View File

@ -316,7 +316,7 @@ namespace PolyVox
int SurfaceMesh<VertexType>::noOfDegenerateTris(void) int SurfaceMesh<VertexType>::noOfDegenerateTris(void)
{ {
int count = 0; int count = 0;
for(int triCt = 0; triCt < m_vecTriangleIndices.size();) for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size();)
{ {
int v0 = m_vecTriangleIndices[triCt]; int v0 = m_vecTriangleIndices[triCt];
triCt++; triCt++;
@ -338,7 +338,7 @@ namespace PolyVox
{ {
int noOfNonDegenerate = 0; int noOfNonDegenerate = 0;
int targetCt = 0; int targetCt = 0;
for(int triCt = 0; triCt < m_vecTriangleIndices.size();) for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size();)
{ {
int v0 = m_vecTriangleIndices[triCt]; int v0 = m_vecTriangleIndices[triCt];
triCt++; triCt++;
@ -369,7 +369,7 @@ namespace PolyVox
vector<bool> isVertexUsed(m_vecVertices.size()); vector<bool> isVertexUsed(m_vecVertices.size());
fill(isVertexUsed.begin(), isVertexUsed.end(), false); fill(isVertexUsed.begin(), isVertexUsed.end(), false);
for(int triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++) for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++)
{ {
int v = m_vecTriangleIndices[triCt]; int v = m_vecTriangleIndices[triCt];
isVertexUsed[v] = true; isVertexUsed[v] = true;
@ -377,7 +377,7 @@ namespace PolyVox
int noOfUsedVertices = 0; int noOfUsedVertices = 0;
vector<uint32_t> newPos(m_vecVertices.size()); vector<uint32_t> newPos(m_vecVertices.size());
for(int vertCt = 0; vertCt < m_vecVertices.size(); vertCt++) for(uint32_t vertCt = 0; vertCt < m_vecVertices.size(); vertCt++)
{ {
if(isVertexUsed[vertCt]) if(isVertexUsed[vertCt])
{ {
@ -389,7 +389,7 @@ namespace PolyVox
m_vecVertices.resize(noOfUsedVertices); m_vecVertices.resize(noOfUsedVertices);
for(int triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++) for(uint32_t triCt = 0; triCt < m_vecTriangleIndices.size(); triCt++)
{ {
m_vecTriangleIndices[triCt] = newPos[m_vecTriangleIndices[triCt]]; m_vecTriangleIndices[triCt] = newPos[m_vecTriangleIndices[triCt]];
} }

View File

@ -94,7 +94,7 @@ namespace PolyVox
/** /**
This copy constructor allows casting between vectors with different data types. This copy constructor allows casting between vectors with different data types.
It is now possible to use code such as: It is now possible to use code such as:
Vector3DDouble v3dDouble(1.0,2.0,3.0); Vector3DDouble v3dDouble(1.0,2.0,3.0);
Vector3DFloat v3dFloat = static_cast<Vector3DFloat>(v3dDouble); //Casting Vector3DFloat v3dFloat = static_cast<Vector3DFloat>(v3dDouble); //Casting
@ -106,7 +106,7 @@ namespace PolyVox
{ {
for(uint32_t ct = 0; ct < Size; ++ct) for(uint32_t ct = 0; ct < Size; ++ct)
{ {
m_tElements[ct] = static_cast<CastType>(vector.getElement(ct)); m_tElements[ct] = static_cast<Type>(vector.getElement(ct));
} }
} }

View File

@ -10,7 +10,7 @@ namespace PolyVox
vecVertexMetadata.clear(); vecVertexMetadata.clear();
vecVertexMetadata.resize(m_pOutputMesh->m_vecVertices.size()); vecVertexMetadata.resize(m_pOutputMesh->m_vecVertices.size());
//Initialise the metadata //Initialise the metadata
for(int ct = 0; ct < vecVertexMetadata.size(); ct++) for(uint32_t ct = 0; ct < vecVertexMetadata.size(); ct++)
{ {
vecVertexMetadata[ct].normal.setElements(0,0,0); vecVertexMetadata[ct].normal.setElements(0,0,0);
vecVertexMetadata[ct].isOnMaterialEdge = false; vecVertexMetadata[ct].isOnMaterialEdge = false;
@ -22,7 +22,7 @@ namespace PolyVox
//CubicSurfaceExtractor in. Duplicates are now neighbours in the resulting list so just scan through for pairs. //CubicSurfaceExtractor in. Duplicates are now neighbours in the resulting list so just scan through for pairs.
std::vector<IntVertex> intVertices; std::vector<IntVertex> intVertices;
intVertices.reserve(m_pOutputMesh->m_vecVertices.size()); intVertices.reserve(m_pOutputMesh->m_vecVertices.size());
for(int ct = 0; ct < m_pOutputMesh->m_vecVertices.size(); ct++) for(uint32_t ct = 0; ct < m_pOutputMesh->m_vecVertices.size(); ct++)
{ {
const Vector3DFloat& floatPos = m_pOutputMesh->m_vecVertices[ct].position; const Vector3DFloat& floatPos = m_pOutputMesh->m_vecVertices[ct].position;
IntVertex intVertex(static_cast<uint32_t>(floatPos.getX()), static_cast<uint32_t>(floatPos.getY()), static_cast<uint32_t>(floatPos.getZ()), ct); IntVertex intVertex(static_cast<uint32_t>(floatPos.getX()), static_cast<uint32_t>(floatPos.getY()), static_cast<uint32_t>(floatPos.getZ()), ct);
@ -33,7 +33,7 @@ namespace PolyVox
sort(intVertices.begin(), intVertices.end()); sort(intVertices.begin(), intVertices.end());
//Find neighbours which are duplicates. //Find neighbours which are duplicates.
for(int ct = 0; ct < intVertices.size() - 1; ct++) for(uint32_t ct = 0; ct < intVertices.size() - 1; ct++)
{ {
const IntVertex& v0 = intVertices[ct+0]; const IntVertex& v0 = intVertices[ct+0];
const IntVertex& v1 = intVertices[ct+1]; const IntVertex& v1 = intVertices[ct+1];
@ -46,7 +46,7 @@ namespace PolyVox
} }
//Compute an approcimation to the normal, used when deciding if an edge can collapse. //Compute an approcimation to the normal, used when deciding if an edge can collapse.
for(int ct = 0; ct < m_pOutputMesh->m_vecVertices.size(); ct++) for(uint32_t ct = 0; ct < m_pOutputMesh->m_vecVertices.size(); ct++)
{ {
Vector3DFloat sumOfNormals(0.0f,0.0f,0.0f); Vector3DFloat sumOfNormals(0.0f,0.0f,0.0f);
for(vector<uint32_t>::const_iterator iter = trianglesUsingVertex[ct].cbegin(); iter != trianglesUsingVertex[ct].cend(); iter++) for(vector<uint32_t>::const_iterator iter = trianglesUsingVertex[ct].cbegin(); iter != trianglesUsingVertex[ct].cend(); iter++)
@ -59,7 +59,7 @@ namespace PolyVox
} }
//Identify those vertices on the edge of a region. Care will need to be taken when moving them. //Identify those vertices on the edge of a region. Care will need to be taken when moving them.
for(int ct = 0; ct < vecVertexMetadata.size(); ct++) for(uint32_t ct = 0; ct < vecVertexMetadata.size(); ct++)
{ {
Region regTransformed = m_pOutputMesh->m_Region; Region regTransformed = m_pOutputMesh->m_Region;
regTransformed.shift(regTransformed.getLowerCorner() * static_cast<int32_t>(-1)); regTransformed.shift(regTransformed.getLowerCorner() * static_cast<int32_t>(-1));
@ -83,7 +83,7 @@ namespace PolyVox
vecVertexMetadata.resize(m_pOutputMesh->m_vecVertices.size()); vecVertexMetadata.resize(m_pOutputMesh->m_vecVertices.size());
//Initialise the metadata //Initialise the metadata
for(int ct = 0; ct < vecVertexMetadata.size(); ct++) for(uint32_t ct = 0; ct < vecVertexMetadata.size(); ct++)
{ {
vecVertexMetadata[ct].isOnRegionFace.reset(); vecVertexMetadata[ct].isOnRegionFace.reset();
vecVertexMetadata[ct].isOnMaterialEdge = false; vecVertexMetadata[ct].isOnMaterialEdge = false;
@ -91,7 +91,7 @@ namespace PolyVox
} }
//Identify those vertices on the edge of a region. Care will need to be taken when moving them. //Identify those vertices on the edge of a region. Care will need to be taken when moving them.
for(int ct = 0; ct < vecVertexMetadata.size(); ct++) for(uint32_t ct = 0; ct < vecVertexMetadata.size(); ct++)
{ {
Region regTransformed = m_pOutputMesh->m_Region; Region regTransformed = m_pOutputMesh->m_Region;
regTransformed.shift(regTransformed.getLowerCorner() * static_cast<int32_t>(-1)); regTransformed.shift(regTransformed.getLowerCorner() * static_cast<int32_t>(-1));
@ -110,7 +110,7 @@ namespace PolyVox
//If all three vertices have the same material then we are not on a material edge. If any vertex has a different //If all three vertices have the same material then we are not on a material edge. If any vertex has a different
//material then all three vertices are on a material edge. E.g. If one vertex has material 'a' and the other two //material then all three vertices are on a material edge. E.g. If one vertex has material 'a' and the other two
//have material 'b', then the two 'b's are still on an edge (with 'a') even though they are the same as eachother. //have material 'b', then the two 'b's are still on an edge (with 'a') even though they are the same as eachother.
for(int ct = 0; ct < m_vecTriangles.size(); ct++) for(uint32_t ct = 0; ct < m_vecTriangles.size(); ct++)
{ {
uint32_t v0 = m_vecTriangles[ct].v0; uint32_t v0 = m_vecTriangles[ct].v0;
uint32_t v1 = m_vecTriangles[ct].v1; uint32_t v1 = m_vecTriangles[ct].v1;