Merge branch 'master' of git@gitorious.org:polyvox/polyvox.git
This commit is contained in:
commit
2207b494e6
@ -177,12 +177,18 @@ namespace PolyVox
|
|||||||
void SimpleVolume<VoxelType>::initialise(const Region& regValidRegion, uint16_t uBlockSideLength)
|
void SimpleVolume<VoxelType>::initialise(const Region& regValidRegion, uint16_t uBlockSideLength)
|
||||||
{
|
{
|
||||||
//Debug mode validation
|
//Debug mode validation
|
||||||
assert(uBlockSideLength > 0);
|
assert(uBlockSideLength >= 8);
|
||||||
|
assert(uBlockSideLength <= 256);
|
||||||
|
assert(isPowerOf2(uBlockSideLength));
|
||||||
|
|
||||||
//Release mode validation
|
//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))
|
if(!isPowerOf2(uBlockSideLength))
|
||||||
{
|
{
|
||||||
|
@ -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
|
|
@ -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
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -317,7 +317,7 @@ namespace PolyVox
|
|||||||
|
|
||||||
//Resize the volume
|
//Resize the volume
|
||||||
//HACK - Forces block size to 32. This functions needs reworking anyway due to large volume support.
|
//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
|
//Read data
|
||||||
bool firstTime = true;
|
bool firstTime = true;
|
||||||
|
@ -90,28 +90,28 @@ void TestAStarPathfinder::testExecute()
|
|||||||
{
|
{
|
||||||
Vector3DInt32(0,0,0),
|
Vector3DInt32(0,0,0),
|
||||||
Vector3DInt32(1,1,1),
|
Vector3DInt32(1,1,1),
|
||||||
Vector3DInt32(2,2,1),
|
Vector3DInt32(2,1,2),
|
||||||
Vector3DInt32(3,3,1),
|
Vector3DInt32(3,1,3),
|
||||||
Vector3DInt32(4,4,1),
|
Vector3DInt32(4,1,4),
|
||||||
Vector3DInt32(4,5,1),
|
Vector3DInt32(5,1,5),
|
||||||
Vector3DInt32(5,6,1),
|
Vector3DInt32(6,1,5),
|
||||||
Vector3DInt32(6,7,2),
|
Vector3DInt32(7,2,6),
|
||||||
Vector3DInt32(7,8,3),
|
Vector3DInt32(8,3,7),
|
||||||
Vector3DInt32(8,9,3),
|
Vector3DInt32(9,3,8),
|
||||||
Vector3DInt32(9,10,3),
|
Vector3DInt32(10,3,9),
|
||||||
Vector3DInt32(10,11,3),
|
Vector3DInt32(11,3,10),
|
||||||
Vector3DInt32(11,12,4),
|
Vector3DInt32(12,4,11),
|
||||||
Vector3DInt32(12,13,5),
|
Vector3DInt32(12,5,11),
|
||||||
Vector3DInt32(13,13,6),
|
Vector3DInt32(13,6,12),
|
||||||
Vector3DInt32(13,13,7),
|
Vector3DInt32(13,7,13),
|
||||||
Vector3DInt32(13,13,8),
|
Vector3DInt32(13,8,13),
|
||||||
Vector3DInt32(13,13,9),
|
Vector3DInt32(13,9,13),
|
||||||
Vector3DInt32(14,14,10),
|
Vector3DInt32(14,10,14),
|
||||||
Vector3DInt32(14,14,11),
|
Vector3DInt32(14,11,14),
|
||||||
Vector3DInt32(14,14,12),
|
Vector3DInt32(14,12,14),
|
||||||
Vector3DInt32(14,14,13),
|
Vector3DInt32(15,13,15),
|
||||||
Vector3DInt32(15,15,14),
|
Vector3DInt32(15,14,15),
|
||||||
Vector3DInt32(15,15,15),
|
Vector3DInt32(15,15,15)
|
||||||
};
|
};
|
||||||
#endif //_MSC_VER
|
#endif //_MSC_VER
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user