Refactoring work... working on meshes

This commit is contained in:
David Williams
2007-09-02 11:16:58 +00:00
parent abe66c3d81
commit 80c6f149a5
7 changed files with 188 additions and 37 deletions

View File

@ -4,8 +4,7 @@
#include <list>
#include <vector>
#include "SurfaceVertex.h"
#include "SurfaceTriangle.h"
#include "IntegralVector3.h"
#include "VolumeIterator.h"
@ -19,6 +18,11 @@ namespace Ogre
SOBEL
};
class SurfaceVertex;
typedef std::set<SurfaceVertex>::iterator SurfaceVertexIterator;
class SurfaceTriangle;
typedef std::set<SurfaceTriangle>::iterator SurfaceTriangleIterator;
class SurfacePatch
{
public:
@ -34,11 +38,15 @@ namespace Ogre
void computeNormalsFromVolume(VolumeIterator volIter);
void decimate(void);
//bool verticesArePlanar(SurfaceVertexIterator iterCurrentVertex);
UIntVector3 m_v3dOffset;
private:
std::set<SurfaceVertex> m_setVertices;
std::list<SurfaceTriangle> m_listTriangles;
std::set<SurfaceTriangle> m_setTriangles;
//std::vector<SurfaceVertex> m_vecVertexData;
//std::vector<uint> m_vecIndexData;

View File

@ -22,30 +22,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "OgrePrerequisites.h"
#include "OgreVector3.h"
namespace Ogre
{
class SurfaceVertex;
typedef std::set<SurfaceVertex>::iterator SurfaceVertexIterator;
class SurfaceTriangle;
typedef std::set<SurfaceTriangle>::iterator SurfaceTriangleIterator;
class SurfaceTriangle
{
public:
//FIXME - maybe these should be short?
/*ulong v0;
ulong v1;
ulong v2;*/
std::set<SurfaceVertex>::iterator v0;
std::set<SurfaceVertex>::iterator v1;
std::set<SurfaceVertex>::iterator v2;
SurfaceVertexIterator v0;
SurfaceVertexIterator v1;
SurfaceVertexIterator v2;
SurfaceTriangle();
SurfaceTriangle(std::set<SurfaceVertex>::iterator v0ToSet, std::set<SurfaceVertex>::iterator v1ToSet, std::set<SurfaceVertex>::iterator v2ToSet);
//bool operator < (const SurfaceTriangle& rhs) const;
SurfaceTriangle(SurfaceVertexIterator v0ToSet, SurfaceVertexIterator v1ToSet, SurfaceVertexIterator v2ToSet);
};
typedef std::set<SurfaceTriangle>::iterator SurfaceTriangleIterator;
bool operator == (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
bool operator < (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
//bool operator < (const SurfaceTriangleIterator& lhs, const SurfaceTriangleIterator& rhs);
}
#endif

View File

@ -26,28 +26,34 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "IntegralVector3.h"
namespace Ogre
{
{
class SurfaceVertex;
typedef std::set<SurfaceVertex>::iterator SurfaceVertexIterator;
class SurfaceTriangle;
typedef std::set<SurfaceTriangle>::iterator SurfaceTriangleIterator;
class SurfaceVertex
{
public:
public:
UIntVector3 position;
Vector3 normal;
float alpha;
std::list<std::list<SurfaceTriangle>::iterator> listTrianglesUsingThisVertex;
std::list<SurfaceTriangleIterator> listTrianglesUsingThisVertex;
std::list<SurfaceVertexIterator> listConnectedVertices;
SurfaceVertex();
SurfaceVertex(UIntVector3 positionToSet);
SurfaceVertex(UIntVector3 positionToSet, Vector3 normalToSet);
bool operator==(const SurfaceVertex& rhs) const;
bool operator < (const SurfaceVertex& rhs) const;
SurfaceVertex(UIntVector3 positionToSet, Vector3 normalToSet);
};
bool operator==(const SurfaceVertex& lhs, const SurfaceVertex& rhs);
bool operator < (const SurfaceVertex& lhs, const SurfaceVertex& rhs);
//bool operator < (const SurfaceVertexIterator& lhs, const SurfaceVertexIterator& rhs);
}
#endif