diff --git a/include/IndexedSurfacePatch.h b/include/IndexedSurfacePatch.h index 429cdc56..ccb32dc7 100644 --- a/include/IndexedSurfacePatch.h +++ b/include/IndexedSurfacePatch.h @@ -25,12 +25,14 @@ namespace PolyVox std::vector m_vecTriangleIndices; std::vector m_vecVertices; - long int vertexIndices[POLYVOX_REGION_SIDE_LENGTH*2+1][POLYVOX_REGION_SIDE_LENGTH*2+1][POLYVOX_REGION_SIDE_LENGTH*2+1]; + static long int vertexIndices[POLYVOX_REGION_SIDE_LENGTH*2+1][POLYVOX_REGION_SIDE_LENGTH*2+1][POLYVOX_REGION_SIDE_LENGTH*2+1]; static long int noOfVerticesSubmitted; static long int noOfVerticesAccepted; static long int noOfTrianglesSubmitted; + long int getSizeInBytes(void); + private: bool m_AllowDuplicateVertices; }; diff --git a/include/RegionGeometry.h b/include/RegionGeometry.h index d62c039e..d9f7b823 100644 --- a/include/RegionGeometry.h +++ b/include/RegionGeometry.h @@ -37,6 +37,20 @@ namespace PolyVox IndexedSurfacePatch* m_patchSingleMaterial; IndexedSurfacePatch* m_patchMultiMaterial; + long int getSizeInBytes(void) + { + long int size = sizeof(RegionGeometry); + if(m_patchSingleMaterial) + { + size += m_patchSingleMaterial->getSizeInBytes(); + } + if(m_patchMultiMaterial) + { + size += m_patchMultiMaterial->getSizeInBytes(); + } + return size; + } + }; } diff --git a/source/IndexedSurfacePatch.cpp b/source/IndexedSurfacePatch.cpp index 1ffb8e9d..5756add6 100644 --- a/source/IndexedSurfacePatch.cpp +++ b/source/IndexedSurfacePatch.cpp @@ -7,6 +7,7 @@ namespace PolyVox long int IndexedSurfacePatch::noOfVerticesSubmitted = 0; long int IndexedSurfacePatch::noOfVerticesAccepted = 0; long int IndexedSurfacePatch::noOfTrianglesSubmitted = 0; + long int IndexedSurfacePatch::vertexIndices[POLYVOX_REGION_SIDE_LENGTH*2+1][POLYVOX_REGION_SIDE_LENGTH*2+1][POLYVOX_REGION_SIDE_LENGTH*2+1]; IndexedSurfacePatch::IndexedSurfacePatch(bool allowDuplicateVertices) :m_AllowDuplicateVertices(allowDuplicateVertices) @@ -93,4 +94,12 @@ namespace PolyVox vecIndices.push_back(iterVertex - vecVertices.begin()); }*/ } + + long int IndexedSurfacePatch::getSizeInBytes(void) + { + long int size = sizeof(IndexedSurfacePatch); + size += m_vecVertices.capacity() * sizeof(m_vecVertices[0]); + size += m_vecTriangleIndices.capacity() * sizeof(m_vecTriangleIndices[0]); + return size; + } } \ No newline at end of file diff --git a/source/PolyVoxSceneManager.cpp b/source/PolyVoxSceneManager.cpp index 5cdc058f..889b777c 100644 --- a/source/PolyVoxSceneManager.cpp +++ b/source/PolyVoxSceneManager.cpp @@ -49,10 +49,13 @@ namespace PolyVox //Regenerate meshes. for(uint16_t regionZ = 0; regionZ < POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS; ++regionZ) + //for(uint16_t regionZ = 6; regionZ < 7; ++regionZ) { for(uint16_t regionY = 0; regionY < POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS; ++regionY) + //for(uint16_t regionY = POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS/2; regionY < POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS/2+1; ++regionY) { for(uint16_t regionX = 0; regionX < POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS; ++regionX) + //for(uint16_t regionX = POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS/2; regionX < POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS/2+1; ++regionX) { if(surfaceUpToDate[regionX][regionY][regionZ] == false) {