Reimplemented eraseBlock for compressed blocks.
This commit is contained in:
parent
404f12a43e
commit
1e986f9aa6
@ -334,7 +334,9 @@ namespace PolyVox
|
|||||||
|
|
||||||
CompressedBlock<VoxelType>* getCompressedBlock(int32_t uBlockX, int32_t uBlockY, int32_t uBlockZ) const;
|
CompressedBlock<VoxelType>* getCompressedBlock(int32_t uBlockX, int32_t uBlockY, int32_t uBlockZ) const;
|
||||||
UncompressedBlock<VoxelType>* getUncompressedBlock(int32_t uBlockX, int32_t uBlockY, int32_t uBlockZ) const;
|
UncompressedBlock<VoxelType>* getUncompressedBlock(int32_t uBlockX, int32_t uBlockY, int32_t uBlockZ) const;
|
||||||
void eraseBlock(typename CompressedBlockMap::iterator itBlock) const;
|
|
||||||
|
void eraseBlock(typename CompressedBlockMap::iterator itCompressedBlock) const;
|
||||||
|
void eraseBlock(typename UncompressedBlockMap::iterator itUncompressedBlock) const;
|
||||||
|
|
||||||
// The block data
|
// The block data
|
||||||
mutable CompressedBlockMap m_pBlocks;
|
mutable CompressedBlockMap m_pBlocks;
|
||||||
|
@ -548,42 +548,31 @@ namespace PolyVox
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename VoxelType>
|
template <typename VoxelType>
|
||||||
void LargeVolume<VoxelType>::eraseBlock(typename CompressedBlockMap::iterator itBlock) const
|
void LargeVolume<VoxelType>::eraseBlock(typename CompressedBlockMap::iterator itCompressedBlock) const
|
||||||
{
|
{
|
||||||
POLYVOX_ASSERT(false, "This function has not been implemented properly");
|
// Before deleting the block we may need to page out it's data. We
|
||||||
|
// only do this if the data has been modified since it was paged in.
|
||||||
/*if(itBlock->second.hasUncompressedData())
|
CompressedBlock<VoxelType>* pCompressedBlock = itCompressedBlock->second;
|
||||||
|
if(pCompressedBlock->m_bDataModified)
|
||||||
{
|
{
|
||||||
itBlock->second.destroyUncompressedData();
|
// The position of the block within the volume.
|
||||||
}
|
Vector3DInt32 v3dBlockPos = itCompressedBlock->first;
|
||||||
|
|
||||||
if(m_pPager)
|
// From the coordinates of the block we deduce the coordinates of the contained voxels.
|
||||||
{
|
Vector3DInt32 v3dLower(v3dBlockPos.getX() << m_uBlockSideLengthPower, v3dBlockPos.getY() << m_uBlockSideLengthPower, v3dBlockPos.getZ() << m_uBlockSideLengthPower);
|
||||||
Vector3DInt32 v3dPos = itBlock->first;
|
|
||||||
Vector3DInt32 v3dLower(v3dPos.getX() << m_uBlockSideLengthPower, v3dPos.getY() << m_uBlockSideLengthPower, v3dPos.getZ() << m_uBlockSideLengthPower);
|
|
||||||
Vector3DInt32 v3dUpper = v3dLower + Vector3DInt32(m_uBlockSideLength-1, m_uBlockSideLength-1, m_uBlockSideLength-1);
|
Vector3DInt32 v3dUpper = v3dLower + Vector3DInt32(m_uBlockSideLength-1, m_uBlockSideLength-1, m_uBlockSideLength-1);
|
||||||
|
|
||||||
Region reg(v3dLower, v3dUpper);
|
// Page the data out
|
||||||
|
m_pPager->pageOut(Region(v3dLower, v3dUpper), pCompressedBlock);
|
||||||
|
}
|
||||||
|
|
||||||
m_pPager->pageOut(reg, &(itBlock->second));
|
// We can now remove the block data from memory.
|
||||||
}*/
|
m_pBlocks.erase(itCompressedBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename VoxelType>
|
||||||
// FIXME - the code below used to make sure the uncompressed version of the data was removed. Reinstate something similar.
|
void LargeVolume<VoxelType>::eraseBlock(typename UncompressedBlockMap::iterator itUncompressedBlock) const
|
||||||
/*for(uint32_t ct = 0; ct < m_vecBlocksWithUncompressedData.size(); ct++)
|
{
|
||||||
{
|
|
||||||
// find the block in the uncompressed cache
|
|
||||||
if(m_vecBlocksWithUncompressedData[ct] == &(itBlock->second))
|
|
||||||
{
|
|
||||||
// put last object in cache here
|
|
||||||
m_vecBlocksWithUncompressedData[ct] = m_vecBlocksWithUncompressedData.back();
|
|
||||||
// decrease cache size by one since last element is now in here twice
|
|
||||||
m_vecBlocksWithUncompressedData.resize(m_vecBlocksWithUncompressedData.size()-1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
m_pBlocks.erase(itBlock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename VoxelType>
|
template <typename VoxelType>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user