Merge branch 'master' of git@gitorious.org:polyvox/polyvox.git

This commit is contained in:
unknown 2012-04-16 15:23:53 +02:00
commit 2207b494e6
6 changed files with 32 additions and 266 deletions

View File

@ -177,12 +177,18 @@ namespace PolyVox
void SimpleVolume<VoxelType>::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))
{

View File

@ -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

View File

@ -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 <set>
namespace PolyVox
{
class SurfaceVertex;
typedef std::set<SurfaceVertex>::iterator SurfaceVertexIterator;
typedef std::set<SurfaceVertex>::const_iterator SurfaceVertexConstIterator;
class SurfaceTriangle;
typedef std::set<SurfaceTriangle>::iterator SurfaceTriangleIterator;
typedef std::set<SurfaceTriangle>::const_iterator SurfaceTriangleConstIterator;
class SurfaceEdge;
typedef std::set<SurfaceEdge>::iterator SurfaceEdgeIterator;
typedef std::set<SurfaceEdge>::const_iterator SurfaceEdgeConstIterator;
}
#endif

View File

@ -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 <sstream>
#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;
}
}

View File

@ -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;

View File

@ -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