Moved the test for whether we are accessing the same voxel as last time.
This commit is contained in:
parent
d477bec540
commit
778238d11d
@ -123,7 +123,19 @@ namespace PolyVox
|
|||||||
const uint16_t yOffset = static_cast<uint16_t>(uYPos & m_iChunkMask);
|
const uint16_t yOffset = static_cast<uint16_t>(uYPos & m_iChunkMask);
|
||||||
const uint16_t zOffset = static_cast<uint16_t>(uZPos & m_iChunkMask);
|
const uint16_t zOffset = static_cast<uint16_t>(uZPos & m_iChunkMask);
|
||||||
|
|
||||||
auto pChunk = getChunk(chunkX, chunkY, chunkZ);
|
Chunk* pChunk;
|
||||||
|
if ((chunkX == m_v3dLastAccessedChunkX) &&
|
||||||
|
(chunkY == m_v3dLastAccessedChunkY) &&
|
||||||
|
(chunkZ == m_v3dLastAccessedChunkZ) &&
|
||||||
|
(m_pLastAccessedChunk != 0))
|
||||||
|
{
|
||||||
|
pChunk = m_pLastAccessedChunk;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pChunk = getChunk(chunkX, chunkY, chunkZ);
|
||||||
|
}
|
||||||
|
|
||||||
return pChunk->getVoxel(xOffset, yOffset, zOffset);
|
return pChunk->getVoxel(xOffset, yOffset, zOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,7 +167,19 @@ namespace PolyVox
|
|||||||
const uint16_t yOffset = static_cast<uint16_t>(uYPos - (chunkY << m_uChunkSideLengthPower));
|
const uint16_t yOffset = static_cast<uint16_t>(uYPos - (chunkY << m_uChunkSideLengthPower));
|
||||||
const uint16_t zOffset = static_cast<uint16_t>(uZPos - (chunkZ << m_uChunkSideLengthPower));
|
const uint16_t zOffset = static_cast<uint16_t>(uZPos - (chunkZ << m_uChunkSideLengthPower));
|
||||||
|
|
||||||
auto pChunk = getChunk(chunkX, chunkY, chunkZ);
|
Chunk* pChunk;
|
||||||
|
if ((chunkX == m_v3dLastAccessedChunkX) &&
|
||||||
|
(chunkY == m_v3dLastAccessedChunkY) &&
|
||||||
|
(chunkZ == m_v3dLastAccessedChunkZ) &&
|
||||||
|
(m_pLastAccessedChunk != 0))
|
||||||
|
{
|
||||||
|
pChunk = m_pLastAccessedChunk;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pChunk = getChunk(chunkX, chunkY, chunkZ);
|
||||||
|
}
|
||||||
|
|
||||||
pChunk->setVoxel(xOffset, yOffset, zOffset, tValue);
|
pChunk->setVoxel(xOffset, yOffset, zOffset, tValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,13 +287,13 @@ namespace PolyVox
|
|||||||
//the time stamp. If we updated it everytime then that would be every time we touched
|
//the time stamp. If we updated it everytime then that would be every time we touched
|
||||||
//a voxel, which would overflow a uint32_t and require us to use a uint64_t instead.
|
//a voxel, which would overflow a uint32_t and require us to use a uint64_t instead.
|
||||||
//This check should also provide a significant speed boost as usually it is true.
|
//This check should also provide a significant speed boost as usually it is true.
|
||||||
if ((uChunkX == m_v3dLastAccessedChunkX) &&
|
/*if ((uChunkX == m_v3dLastAccessedChunkX) &&
|
||||||
(uChunkY == m_v3dLastAccessedChunkY) &&
|
(uChunkY == m_v3dLastAccessedChunkY) &&
|
||||||
(uChunkZ == m_v3dLastAccessedChunkZ) &&
|
(uChunkZ == m_v3dLastAccessedChunkZ) &&
|
||||||
(m_pLastAccessedChunk != 0))
|
(m_pLastAccessedChunk != 0))
|
||||||
{
|
{
|
||||||
return m_pLastAccessedChunk;
|
return m_pLastAccessedChunk;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
Vector3DInt32 v3dChunkPos(uChunkX, uChunkY, uChunkZ);
|
Vector3DInt32 v3dChunkPos(uChunkX, uChunkY, uChunkZ);
|
||||||
|
|
||||||
|
@ -110,7 +110,18 @@ namespace PolyVox
|
|||||||
uYPosInChunk * this->mVolume->m_uChunkSideLength +
|
uYPosInChunk * this->mVolume->m_uChunkSideLength +
|
||||||
uZPosInChunk * this->mVolume->m_uChunkSideLength * this->mVolume->m_uChunkSideLength;
|
uZPosInChunk * this->mVolume->m_uChunkSideLength * this->mVolume->m_uChunkSideLength;
|
||||||
|
|
||||||
auto pCurrentChunk = this->mVolume->getChunk(uXChunk, uYChunk, uZChunk);
|
Chunk* pCurrentChunk;
|
||||||
|
if ((uXChunk == this->mVolume->m_v3dLastAccessedChunkX) &&
|
||||||
|
(uYChunk == this->mVolume->m_v3dLastAccessedChunkY) &&
|
||||||
|
(uZChunk == this->mVolume->m_v3dLastAccessedChunkZ) &&
|
||||||
|
(this->mVolume->m_pLastAccessedChunk != 0))
|
||||||
|
{
|
||||||
|
pCurrentChunk = this->mVolume->m_pLastAccessedChunk;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pCurrentChunk = this->mVolume->getChunk(uXChunk, uYChunk, uZChunk);
|
||||||
|
}
|
||||||
|
|
||||||
mCurrentVoxel = pCurrentChunk->m_tData + uVoxelIndexInChunk;
|
mCurrentVoxel = pCurrentChunk->m_tData + uVoxelIndexInChunk;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user