Removed the assignment operator from SimpleVolume::Sampler and LargeVolume::Sampler. I had forgotten to call the base class assignment operator and this was causing problems.
Also updated the volume unit tests... at least I know now that it's helping!
This commit is contained in:
parent
1f9264a9f8
commit
ab6898c4c5
@ -177,8 +177,6 @@ namespace PolyVox
|
|||||||
Sampler(LargeVolume<VoxelType>* volume);
|
Sampler(LargeVolume<VoxelType>* volume);
|
||||||
~Sampler();
|
~Sampler();
|
||||||
|
|
||||||
Sampler& operator=(const Sampler& rhs);
|
|
||||||
|
|
||||||
/// \deprecated
|
/// \deprecated
|
||||||
POLYVOX_DEPRECATED VoxelType getSubSampledVoxel(uint8_t uLevel) const;
|
POLYVOX_DEPRECATED VoxelType getSubSampledVoxel(uint8_t uLevel) const;
|
||||||
inline VoxelType getVoxel(void) const;
|
inline VoxelType getVoxel(void) const;
|
||||||
|
@ -39,21 +39,6 @@ namespace PolyVox
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename VoxelType>
|
|
||||||
typename LargeVolume<VoxelType>::Sampler& LargeVolume<VoxelType>::Sampler::operator=(const typename LargeVolume<VoxelType>::Sampler& rhs)
|
|
||||||
{
|
|
||||||
if(this == &rhs)
|
|
||||||
{
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
this->mVolume = rhs.mVolume;
|
|
||||||
this->mXPosInVolume = rhs.mXPosInVolume;
|
|
||||||
this->mYPosInVolume = rhs.mYPosInVolume;
|
|
||||||
this->mZPosInVolume = rhs.mZPosInVolume;
|
|
||||||
mCurrentVoxel = rhs.mCurrentVoxel;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename VoxelType>
|
template <typename VoxelType>
|
||||||
VoxelType LargeVolume<VoxelType>::Sampler::getSubSampledVoxel(uint8_t uLevel) const
|
VoxelType LargeVolume<VoxelType>::Sampler::getSubSampledVoxel(uint8_t uLevel) const
|
||||||
{
|
{
|
||||||
|
@ -87,8 +87,6 @@ namespace PolyVox
|
|||||||
Sampler(SimpleVolume<VoxelType>* volume);
|
Sampler(SimpleVolume<VoxelType>* volume);
|
||||||
~Sampler();
|
~Sampler();
|
||||||
|
|
||||||
Sampler& operator=(const Sampler& rhs);
|
|
||||||
|
|
||||||
/// \deprecated
|
/// \deprecated
|
||||||
POLYVOX_DEPRECATED VoxelType getSubSampledVoxel(uint8_t uLevel) const;
|
POLYVOX_DEPRECATED VoxelType getSubSampledVoxel(uint8_t uLevel) const;
|
||||||
/// Get the value of the current voxel
|
/// Get the value of the current voxel
|
||||||
|
@ -42,21 +42,6 @@ namespace PolyVox
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename VoxelType>
|
|
||||||
typename SimpleVolume<VoxelType>::Sampler& SimpleVolume<VoxelType>::Sampler::operator=(const typename SimpleVolume<VoxelType>::Sampler& rhs)
|
|
||||||
{
|
|
||||||
if(this == &rhs)
|
|
||||||
{
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
this->mVolume = rhs.mVolume;
|
|
||||||
this->mXPosInVolume = rhs.mXPosInVolume;
|
|
||||||
this->mYPosInVolume = rhs.mYPosInVolume;
|
|
||||||
this->mZPosInVolume = rhs.mZPosInVolume;
|
|
||||||
mCurrentVoxel = rhs.mCurrentVoxel;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename VoxelType>
|
template <typename VoxelType>
|
||||||
VoxelType SimpleVolume<VoxelType>::Sampler::getSubSampledVoxel(uint8_t uLevel) const
|
VoxelType SimpleVolume<VoxelType>::Sampler::getSubSampledVoxel(uint8_t uLevel) const
|
||||||
{
|
{
|
||||||
|
@ -66,7 +66,7 @@ int32_t complexVolumeTest(void)
|
|||||||
//Test border wrap mode
|
//Test border wrap mode
|
||||||
for(int z = testVolume.getEnclosingRegion().getLowerZ(); z <= testVolume.getEnclosingRegion().getUpperZ(); z++)
|
for(int z = testVolume.getEnclosingRegion().getLowerZ(); z <= testVolume.getEnclosingRegion().getUpperZ(); z++)
|
||||||
{
|
{
|
||||||
//Just a few slices from y
|
//Extending outside in y
|
||||||
for(int y = testVolume.getEnclosingRegion().getLowerY() - 3; y <= testVolume.getEnclosingRegion().getUpperY() + 5; y++)
|
for(int y = testVolume.getEnclosingRegion().getLowerY() - 3; y <= testVolume.getEnclosingRegion().getUpperY() + 5; y++)
|
||||||
{
|
{
|
||||||
for(int x = testVolume.getEnclosingRegion().getLowerX(); x <= testVolume.getEnclosingRegion().getUpperX(); x++)
|
for(int x = testVolume.getEnclosingRegion().getLowerX(); x <= testVolume.getEnclosingRegion().getUpperX(); x++)
|
||||||
@ -81,7 +81,7 @@ int32_t complexVolumeTest(void)
|
|||||||
{
|
{
|
||||||
for(int y = testVolume.getEnclosingRegion().getLowerY(); y <= testVolume.getEnclosingRegion().getUpperY(); y++)
|
for(int y = testVolume.getEnclosingRegion().getLowerY(); y <= testVolume.getEnclosingRegion().getUpperY(); y++)
|
||||||
{
|
{
|
||||||
//Just a few slices from y
|
//Extending outside in x
|
||||||
for(int x = testVolume.getEnclosingRegion().getLowerX() - 2; x <= testVolume.getEnclosingRegion().getUpperX() + 4; x++)
|
for(int x = testVolume.getEnclosingRegion().getLowerX() - 2; x <= testVolume.getEnclosingRegion().getUpperX() + 4; x++)
|
||||||
{
|
{
|
||||||
result += testVolume.getVoxelWithWrapping(x, y, z, WrapModes::Clamp);
|
result += testVolume.getVoxelWithWrapping(x, y, z, WrapModes::Clamp);
|
||||||
@ -89,25 +89,76 @@ int32_t complexVolumeTest(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Test the sampler setPosition
|
||||||
|
/*VolumeType::Sampler sampler(&testVolume);
|
||||||
|
sampler.setWrapMode(WrapModes::Border, 1);
|
||||||
|
|
||||||
|
for(int z = testVolume.getEnclosingRegion().getLowerZ() - 2; z <= testVolume.getEnclosingRegion().getUpperZ() + 1; z++)
|
||||||
|
{
|
||||||
|
for(int y = testVolume.getEnclosingRegion().getLowerY() - 1; y <= testVolume.getEnclosingRegion().getUpperY() + 3; y++)
|
||||||
|
{
|
||||||
|
for(int x = testVolume.getEnclosingRegion().getLowerX() - 4; x <= testVolume.getEnclosingRegion().getUpperX() + 2; x++)
|
||||||
|
{
|
||||||
|
sampler.setPosition(x,y,z);
|
||||||
|
result += sampler.getVoxel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
//Test the sampler move functions
|
||||||
|
VolumeType::Sampler xSampler(&testVolume);
|
||||||
|
VolumeType::Sampler ySampler(&testVolume);
|
||||||
|
VolumeType::Sampler zSampler(&testVolume);
|
||||||
|
VolumeType::Sampler sampler(&testVolume);
|
||||||
|
|
||||||
|
xSampler.setWrapMode(WrapModes::Border, 1);
|
||||||
|
ySampler.setWrapMode(WrapModes::Border, 1);
|
||||||
|
zSampler.setWrapMode(WrapModes::Border, 1);
|
||||||
|
sampler.setWrapMode(WrapModes::Border, 1);
|
||||||
|
|
||||||
|
//zSampler.setPosition(testVolume.getEnclosingRegion().getLowerX() - 4, testVolume.getEnclosingRegion().getLowerY() - 1, testVolume.getEnclosingRegion().getLowerZ() - 2);
|
||||||
|
for(int z = testVolume.getEnclosingRegion().getLowerZ() - 2; z <= testVolume.getEnclosingRegion().getUpperZ() + 1; z++)
|
||||||
|
{
|
||||||
|
//ySampler = zSampler;
|
||||||
|
ySampler.setPosition(testVolume.getEnclosingRegion().getLowerX() - 4, testVolume.getEnclosingRegion().getLowerY() - 1, z);
|
||||||
|
for(int y = testVolume.getEnclosingRegion().getLowerY() - 1; y <= testVolume.getEnclosingRegion().getUpperY() + 3; y++)
|
||||||
|
{
|
||||||
|
xSampler = ySampler;
|
||||||
|
for(int x = testVolume.getEnclosingRegion().getLowerX() - 4; x <= testVolume.getEnclosingRegion().getUpperX() + 2; x++)
|
||||||
|
{
|
||||||
|
sampler.setPosition(x,y,z);
|
||||||
|
|
||||||
|
int32_t sample = sampler.isCurrentPositionValid();
|
||||||
|
int32_t xSample = xSampler.isCurrentPositionValid();
|
||||||
|
assert(sample == xSample);
|
||||||
|
|
||||||
|
result += xSampler.getVoxel();
|
||||||
|
xSampler.movePositiveX();
|
||||||
|
}
|
||||||
|
ySampler.movePositiveY();
|
||||||
|
}
|
||||||
|
//zSampler.movePositiveZ();
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestVolume::testLargeVolume()
|
void TestVolume::testLargeVolume()
|
||||||
{
|
{
|
||||||
int32_t result = complexVolumeTest< LargeVolume<int32_t> >();
|
int32_t result = complexVolumeTest< LargeVolume<int32_t> >();
|
||||||
QCOMPARE(result, static_cast<int32_t>(616456320));
|
QCOMPARE(result, static_cast<int32_t>(818107008));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestVolume::testRawVolume()
|
void TestVolume::testRawVolume()
|
||||||
{
|
{
|
||||||
int32_t result = complexVolumeTest< RawVolume<int32_t> >();
|
int32_t result = complexVolumeTest< RawVolume<int32_t> >();
|
||||||
QCOMPARE(result, static_cast<int32_t>(616456320));
|
QCOMPARE(result, static_cast<int32_t>(818107008));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestVolume::testSimpleVolume()
|
void TestVolume::testSimpleVolume()
|
||||||
{
|
{
|
||||||
int32_t result = complexVolumeTest< SimpleVolume<int32_t> >();
|
int32_t result = complexVolumeTest< SimpleVolume<int32_t> >();
|
||||||
QCOMPARE(result, static_cast<int32_t>(616456320));
|
QCOMPARE(result, static_cast<int32_t>(818107008));
|
||||||
}
|
}
|
||||||
|
|
||||||
QTEST_MAIN(TestVolume)
|
QTEST_MAIN(TestVolume)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user