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