diff --git a/library/PolyVoxCore/include/PolyVoxCore/SimpleVolume.inl b/library/PolyVoxCore/include/PolyVoxCore/SimpleVolume.inl index 00dc92d5..ef274d31 100644 --- a/library/PolyVoxCore/include/PolyVoxCore/SimpleVolume.inl +++ b/library/PolyVoxCore/include/PolyVoxCore/SimpleVolume.inl @@ -177,12 +177,18 @@ namespace PolyVox void SimpleVolume::initialise(const Region& regValidRegion, uint16_t uBlockSideLength) { //Debug mode validation - assert(uBlockSideLength > 0); + assert(uBlockSideLength >= 8); + assert(uBlockSideLength <= 256); + assert(isPowerOf2(uBlockSideLength)); //Release mode validation - if(uBlockSideLength == 0) + if(uBlockSideLength < 8) { - throw std::invalid_argument("Block side length cannot be zero."); + throw std::invalid_argument("Block side length should be at least 8"); + } + if(uBlockSideLength > 256) + { + throw std::invalid_argument("Block side length should not be more than 256"); } if(!isPowerOf2(uBlockSideLength)) { diff --git a/library/PolyVoxCore/include/PolyVoxCore/SurfaceEdge.h b/library/PolyVoxCore/include/PolyVoxCore/SurfaceEdge.h deleted file mode 100644 index 5f516190..00000000 --- a/library/PolyVoxCore/include/PolyVoxCore/SurfaceEdge.h +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* -Copyright (c) 2005-2009 David Williams - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. -*******************************************************************************/ - -#ifndef __PolyVox_SurfaceEdge_H__ -#define __PolyVox_SurfaceEdge_H__ - -#include "SurfaceTypes.h" - -namespace PolyVox -{ - class SurfaceEdge - { - public: - SurfaceEdge(const SurfaceVertexIterator& targetToSet,const SurfaceVertexIterator& sourceToSet); - - friend bool operator == (const SurfaceEdge& lhs, const SurfaceEdge& rhs); - friend bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs); - - - std::string tostring(void); - - bool isDegenerate(void); - - const SurfaceVertexIterator& getTarget(void) const; - const SurfaceVertexIterator& getSource(void) const; - const SurfaceEdgeIterator& getOtherHalfEdge(void) const; - const SurfaceEdgeIterator& getPreviousHalfEdge(void) const; - const SurfaceEdgeIterator& getNextHalfEdge(void) const; - const SurfaceTriangleIterator& getTriangle(void) const; - - void setPreviousHalfEdge(const SurfaceEdgeIterator& previousHalfEdgeToSet); - void setNextHalfEdge(const SurfaceEdgeIterator& nextHalfEdgeToSet); - void setTriangle(const SurfaceTriangleIterator& triangleToSet); - - void pairWithOtherHalfEdge(const SurfaceEdgeIterator& otherHalfEdgeToPair); - - private: - SurfaceVertexIterator target; - SurfaceVertexIterator source; - - SurfaceEdgeIterator previousHalfEdge; - SurfaceEdgeIterator nextHalfEdge; - SurfaceEdgeIterator otherHalfEdge; - - SurfaceTriangleIterator triangle; - }; -} - -#endif diff --git a/library/PolyVoxCore/include/PolyVoxCore/SurfaceTypes.h b/library/PolyVoxCore/include/PolyVoxCore/SurfaceTypes.h deleted file mode 100644 index 197a07ae..00000000 --- a/library/PolyVoxCore/include/PolyVoxCore/SurfaceTypes.h +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* -Copyright (c) 2005-2009 David Williams - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. -*******************************************************************************/ - -#ifndef __PolyVox_SurfaceTypes_H__ -#define __PolyVox_SurfaceTypes_H__ - -#include - -namespace PolyVox -{ - class SurfaceVertex; - typedef std::set::iterator SurfaceVertexIterator; - typedef std::set::const_iterator SurfaceVertexConstIterator; - class SurfaceTriangle; - typedef std::set::iterator SurfaceTriangleIterator; - typedef std::set::const_iterator SurfaceTriangleConstIterator; - class SurfaceEdge; - typedef std::set::iterator SurfaceEdgeIterator; - typedef std::set::const_iterator SurfaceEdgeConstIterator; -} - -#endif diff --git a/library/PolyVoxCore/source/SurfaceEdge.cpp b/library/PolyVoxCore/source/SurfaceEdge.cpp deleted file mode 100644 index e1f5df8a..00000000 --- a/library/PolyVoxCore/source/SurfaceEdge.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/******************************************************************************* -Copyright (c) 2005-2009 David Williams - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. -*******************************************************************************/ - -#include - -#include "SurfaceEdge.h" -#include "SurfaceTriangle.h" -#include "SurfaceVertex.h" - -namespace PolyVox -{ - SurfaceEdge::SurfaceEdge(const SurfaceVertexIterator& targetToSet,const SurfaceVertexIterator& sourceToSet) - { - target = targetToSet; - source = sourceToSet; - } - - std::string SurfaceEdge::tostring(void) - { - std::stringstream ss; - ss << "SurfaceEdge: Target Vertex = " << target->tostring() << "Source Vertex = " << source->tostring(); - return ss.str(); - } - - bool operator == (const SurfaceEdge& lhs, const SurfaceEdge& rhs) - { - //Vertices are unique in the set, so if the two positions are the same the - //two iterators must also be the same. So we just check the iterators. - return - ( - (lhs.target == rhs.target) && - (lhs.source == rhs.source) - ); - } - - bool SurfaceEdge::isDegenerate(void) - { - return (target == source); - } - - bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs) - { - //Unlike the equality operator, we can't compare iterators. - //So dereference and compare the results. - if ((*lhs.target) < (*rhs.target)) - return true; - if ((*rhs.target) < (*lhs.target)) - return false; - - if ((*lhs.source) < (*rhs.source)) - return true; - if ((*rhs.source) < (*lhs.source)) - return false; - - return false; - } - - const SurfaceVertexIterator& SurfaceEdge::getTarget(void) const - { - return target; - } - - const SurfaceVertexIterator& SurfaceEdge::getSource(void) const - { - return source; - } - - void SurfaceEdge::pairWithOtherHalfEdge(const SurfaceEdgeIterator& otherHalfEdgeToPair) - { - otherHalfEdge = otherHalfEdgeToPair; - previousHalfEdge = otherHalfEdgeToPair; - nextHalfEdge = otherHalfEdgeToPair; - } - - const SurfaceEdgeIterator& SurfaceEdge::getOtherHalfEdge(void) const - { - return otherHalfEdge; - } - - const SurfaceEdgeIterator& SurfaceEdge::getPreviousHalfEdge(void) const - { - return previousHalfEdge; - } - - const SurfaceEdgeIterator& SurfaceEdge::getNextHalfEdge(void) const - { - return nextHalfEdge; - } - - const SurfaceTriangleIterator& SurfaceEdge::getTriangle(void) const - { - return triangle; - } - - void SurfaceEdge::setPreviousHalfEdge(const SurfaceEdgeIterator& previousHalfEdgeToSet) - { - previousHalfEdge = previousHalfEdgeToSet; - } - - void SurfaceEdge::setNextHalfEdge(const SurfaceEdgeIterator& nextHalfEdgeToSet) - { - nextHalfEdge = nextHalfEdgeToSet; - } - - void SurfaceEdge::setTriangle(const SurfaceTriangleIterator& triangleToSet) - { - triangle = triangleToSet; - } -} diff --git a/library/PolyVoxUtil/include/PolyVoxUtil/Serialization.inl b/library/PolyVoxUtil/include/PolyVoxUtil/Serialization.inl index 054a8f7f..c65535ba 100644 --- a/library/PolyVoxUtil/include/PolyVoxUtil/Serialization.inl +++ b/library/PolyVoxUtil/include/PolyVoxUtil/Serialization.inl @@ -317,7 +317,7 @@ namespace PolyVox //Resize the volume //HACK - Forces block size to 32. This functions needs reworking anyway due to large volume support. - volume.resize(Region(Vector3DInt32(0,0,0), Vector3DInt32(volumeWidth, volumeHeight, volumeDepth)), 32); + volume.resize(Region(Vector3DInt32(0,0,0), Vector3DInt32(volumeWidth-1, volumeHeight-1, volumeDepth-1)), 32); //Read data bool firstTime = true; diff --git a/tests/TestAStarPathfinder.cpp b/tests/TestAStarPathfinder.cpp index 3f092ec6..d1c97dc7 100644 --- a/tests/TestAStarPathfinder.cpp +++ b/tests/TestAStarPathfinder.cpp @@ -90,28 +90,28 @@ void TestAStarPathfinder::testExecute() { Vector3DInt32(0,0,0), Vector3DInt32(1,1,1), - Vector3DInt32(2,2,1), - Vector3DInt32(3,3,1), - Vector3DInt32(4,4,1), - Vector3DInt32(4,5,1), - Vector3DInt32(5,6,1), - Vector3DInt32(6,7,2), - Vector3DInt32(7,8,3), - Vector3DInt32(8,9,3), - Vector3DInt32(9,10,3), - Vector3DInt32(10,11,3), - Vector3DInt32(11,12,4), - Vector3DInt32(12,13,5), - Vector3DInt32(13,13,6), - Vector3DInt32(13,13,7), - Vector3DInt32(13,13,8), - Vector3DInt32(13,13,9), - Vector3DInt32(14,14,10), - Vector3DInt32(14,14,11), - Vector3DInt32(14,14,12), - Vector3DInt32(14,14,13), - Vector3DInt32(15,15,14), - Vector3DInt32(15,15,15), + Vector3DInt32(2,1,2), + Vector3DInt32(3,1,3), + Vector3DInt32(4,1,4), + Vector3DInt32(5,1,5), + Vector3DInt32(6,1,5), + Vector3DInt32(7,2,6), + Vector3DInt32(8,3,7), + Vector3DInt32(9,3,8), + Vector3DInt32(10,3,9), + Vector3DInt32(11,3,10), + Vector3DInt32(12,4,11), + Vector3DInt32(12,5,11), + Vector3DInt32(13,6,12), + Vector3DInt32(13,7,13), + Vector3DInt32(13,8,13), + Vector3DInt32(13,9,13), + Vector3DInt32(14,10,14), + Vector3DInt32(14,11,14), + Vector3DInt32(14,12,14), + Vector3DInt32(15,13,15), + Vector3DInt32(15,14,15), + Vector3DInt32(15,15,15) }; #endif //_MSC_VER