Cleaning up decimation, moving to sets.

This commit is contained in:
David Williams 2007-09-23 23:54:10 +00:00
parent 42e4526498
commit cabc988625
5 changed files with 41 additions and 29 deletions

View File

@ -35,6 +35,9 @@ namespace Ogre
{ {
public: public:
friend bool operator == (const SurfaceEdge& lhs, const SurfaceEdge& rhs);
friend bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs);
//int crud; //int crud;
SurfaceVertexIterator target; SurfaceVertexIterator target;
@ -52,10 +55,7 @@ namespace Ogre
std::string toString(void); std::string toString(void);
bool isDegenerate(void); bool isDegenerate(void);
}; };
bool operator == (const SurfaceEdge& lhs, const SurfaceEdge& rhs);
bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs);
} }
#endif #endif

View File

@ -34,16 +34,22 @@ namespace Ogre
class SurfaceTriangle class SurfaceTriangle
{ {
public: public:
SurfaceEdgeIterator edge;
SurfaceTriangle(); SurfaceTriangle();
friend bool operator == (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
friend bool operator < (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
const SurfaceEdgeIterator& getEdge(void) const;
void setEdge(const SurfaceEdgeIterator& edgeToSet);
//std::string toString(void); //std::string toString(void);
private:
SurfaceEdgeIterator edge;
}; };
bool operator == (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
bool operator < (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
//bool operator < (const SurfaceTriangleIterator& lhs, const SurfaceTriangleIterator& rhs); //bool operator < (const SurfaceTriangleIterator& lhs, const SurfaceTriangleIterator& rhs);
} }

View File

@ -15,9 +15,8 @@ namespace Ogre
{ {
return return
( (
(lhs.target == rhs.target) && ((*lhs.target) == (*rhs.target)) &&
//(lhs.triangle == rhs.triangle) ((*lhs.otherHalfEdge->target) == (*rhs.otherHalfEdge->target))
(lhs.otherHalfEdge == rhs.otherHalfEdge)
); );
} }
@ -28,14 +27,16 @@ namespace Ogre
bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs) bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs)
{ {
if(lhs.target == rhs.target) if ((*lhs.target) < (*rhs.target))
{ return true;
if(lhs.otherHalfEdge->target == rhs.otherHalfEdge->target) if ((*rhs.target) < (*lhs.target))
{ return false;
return false;
} if ((*lhs.otherHalfEdge->target) < (*rhs.otherHalfEdge->target))
return (*(lhs.otherHalfEdge->target) < *(rhs.otherHalfEdge->target)); return true;
} if ((*rhs.otherHalfEdge->target) < (*lhs.otherHalfEdge->target))
return (*(lhs.target) < *(rhs.target)); return false;
return false;
} }
} }

View File

@ -87,7 +87,7 @@ namespace Ogre
SurfaceTriangle triangle; SurfaceTriangle triangle;
triangle.edge = v0v1Iter; triangle.setEdge(v0v1Iter);
//m_listTriangles.push_back(triangle); //m_listTriangles.push_back(triangle);
//SurfaceTriangleIterator iterTriangle = m_listTriangles.end(); //SurfaceTriangleIterator iterTriangle = m_listTriangles.end();
@ -273,7 +273,7 @@ namespace Ogre
std::vector<SurfaceVertex>::iterator iterVertex; std::vector<SurfaceVertex>::iterator iterVertex;
SurfaceEdgeIterator edgeIter; SurfaceEdgeIterator edgeIter;
edgeIter = iterTriangles->edge; edgeIter = iterTriangles->getEdge();
//LogManager::getSingleton().logMessage("Edge Target " + StringConverter::toString(edgeIter->target->position.x) + "," + StringConverter::toString(edgeIter->target->position.y) + "," + StringConverter::toString(edgeIter->target->position.z)); //LogManager::getSingleton().logMessage("Edge Target " + StringConverter::toString(edgeIter->target->position.x) + "," + StringConverter::toString(edgeIter->target->position.y) + "," + StringConverter::toString(edgeIter->target->position.z));
iterVertex = find(vertexData.begin(), vertexData.end(), *(edgeIter->target)); iterVertex = find(vertexData.begin(), vertexData.end(), *(edgeIter->target));
//LogManager::getSingleton().logMessage(""); //LogManager::getSingleton().logMessage("");

View File

@ -8,6 +8,16 @@ namespace Ogre
{ {
} }
const SurfaceEdgeIterator& SurfaceTriangle::getEdge(void) const
{
return edge;
}
void SurfaceTriangle::setEdge(const SurfaceEdgeIterator& edgeToSet)
{
edge = edgeToSet;
}
/*std::string SurfaceTriangle::toString(void) /*std::string SurfaceTriangle::toString(void)
{ {
std::stringstream ss; std::stringstream ss;
@ -35,16 +45,11 @@ namespace Ogre
bool operator == (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs) bool operator == (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs)
{ {
return lhs.edge == rhs.edge; return (*lhs.edge == *rhs.edge);
} }
bool operator < (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs) bool operator < (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs)
{ {
return (*lhs.edge < *rhs.edge); return (*lhs.edge < *rhs.edge);
} }
/*bool operator < (const SurfaceTriangleIterator& lhs, const SurfaceTriangleIterator& rhs)
{
return (*lhs) < (*rhs);
}*/
} }