From b7e92163559628e441f7cc55971f20e44388389a Mon Sep 17 00:00:00 2001 From: David Williams Date: Sun, 25 May 2008 16:20:10 +0000 Subject: [PATCH] Refactoring VolumeChangeTracker --- include/Region.h | 3 ++- include/VolumeChangeTracker.h | 24 ++++-------------------- source/VolumeChangeTracker.cpp | 33 +++++++++++++++------------------ 3 files changed, 21 insertions(+), 39 deletions(-) diff --git a/include/Region.h b/include/Region.h index 53b30cde..eea0a895 100644 --- a/include/Region.h +++ b/include/Region.h @@ -23,12 +23,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #define __PolyVox_Region_H__ #pragma region Headers +#include "TypeDef.h" #include "Vector.h" #pragma endregion namespace PolyVox { - class Region + class POLYVOX_API Region { public: Region(); diff --git a/include/VolumeChangeTracker.h b/include/VolumeChangeTracker.h index 331f1029..9e267df2 100644 --- a/include/VolumeChangeTracker.h +++ b/include/VolumeChangeTracker.h @@ -41,7 +41,9 @@ namespace PolyVox ~VolumeChangeTracker(); //Getters - boost::uint8_t getMaterialIndexAt(boost::uint16_t uX, boost::uint16_t uY, boost::uint16_t uZ); + Region getEnclosingRegion(void); + boost::uint8_t getVoxelAt(const Vector3DUint16& pos); + boost::uint8_t getVoxelAt(boost::uint16_t uX, boost::uint16_t uY, boost::uint16_t uZ); const std::string& getTypeName(void) const; boost::uint16_t getSideLength(void); @@ -51,19 +53,11 @@ namespace PolyVox //Setters void setVolumeData(BlockVolume* volumeDataToSet); void setNormalGenerationMethod(NormalGenerationMethod method); - //void _findVisibleObjects(Camera* cam, VisibleObjectsBoundsInfo * visibleBounds, bool onlyShadowCasters); std::list getChangedRegionGeometry(void); void setAllUpToDateFlagsTo(bool newUpToDateValue); - //void generateLevelVolume(void); - - - - - //bool containsPoint(Vector3DFloat pos, float boundary); - //bool containsPoint(Vector3DInt32 pos, boost::uint16_t boundary); LinearVolume* volSurfaceUpToDate; @@ -77,19 +71,9 @@ namespace PolyVox void setVoxelAt(boost::uint16_t x, boost::uint16_t y, boost::uint16_t z, boost::uint8_t value); - static boost::uint16_t fileNo; - - bool useNormalSmoothing; - boost::uint16_t normalSmoothingFilterSize; - - NormalGenerationMethod m_normalGenerationMethod; private: - BlockVolume* volumeData; - - bool m_bHaveGeneratedMeshes; - - //std::string m_aMaterialNames[256]; + BlockVolume* volumeData; }; } diff --git a/source/VolumeChangeTracker.cpp b/source/VolumeChangeTracker.cpp index 9abc98bf..5134c422 100644 --- a/source/VolumeChangeTracker.cpp +++ b/source/VolumeChangeTracker.cpp @@ -42,12 +42,7 @@ namespace PolyVox ////////////////////////////////////////////////////////////////////////// VolumeChangeTracker::VolumeChangeTracker() :volumeData(0) - ,useNormalSmoothing(false) - ,normalSmoothingFilterSize(1) - ,m_normalGenerationMethod(SOBEL) - ,m_bHaveGeneratedMeshes(false) { - //sceneNodes.clear();` } VolumeChangeTracker::~VolumeChangeTracker() @@ -147,23 +142,25 @@ namespace PolyVox return volumeData->getSideLength(); } - uint8_t VolumeChangeTracker::getMaterialIndexAt(uint16_t uX, uint16_t uY, uint16_t uZ) + Region VolumeChangeTracker::getEnclosingRegion(void) { - if(volumeData->containsPoint(Vector3DInt32(uX,uY,uZ),0)) - { - VolumeIterator volIter(*volumeData); - volIter.setPosition(uX,uY,uZ); - return volIter.getVoxel(); - } - else - { - return 0; - } + return volumeData->getEnclosingRegion(); } - void VolumeChangeTracker::setNormalGenerationMethod(NormalGenerationMethod method) + uint8_t VolumeChangeTracker::getVoxelAt(const Vector3DUint16& pos) { - m_normalGenerationMethod = method; + return getVoxelAt(pos.x(), pos.y(), pos.z()); + } + + uint8_t VolumeChangeTracker::getVoxelAt(uint16_t uX, uint16_t uY, uint16_t uZ) + { + assert(ux < volumeData->getSideLength()); + assert(uy < volumeData->getSideLength()); + assert(uz < volumeData->getSideLength()); + + VolumeIterator volIter(*volumeData); + volIter.setPosition(uX,uY,uZ); + return volIter.getVoxel(); } const BlockVolume* VolumeChangeTracker::getVolumeData(void) const