TestVolumeSubclass now uses Array2D instead of Array.

This commit is contained in:
David Williams 2014-08-24 21:55:44 +02:00
parent 528873bcd3
commit d49db280d5

View File

@ -23,7 +23,8 @@ freely, subject to the following restrictions:
#include "TestVolumeSubclass.h" #include "TestVolumeSubclass.h"
#include "PolyVoxCore/Array.h" #include "PolyVoxCore/Impl/Array2D.h"
#include "PolyVoxCore/BaseVolume.h" #include "PolyVoxCore/BaseVolume.h"
#include "PolyVoxCore/CubicSurfaceExtractor.h" #include "PolyVoxCore/CubicSurfaceExtractor.h"
#include "PolyVoxCore/Material.h" #include "PolyVoxCore/Material.h"
@ -62,8 +63,9 @@ public:
/// Constructor for creating a fixed size volume. /// Constructor for creating a fixed size volume.
VolumeSubclass(const Region& regValid) VolumeSubclass(const Region& regValid)
:BaseVolume<VoxelType>(regValid) :BaseVolume<VoxelType>(regValid)
, mVolumeData(this->getWidth(), this->getHeight(), this->getDepth())
{ {
mVolumeData.resize(ArraySizes(this->getWidth())(this->getHeight())(this->getDepth())); //mVolumeData.resize(ArraySizes(this->getWidth())(this->getHeight())(this->getDepth()));
} }
/// Destructor /// Destructor
~VolumeSubclass() {}; ~VolumeSubclass() {};
@ -97,7 +99,7 @@ public:
POLYVOX_THROW(std::out_of_range, "Position is outside valid region"); POLYVOX_THROW(std::out_of_range, "Position is outside valid region");
} }
return mVolumeData[uXPos][uYPos][uZPos]; return mVolumeData(uXPos, uYPos, uZPos);
} }
case WrapModes::Clamp: case WrapModes::Clamp:
{ {
@ -108,13 +110,13 @@ public:
uXPos = (std::min)(uXPos, this->m_regValidRegion.getUpperX()); uXPos = (std::min)(uXPos, this->m_regValidRegion.getUpperX());
uYPos = (std::min)(uYPos, this->m_regValidRegion.getUpperY()); uYPos = (std::min)(uYPos, this->m_regValidRegion.getUpperY());
uZPos = (std::min)(uZPos, this->m_regValidRegion.getUpperZ()); uZPos = (std::min)(uZPos, this->m_regValidRegion.getUpperZ());
return mVolumeData[uXPos][uYPos][uZPos]; return mVolumeData(uXPos, uYPos, uZPos);
} }
case WrapModes::Border: case WrapModes::Border:
{ {
if(this->m_regValidRegion.containsPoint(uXPos, uYPos, uZPos)) if(this->m_regValidRegion.containsPoint(uXPos, uYPos, uZPos))
{ {
return mVolumeData[uXPos][uYPos][uZPos]; return mVolumeData(uXPos, uYPos, uZPos);
} }
else else
{ {
@ -123,7 +125,7 @@ public:
} }
case WrapModes::AssumeValid: case WrapModes::AssumeValid:
{ {
return mVolumeData[uXPos][uYPos][uZPos]; return mVolumeData(uXPos, uYPos, uZPos);
} }
default: default:
{ {
@ -147,7 +149,7 @@ public:
{ {
if(this->m_regValidRegion.containsPoint(Vector3DInt32(uXPos, uYPos, uZPos))) if(this->m_regValidRegion.containsPoint(Vector3DInt32(uXPos, uYPos, uZPos)))
{ {
mVolumeData[uXPos][uYPos][uZPos] = tValue; mVolumeData(uXPos, uYPos, uZPos) = tValue;
return true; return true;
} }
else else
@ -165,7 +167,7 @@ public:
//void resize(const Region& regValidRegion); //void resize(const Region& regValidRegion);
private: private:
Array<3, VoxelType> mVolumeData; Array2D<3, VoxelType> mVolumeData;
}; };
void TestVolumeSubclass::testExtractSurface() void TestVolumeSubclass::testExtractSurface()