Fixed sampler move...() functions to work with Morton ordering.
This commit is contained in:
		@@ -145,12 +145,14 @@ namespace PolyVox
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		// Base version updates position and validity flags.
 | 
							// Base version updates position and validity flags.
 | 
				
			||||||
		BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::movePositiveX();
 | 
							BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::movePositiveX();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							this->m_uXPosInChunk++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Then we update the voxel pointer
 | 
							// Then we update the voxel pointer
 | 
				
			||||||
		if(((this->mXPosInVolume) % this->mVolume->m_uChunkSideLength != 0))
 | 
							if(((this->mXPosInVolume) % this->mVolume->m_uChunkSideLength != 0))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			//No need to compute new chunk.
 | 
								//No need to compute new chunk.
 | 
				
			||||||
			++mCurrentVoxel;			
 | 
								mCurrentVoxel += POS_X_DELTA;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -165,11 +167,13 @@ namespace PolyVox
 | 
				
			|||||||
		// Base version updates position and validity flags.
 | 
							// Base version updates position and validity flags.
 | 
				
			||||||
		BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::movePositiveY();
 | 
							BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::movePositiveY();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this->m_uYPosInChunk++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Then we update the voxel pointer
 | 
							// Then we update the voxel pointer
 | 
				
			||||||
		if(((this->mYPosInVolume) % this->mVolume->m_uChunkSideLength != 0))
 | 
							if(((this->mYPosInVolume) % this->mVolume->m_uChunkSideLength != 0))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			//No need to compute new chunk.
 | 
								//No need to compute new chunk.
 | 
				
			||||||
			mCurrentVoxel += this->mVolume->m_uChunkSideLength;
 | 
								mCurrentVoxel += POS_Y_DELTA;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -184,11 +188,13 @@ namespace PolyVox
 | 
				
			|||||||
		// Base version updates position and validity flags.
 | 
							// Base version updates position and validity flags.
 | 
				
			||||||
		BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::movePositiveZ();
 | 
							BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::movePositiveZ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this->m_uZPosInChunk++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Then we update the voxel pointer
 | 
							// Then we update the voxel pointer
 | 
				
			||||||
		if(((this->mZPosInVolume) % this->mVolume->m_uChunkSideLength != 0))
 | 
							if(((this->mZPosInVolume) % this->mVolume->m_uChunkSideLength != 0))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			//No need to compute new chunk.
 | 
								//No need to compute new chunk.
 | 
				
			||||||
			mCurrentVoxel += this->mVolume->m_uChunkSideLength * this->mVolume->m_uChunkSideLength;
 | 
								mCurrentVoxel += POS_Z_DELTA;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -203,11 +209,13 @@ namespace PolyVox
 | 
				
			|||||||
		// Base version updates position and validity flags.
 | 
							// Base version updates position and validity flags.
 | 
				
			||||||
		BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::moveNegativeX();
 | 
							BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::moveNegativeX();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this->m_uXPosInChunk--;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Then we update the voxel pointer
 | 
							// Then we update the voxel pointer
 | 
				
			||||||
		if(((this->mXPosInVolume + 1) % this->mVolume->m_uChunkSideLength != 0))
 | 
							if(((this->mXPosInVolume + 1) % this->mVolume->m_uChunkSideLength != 0))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			//No need to compute new chunk.
 | 
								//No need to compute new chunk.
 | 
				
			||||||
			--mCurrentVoxel;			
 | 
								mCurrentVoxel += NEG_X_DELTA;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -222,11 +230,13 @@ namespace PolyVox
 | 
				
			|||||||
		// Base version updates position and validity flags.
 | 
							// Base version updates position and validity flags.
 | 
				
			||||||
		BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::moveNegativeY();
 | 
							BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::moveNegativeY();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this->m_uYPosInChunk--;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Then we update the voxel pointer
 | 
							// Then we update the voxel pointer
 | 
				
			||||||
		if(((this->mYPosInVolume + 1) % this->mVolume->m_uChunkSideLength != 0))
 | 
							if(((this->mYPosInVolume + 1) % this->mVolume->m_uChunkSideLength != 0))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			//No need to compute new chunk.
 | 
								//No need to compute new chunk.
 | 
				
			||||||
			mCurrentVoxel -= this->mVolume->m_uChunkSideLength;
 | 
								mCurrentVoxel += NEG_Y_DELTA;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -241,11 +251,13 @@ namespace PolyVox
 | 
				
			|||||||
		// Base version updates position and validity flags.
 | 
							// Base version updates position and validity flags.
 | 
				
			||||||
		BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::moveNegativeZ();
 | 
							BaseVolume<VoxelType>::template Sampler< PagedVolume<VoxelType> >::moveNegativeZ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							this->m_uZPosInChunk--;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Then we update the voxel pointer
 | 
							// Then we update the voxel pointer
 | 
				
			||||||
		if(((this->mZPosInVolume + 1) % this->mVolume->m_uChunkSideLength != 0))
 | 
							if(((this->mZPosInVolume + 1) % this->mVolume->m_uChunkSideLength != 0))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			//No need to compute new chunk.
 | 
								//No need to compute new chunk.
 | 
				
			||||||
			mCurrentVoxel -= this->mVolume->m_uChunkSideLength * this->mVolume->m_uChunkSideLength;
 | 
								mCurrentVoxel += NEG_Z_DELTA;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user