Templatized VolumeIterator class.
This commit is contained in:
parent
593a26ebd2
commit
bc28e240f3
@ -7,7 +7,6 @@ SET(SRC_FILES
|
||||
source/PolyVoxSceneManager.cpp
|
||||
source/RegionGeometry.cpp
|
||||
source/SurfaceVertex.cpp
|
||||
source/VolumeIterator.cpp
|
||||
)
|
||||
|
||||
#Projects headers files
|
||||
@ -26,7 +25,8 @@ SET(INC_FILES
|
||||
include/Vector.inl
|
||||
include/Volume.h
|
||||
include/Volume.inl
|
||||
include/VolumeIterator.h
|
||||
include/VolumeIterator.h
|
||||
include/VolumeIterator.inl
|
||||
)
|
||||
|
||||
FIND_PACKAGE(Boost REQUIRED)
|
||||
|
@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#include "boost/cstdint.hpp"
|
||||
|
||||
#include "Constants.h"
|
||||
#include "PolyVoxForwardDeclarations.h"
|
||||
#include "TypeDef.h"
|
||||
#pragma endregion
|
||||
|
||||
@ -35,7 +36,7 @@ namespace PolyVox
|
||||
class Block
|
||||
{
|
||||
//Make VolumeIterator a friend
|
||||
friend class VolumeIterator;
|
||||
friend class VolumeIterator<VoxelType>;
|
||||
|
||||
//Block interface
|
||||
public:
|
||||
|
@ -10,9 +10,6 @@ namespace PolyVox
|
||||
class IntegrealVector3;
|
||||
class PolyVoxSceneManager;
|
||||
class RegionGeometry;
|
||||
//class SurfaceEdge;
|
||||
//class SurfaceTriange;
|
||||
//class SurfaceTypes;
|
||||
class SurfaceVertex;
|
||||
template <boost::uint32_t Size, typename Type> class Vector;
|
||||
typedef Vector<2,float> Vector2DFloat;
|
||||
@ -23,16 +20,8 @@ namespace PolyVox
|
||||
typedef Vector<3,double> Vector3DDouble;
|
||||
typedef Vector<3,boost::int32_t> Vector3DInt32;
|
||||
typedef Vector<3,boost::uint32_t> Vector3DUint32;
|
||||
/*class Vector2DFloat;
|
||||
class Vector2DDouble;
|
||||
class Vector2DInt32;
|
||||
class Vector2DUint32;
|
||||
class Vector3DFloat;
|
||||
class Vector3DDouble;
|
||||
class Vector3DInt32;
|
||||
class Vector3DUint32;*/
|
||||
template <typename VoxelType> class Volume;
|
||||
class VolumeIterator;
|
||||
template <typename VoxelType> class VolumeIterator;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -32,7 +32,7 @@ namespace PolyVox
|
||||
class Volume
|
||||
{
|
||||
//Make VolumeIterator a friend
|
||||
friend class VolumeIterator;
|
||||
friend class VolumeIterator<VoxelType>;
|
||||
|
||||
//Volume interface
|
||||
public:
|
||||
|
@ -22,7 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#include <queue>
|
||||
|
||||
#include "Block.h"
|
||||
#include "Volume.h"
|
||||
#include "VolumeIterator.h" //Maybe this shouldn't be here?
|
||||
|
||||
namespace PolyVox
|
||||
@ -229,7 +228,7 @@ namespace PolyVox
|
||||
}
|
||||
|
||||
//Write data
|
||||
VolumeIterator volIter(*this);
|
||||
VolumeIterator<VoxelType> volIter(*this);
|
||||
for(boost::uint16_t z = 0; z < POLYVOX_VOLUME_SIDE_LENGTH; ++z)
|
||||
{
|
||||
for(boost::uint16_t y = 0; y < POLYVOX_VOLUME_SIDE_LENGTH; ++y)
|
||||
@ -255,7 +254,7 @@ namespace PolyVox
|
||||
return;
|
||||
}
|
||||
|
||||
VolumeIterator volIter(*this);
|
||||
VolumeIterator<VoxelType> volIter(*this);
|
||||
const boost::uint8_t uSeedValue = volIter.getVoxelAt(xStart,yStart,zStart);
|
||||
|
||||
if(value == uSeedValue)
|
||||
|
@ -27,17 +27,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
namespace PolyVox
|
||||
{
|
||||
class POLYVOX_API VolumeIterator
|
||||
template <typename VoxelType>
|
||||
class VolumeIterator
|
||||
{
|
||||
public:
|
||||
VolumeIterator(Volume<boost::uint8_t>& volume);
|
||||
VolumeIterator(Volume<VoxelType>& volume);
|
||||
~VolumeIterator();
|
||||
|
||||
void setVoxel(boost::uint8_t value);
|
||||
boost::uint8_t getVoxel(void);
|
||||
void setVoxel(VoxelType value);
|
||||
VoxelType getVoxel(void);
|
||||
|
||||
boost::uint8_t getVoxelAt(const boost::uint16_t xPosition, const boost::uint16_t yPosition, const boost::uint16_t zPosition) const;
|
||||
void setVoxelAt(const boost::uint16_t xPosition, const boost::uint16_t yPosition, const boost::uint16_t zPosition, const boost::uint8_t value);
|
||||
VoxelType getVoxelAt(const boost::uint16_t xPosition, const boost::uint16_t yPosition, const boost::uint16_t zPosition) const;
|
||||
void setVoxelAt(const boost::uint16_t xPosition, const boost::uint16_t yPosition, const boost::uint16_t zPosition, const VoxelType value);
|
||||
|
||||
float getAveragedVoxelAt(const boost::uint16_t xPosition, const boost::uint16_t yPosition, const boost::uint16_t zPosition, boost::uint16_t size) const;
|
||||
|
||||
@ -56,39 +57,39 @@ namespace PolyVox
|
||||
|
||||
bool isValidForRegion(void);
|
||||
|
||||
boost::uint8_t peekVoxel1nx1ny1nz(void) const;
|
||||
boost::uint8_t peekVoxel1nx1ny0pz(void) const;
|
||||
boost::uint8_t peekVoxel1nx1ny1pz(void) const;
|
||||
boost::uint8_t peekVoxel1nx0py1nz(void) const;
|
||||
boost::uint8_t peekVoxel1nx0py0pz(void) const;
|
||||
boost::uint8_t peekVoxel1nx0py1pz(void) const;
|
||||
boost::uint8_t peekVoxel1nx1py1nz(void) const;
|
||||
boost::uint8_t peekVoxel1nx1py0pz(void) const;
|
||||
boost::uint8_t peekVoxel1nx1py1pz(void) const;
|
||||
VoxelType peekVoxel1nx1ny1nz(void) const;
|
||||
VoxelType peekVoxel1nx1ny0pz(void) const;
|
||||
VoxelType peekVoxel1nx1ny1pz(void) const;
|
||||
VoxelType peekVoxel1nx0py1nz(void) const;
|
||||
VoxelType peekVoxel1nx0py0pz(void) const;
|
||||
VoxelType peekVoxel1nx0py1pz(void) const;
|
||||
VoxelType peekVoxel1nx1py1nz(void) const;
|
||||
VoxelType peekVoxel1nx1py0pz(void) const;
|
||||
VoxelType peekVoxel1nx1py1pz(void) const;
|
||||
|
||||
boost::uint8_t peekVoxel0px1ny1nz(void) const;
|
||||
boost::uint8_t peekVoxel0px1ny0pz(void) const;
|
||||
boost::uint8_t peekVoxel0px1ny1pz(void) const;
|
||||
boost::uint8_t peekVoxel0px0py1nz(void) const;
|
||||
boost::uint8_t peekVoxel0px0py0pz(void) const;
|
||||
boost::uint8_t peekVoxel0px0py1pz(void) const;
|
||||
boost::uint8_t peekVoxel0px1py1nz(void) const;
|
||||
boost::uint8_t peekVoxel0px1py0pz(void) const;
|
||||
boost::uint8_t peekVoxel0px1py1pz(void) const;
|
||||
VoxelType peekVoxel0px1ny1nz(void) const;
|
||||
VoxelType peekVoxel0px1ny0pz(void) const;
|
||||
VoxelType peekVoxel0px1ny1pz(void) const;
|
||||
VoxelType peekVoxel0px0py1nz(void) const;
|
||||
VoxelType peekVoxel0px0py0pz(void) const;
|
||||
VoxelType peekVoxel0px0py1pz(void) const;
|
||||
VoxelType peekVoxel0px1py1nz(void) const;
|
||||
VoxelType peekVoxel0px1py0pz(void) const;
|
||||
VoxelType peekVoxel0px1py1pz(void) const;
|
||||
|
||||
boost::uint8_t peekVoxel1px1ny1nz(void) const;
|
||||
boost::uint8_t peekVoxel1px1ny0pz(void) const;
|
||||
boost::uint8_t peekVoxel1px1ny1pz(void) const;
|
||||
boost::uint8_t peekVoxel1px0py1nz(void) const;
|
||||
boost::uint8_t peekVoxel1px0py0pz(void) const;
|
||||
boost::uint8_t peekVoxel1px0py1pz(void) const;
|
||||
boost::uint8_t peekVoxel1px1py1nz(void) const;
|
||||
boost::uint8_t peekVoxel1px1py0pz(void) const;
|
||||
boost::uint8_t peekVoxel1px1py1pz(void) const;
|
||||
VoxelType peekVoxel1px1ny1nz(void) const;
|
||||
VoxelType peekVoxel1px1ny0pz(void) const;
|
||||
VoxelType peekVoxel1px1ny1pz(void) const;
|
||||
VoxelType peekVoxel1px0py1nz(void) const;
|
||||
VoxelType peekVoxel1px0py0pz(void) const;
|
||||
VoxelType peekVoxel1px0py1pz(void) const;
|
||||
VoxelType peekVoxel1px1py1nz(void) const;
|
||||
VoxelType peekVoxel1px1py0pz(void) const;
|
||||
VoxelType peekVoxel1px1py1pz(void) const;
|
||||
|
||||
private:
|
||||
//The current volume
|
||||
Volume<boost::uint8_t>& mVolume;
|
||||
Volume<VoxelType>& mVolume;
|
||||
|
||||
//The current position in the volume
|
||||
boost::uint16_t mXPosInVolume;
|
||||
@ -106,7 +107,7 @@ namespace PolyVox
|
||||
boost::uint16_t mZPosInBlock;
|
||||
|
||||
//Other current position information
|
||||
boost::uint8_t* mCurrentVoxel;
|
||||
VoxelType* mCurrentVoxel;
|
||||
boost::uint32_t mBlockIndexInVolume;
|
||||
boost::uint32_t mVoxelIndexInBlock;
|
||||
|
||||
@ -128,4 +129,6 @@ namespace PolyVox
|
||||
};
|
||||
}
|
||||
|
||||
#include "VolumeIterator.inl"
|
||||
|
||||
#endif
|
||||
|
@ -19,13 +19,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
#include "block.h"
|
||||
#include "Volume.h"
|
||||
#include "VolumeIterator.h"
|
||||
|
||||
using namespace boost;
|
||||
|
||||
namespace PolyVox
|
||||
{
|
||||
VolumeIterator::VolumeIterator(Volume<boost::uint8_t>& volume)
|
||||
template <typename VoxelType>
|
||||
VolumeIterator<VoxelType>::VolumeIterator(Volume<VoxelType>& volume)
|
||||
:mVolume(volume)
|
||||
,mXRegionFirst(0)
|
||||
,mYRegionFirst(0)
|
||||
@ -56,13 +56,15 @@ namespace PolyVox
|
||||
{
|
||||
}
|
||||
|
||||
VolumeIterator::~VolumeIterator()
|
||||
template <typename VoxelType>
|
||||
VolumeIterator<VoxelType>::~VolumeIterator()
|
||||
{
|
||||
}
|
||||
|
||||
void VolumeIterator::setVoxel(uint8_t value)
|
||||
template <typename VoxelType>
|
||||
void VolumeIterator<VoxelType>::setVoxel(VoxelType value)
|
||||
{
|
||||
Block<boost::uint8_t>* currentBlock = mVolume.mBlocks[mBlockIndexInVolume];
|
||||
Block<VoxelType>* currentBlock = mVolume.mBlocks[mBlockIndexInVolume];
|
||||
|
||||
/*if(!currentBlock.unique())
|
||||
{
|
||||
@ -75,13 +77,15 @@ namespace PolyVox
|
||||
*mCurrentVoxel = value;
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::getVoxel(void)
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::getVoxel(void)
|
||||
{
|
||||
//return getVoxelAt(mXPosInVolume,mYPosInVolume,mZPosInVolume);
|
||||
return *mCurrentVoxel;
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::getVoxelAt(const uint16_t xPosition, const uint16_t yPosition, const uint16_t zPosition) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::getVoxelAt(const uint16_t xPosition, const uint16_t yPosition, const uint16_t zPosition) const
|
||||
{
|
||||
const uint16_t blockX = xPosition >> POLYVOX_BLOCK_SIDE_LENGTH_POWER;
|
||||
const uint16_t blockY = yPosition >> POLYVOX_BLOCK_SIDE_LENGTH_POWER;
|
||||
@ -101,7 +105,8 @@ namespace PolyVox
|
||||
return block->getVoxelAt(xOffset,yOffset,zOffset);
|
||||
}
|
||||
|
||||
float VolumeIterator::getAveragedVoxelAt(const uint16_t xPosition, const uint16_t yPosition, const uint16_t zPosition, uint16_t size) const
|
||||
template <typename VoxelType>
|
||||
float VolumeIterator<VoxelType>::getAveragedVoxelAt(const uint16_t xPosition, const uint16_t yPosition, const uint16_t zPosition, uint16_t size) const
|
||||
{
|
||||
float sum = 0.0;
|
||||
for(uint16_t z = zPosition-size; z <= zPosition+size; ++z)
|
||||
@ -125,7 +130,8 @@ namespace PolyVox
|
||||
return sum;
|
||||
}
|
||||
|
||||
void VolumeIterator::setVoxelAt(const uint16_t xPosition, const uint16_t yPosition, const uint16_t zPosition, const uint8_t value)
|
||||
template <typename VoxelType>
|
||||
void VolumeIterator<VoxelType>::setVoxelAt(const uint16_t xPosition, const uint16_t yPosition, const uint16_t zPosition, const VoxelType value)
|
||||
{
|
||||
const uint16_t blockX = xPosition >> POLYVOX_BLOCK_SIDE_LENGTH_POWER;
|
||||
const uint16_t blockY = yPosition >> POLYVOX_BLOCK_SIDE_LENGTH_POWER;
|
||||
@ -153,7 +159,8 @@ namespace PolyVox
|
||||
block->setVoxelAt(xOffset,yOffset,zOffset, value);
|
||||
}
|
||||
|
||||
Vector3DFloat VolumeIterator::getCentralDifferenceGradient(void) const
|
||||
template <typename VoxelType>
|
||||
Vector3DFloat VolumeIterator<VoxelType>::getCentralDifferenceGradient(void) const
|
||||
{
|
||||
//FIXME - should this test be here?
|
||||
if((mXPosInVolume < 1) || (mXPosInVolume > POLYVOX_VOLUME_SIDE_LENGTH-2) ||
|
||||
@ -177,7 +184,8 @@ namespace PolyVox
|
||||
return Vector3DFloat(int(voxel1px) - int(voxel1nx),int(voxel1py) - int(voxel1ny),int(voxel1pz) - int(voxel1nz));
|
||||
}
|
||||
|
||||
Vector3DFloat VolumeIterator::getAveragedCentralDifferenceGradient(void) const
|
||||
template <typename VoxelType>
|
||||
Vector3DFloat VolumeIterator<VoxelType>::getAveragedCentralDifferenceGradient(void) const
|
||||
{
|
||||
//FIXME - should this test be here?
|
||||
if((mXPosInVolume < 2) || (mXPosInVolume > POLYVOX_VOLUME_SIDE_LENGTH-3) ||
|
||||
@ -201,7 +209,8 @@ namespace PolyVox
|
||||
return Vector3DFloat(voxel1px - voxel1nx,voxel1py - voxel1ny,voxel1pz - voxel1nz);
|
||||
}
|
||||
|
||||
Vector3DFloat VolumeIterator::getSobelGradient(void) const
|
||||
template <typename VoxelType>
|
||||
Vector3DFloat VolumeIterator<VoxelType>::getSobelGradient(void) const
|
||||
{
|
||||
//FIXME - should this test be here?
|
||||
if((mXPosInVolume < 1) || (mXPosInVolume > POLYVOX_VOLUME_SIDE_LENGTH-2) ||
|
||||
@ -292,22 +301,26 @@ namespace PolyVox
|
||||
return Vector3DFloat(xGrad,yGrad,zGrad);
|
||||
}
|
||||
|
||||
uint16_t VolumeIterator::getPosX(void)
|
||||
template <typename VoxelType>
|
||||
uint16_t VolumeIterator<VoxelType>::getPosX(void)
|
||||
{
|
||||
return mXPosInVolume;
|
||||
}
|
||||
|
||||
uint16_t VolumeIterator::getPosY(void)
|
||||
template <typename VoxelType>
|
||||
uint16_t VolumeIterator<VoxelType>::getPosY(void)
|
||||
{
|
||||
return mYPosInVolume;
|
||||
}
|
||||
|
||||
uint16_t VolumeIterator::getPosZ(void)
|
||||
template <typename VoxelType>
|
||||
uint16_t VolumeIterator<VoxelType>::getPosZ(void)
|
||||
{
|
||||
return mZPosInVolume;
|
||||
}
|
||||
|
||||
void VolumeIterator::setPosition(uint16_t xPos, uint16_t yPos, uint16_t zPos)
|
||||
template <typename VoxelType>
|
||||
void VolumeIterator<VoxelType>::setPosition(uint16_t xPos, uint16_t yPos, uint16_t zPos)
|
||||
{
|
||||
mXPosInVolume = xPos;
|
||||
mYPosInVolume = yPos;
|
||||
@ -333,7 +346,8 @@ namespace PolyVox
|
||||
mCurrentVoxel = currentBlock->mData + mVoxelIndexInBlock;
|
||||
}
|
||||
|
||||
void VolumeIterator::setValidRegion(uint16_t xFirst, uint16_t yFirst, uint16_t zFirst, uint16_t xLast, uint16_t yLast, uint16_t zLast)
|
||||
template <typename VoxelType>
|
||||
void VolumeIterator<VoxelType>::setValidRegion(uint16_t xFirst, uint16_t yFirst, uint16_t zFirst, uint16_t xLast, uint16_t yLast, uint16_t zLast)
|
||||
{
|
||||
mXRegionFirst = xFirst;
|
||||
mYRegionFirst = yFirst;
|
||||
@ -360,7 +374,8 @@ namespace PolyVox
|
||||
mZRegionLastBlock = mZRegionLast >> POLYVOX_BLOCK_SIDE_LENGTH_POWER;
|
||||
}
|
||||
|
||||
void VolumeIterator::moveForwardInRegion(void)
|
||||
template <typename VoxelType>
|
||||
void VolumeIterator<VoxelType>::moveForwardInRegion(void)
|
||||
{
|
||||
mXPosInBlock++;
|
||||
mCurrentVoxel++;
|
||||
@ -445,12 +460,14 @@ namespace PolyVox
|
||||
}
|
||||
}
|
||||
|
||||
bool VolumeIterator::isValidForRegion(void)
|
||||
template <typename VoxelType>
|
||||
bool VolumeIterator<VoxelType>::isValidForRegion(void)
|
||||
{
|
||||
return mIsValidForRegion;
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx1ny1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx1ny1nz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -459,7 +476,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume-1,mYPosInVolume-1,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx1ny0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx1ny0pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -468,7 +486,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume-1,mYPosInVolume-1,mZPosInVolume);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx1ny1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx1ny1pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -477,7 +496,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume-1,mYPosInVolume-1,mZPosInVolume+1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx0py1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx0py1nz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -486,7 +506,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume-1,mYPosInVolume,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx0py0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx0py0pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -495,7 +516,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume-1,mYPosInVolume,mZPosInVolume);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx0py1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx0py1pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -504,7 +526,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume-1,mYPosInVolume,mZPosInVolume+1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx1py1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx1py1nz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -513,7 +536,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume-1,mYPosInVolume+1,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx1py0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx1py0pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -522,7 +546,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume-1,mYPosInVolume+1,mZPosInVolume);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1nx1py1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1nx1py1pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -533,7 +558,8 @@ namespace PolyVox
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px1ny1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px1ny1nz(void) const
|
||||
{
|
||||
if((mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -542,7 +568,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume,mYPosInVolume-1,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px1ny0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px1ny0pz(void) const
|
||||
{
|
||||
if((mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -551,7 +578,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume,mYPosInVolume-1,mZPosInVolume);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px1ny1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px1ny1pz(void) const
|
||||
{
|
||||
if((mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -560,7 +588,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume,mYPosInVolume-1,mZPosInVolume+1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px0py1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px0py1nz(void) const
|
||||
{
|
||||
if((mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -569,12 +598,14 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume,mYPosInVolume,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px0py0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px0py0pz(void) const
|
||||
{
|
||||
return *mCurrentVoxel;
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px0py1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px0py1pz(void) const
|
||||
{
|
||||
if((mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -583,7 +614,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume,mYPosInVolume,mZPosInVolume+1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px1py1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px1py1nz(void) const
|
||||
{
|
||||
if((mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -592,7 +624,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume,mYPosInVolume+1,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px1py0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px1py0pz(void) const
|
||||
{
|
||||
if((mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -601,7 +634,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume,mYPosInVolume+1,mZPosInVolume);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel0px1py1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel0px1py1pz(void) const
|
||||
{
|
||||
if((mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -612,7 +646,8 @@ namespace PolyVox
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px1ny1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px1ny1nz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -621,7 +656,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume+1,mYPosInVolume-1,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px1ny0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px1ny0pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -630,7 +666,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume+1,mYPosInVolume-1,mZPosInVolume);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px1ny1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px1ny1pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -639,7 +676,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume+1,mYPosInVolume-1,mZPosInVolume+1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px0py1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px0py1nz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -648,7 +686,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume+1,mYPosInVolume,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px0py0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px0py0pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -657,7 +696,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume+1,mYPosInVolume,mZPosInVolume);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px0py1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px0py1pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -666,7 +706,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume+1,mYPosInVolume,mZPosInVolume+1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px1py1nz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px1py1nz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != 0))
|
||||
{
|
||||
@ -675,7 +716,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume+1,mYPosInVolume+1,mZPosInVolume-1);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px1py0pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px1py0pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
||||
@ -684,7 +726,8 @@ namespace PolyVox
|
||||
return getVoxelAt(mXPosInVolume+1,mYPosInVolume+1,mZPosInVolume);
|
||||
}
|
||||
|
||||
uint8_t VolumeIterator::peekVoxel1px1py1pz(void) const
|
||||
template <typename VoxelType>
|
||||
VoxelType VolumeIterator<VoxelType>::peekVoxel1px1py1pz(void) const
|
||||
{
|
||||
if((mXPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mYPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1) && (mZPosInVolume%POLYVOX_BLOCK_SIDE_LENGTH != POLYVOX_BLOCK_SIDE_LENGTH-1))
|
||||
{
|
@ -120,7 +120,7 @@ namespace PolyVox
|
||||
lastY = std::min(lastY,int(POLYVOX_VOLUME_SIDE_LENGTH-1));
|
||||
lastZ = std::min(lastZ,int(POLYVOX_VOLUME_SIDE_LENGTH-1));
|
||||
|
||||
VolumeIterator volIter(*volumeData);
|
||||
VolumeIterator<boost::uint8_t> volIter(*volumeData);
|
||||
volIter.setValidRegion(firstX,firstY,firstZ,lastX,lastY,lastZ);
|
||||
volIter.setPosition(firstX,firstY,firstZ);
|
||||
while(volIter.isValidForRegion())
|
||||
@ -152,7 +152,7 @@ namespace PolyVox
|
||||
{
|
||||
//volumeData = VolumePtr(new Volume);
|
||||
volumeData = new Volume<boost::uint8_t>();
|
||||
VolumeIterator volIter(*volumeData);
|
||||
VolumeIterator<boost::uint8_t> volIter(*volumeData);
|
||||
for(uint16_t z = 0; z < POLYVOX_VOLUME_SIDE_LENGTH; ++z)
|
||||
{
|
||||
for(uint16_t y = 0; y < POLYVOX_VOLUME_SIDE_LENGTH; ++y)
|
||||
@ -248,7 +248,7 @@ namespace PolyVox
|
||||
|
||||
Vector3DUint32 vertlist[12];
|
||||
uint8_t vertMaterials[12];
|
||||
VolumeIterator volIter(*volumeData);
|
||||
VolumeIterator<boost::uint8_t> volIter(*volumeData);
|
||||
volIter.setValidRegion(firstX,firstY,firstZ,lastX,lastY,lastZ);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@ -541,7 +541,7 @@ namespace PolyVox
|
||||
|
||||
Vector3DFloat PolyVoxSceneManager::computeNormal(const Vector3DFloat& position, NormalGenerationMethod normalGenerationMethod) const
|
||||
{
|
||||
VolumeIterator volIter(*volumeData); //FIXME - save this somewhere - could be expensive to create?
|
||||
VolumeIterator<boost::uint8_t> volIter(*volumeData); //FIXME - save this somewhere - could be expensive to create?
|
||||
|
||||
const float posX = position.x();
|
||||
const float posY = position.y();
|
||||
@ -695,7 +695,7 @@ namespace PolyVox
|
||||
{
|
||||
if(volumeData->containsPoint(Vector3DInt32(uX,uY,uZ),0))
|
||||
{
|
||||
VolumeIterator volIter(*volumeData);
|
||||
VolumeIterator<boost::uint8_t> volIter(*volumeData);
|
||||
return volIter.getVoxelAt(uX,uY,uZ);
|
||||
}
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user