From 96ec47a972fea2cd6efcaddd276728f8062d8f7b Mon Sep 17 00:00:00 2001 From: David Williams Date: Mon, 25 May 2015 17:45:40 +0200 Subject: [PATCH] Eliminated member variable. --- include/PolyVox/MarchingCubesSurfaceExtractor.h | 3 --- include/PolyVox/MarchingCubesSurfaceExtractor.inl | 13 ++++++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/PolyVox/MarchingCubesSurfaceExtractor.h b/include/PolyVox/MarchingCubesSurfaceExtractor.h index 6a8981f2..ad1d2313 100644 --- a/include/PolyVox/MarchingCubesSurfaceExtractor.h +++ b/include/PolyVox/MarchingCubesSurfaceExtractor.h @@ -286,9 +286,6 @@ namespace PolyVox //Used to convert arbitrary voxel types in densities and materials. ControllerType m_controller; - - //Our threshold value - typename ControllerType::DensityType m_tThreshold; }; // This version of the function performs the extraction into a user-provided mesh rather than allocating a mesh automatically. diff --git a/include/PolyVox/MarchingCubesSurfaceExtractor.inl b/include/PolyVox/MarchingCubesSurfaceExtractor.inl index 55cbcfd6..8b40c03c 100644 --- a/include/PolyVox/MarchingCubesSurfaceExtractor.inl +++ b/include/PolyVox/MarchingCubesSurfaceExtractor.inl @@ -31,7 +31,6 @@ namespace PolyVox ,m_meshCurrent(result) ,m_regSizeInVoxels(region) ,m_controller(controller) - ,m_tThreshold(m_controller.getThreshold()) { POLYVOX_THROW_IF(m_meshCurrent == nullptr, std::invalid_argument, "Provided mesh cannot be null"); } @@ -62,6 +61,8 @@ namespace PolyVox uint8_t uPreviousCell = 0; + typename ControllerType::DensityType tThreshold = m_controller.getThreshold(); + typename VolumeType::Sampler startOfSlice(m_volData); startOfSlice.setPosition(m_regSizeInVoxels.getLowerX(), m_regSizeInVoxels.getLowerY(), m_regSizeInVoxels.getLowerZ()); @@ -108,7 +109,7 @@ namespace PolyVox // The last bit of our cube index is obtained by looking // at the relevant voxel and comparing it to the threshold typename VolumeType::VoxelType v111 = sampler.getVoxel(); - if (m_controller.convertToDensity(v111) < m_tThreshold) iCubeIndex |= 128; + if (m_controller.convertToDensity(v111) < tThreshold) iCubeIndex |= 128; // The current value becomes the previous value, ready for the next iteration. uPreviousCell = iCubeIndex; @@ -145,6 +146,8 @@ namespace PolyVox const Vector3DFloat n000 = computeCentralDifferenceGradient(sampler); + typename ControllerType::DensityType tThreshold = m_controller.getThreshold(); + /* Find the vertices where the surface intersects the cube */ if ((edgeTable[iCubeIndex] & 64) && (uXRegSpace > 0)) { @@ -152,7 +155,7 @@ namespace PolyVox POLYVOX_ASSERT(v011 != v111, "Attempting to insert vertex between two voxels with the same value"); const Vector3DFloat n100 = computeCentralDifferenceGradient(sampler); - const float fInterp = static_cast(m_tThreshold - m_controller.convertToDensity(v011)) / static_cast(m_controller.convertToDensity(v111) - m_controller.convertToDensity(v011)); + const float fInterp = static_cast(tThreshold - m_controller.convertToDensity(v011)) / static_cast(m_controller.convertToDensity(v111) - m_controller.convertToDensity(v011)); const Vector3DFloat v3dPosition(static_cast(uXRegSpace - 1) + fInterp, static_cast(uYRegSpace), static_cast(uZRegSpace)); const Vector3DUint16 v3dScaledPosition(static_cast(v3dPosition.getX() * 256.0f), static_cast(v3dPosition.getY() * 256.0f), static_cast(v3dPosition.getZ() * 256.0f)); @@ -185,7 +188,7 @@ namespace PolyVox POLYVOX_ASSERT(v101 != v111, "Attempting to insert vertex between two voxels with the same value"); const Vector3DFloat n010 = computeCentralDifferenceGradient(sampler); - const float fInterp = static_cast(m_tThreshold - m_controller.convertToDensity(v101)) / static_cast(m_controller.convertToDensity(v111) - m_controller.convertToDensity(v101)); + const float fInterp = static_cast(tThreshold - m_controller.convertToDensity(v101)) / static_cast(m_controller.convertToDensity(v111) - m_controller.convertToDensity(v101)); const Vector3DFloat v3dPosition(static_cast(uXRegSpace), static_cast(uYRegSpace - 1) + fInterp, static_cast(uZRegSpace)); const Vector3DUint16 v3dScaledPosition(static_cast(v3dPosition.getX() * 256.0f), static_cast(v3dPosition.getY() * 256.0f), static_cast(v3dPosition.getZ() * 256.0f)); @@ -218,7 +221,7 @@ namespace PolyVox POLYVOX_ASSERT(v110 != v111, "Attempting to insert vertex between two voxels with the same value"); const Vector3DFloat n001 = computeCentralDifferenceGradient(sampler); - const float fInterp = static_cast(m_tThreshold - m_controller.convertToDensity(v110)) / static_cast(m_controller.convertToDensity(v111) - m_controller.convertToDensity(v110)); + const float fInterp = static_cast(tThreshold - m_controller.convertToDensity(v110)) / static_cast(m_controller.convertToDensity(v111) - m_controller.convertToDensity(v110)); const Vector3DFloat v3dPosition(static_cast(uXRegSpace), static_cast(uYRegSpace), static_cast(uZRegSpace - 1) + fInterp); const Vector3DUint16 v3dScaledPosition(static_cast(v3dPosition.getX() * 256.0f), static_cast(v3dPosition.getY() * 256.0f), static_cast(v3dPosition.getZ() * 256.0f));