#ifndef _3DS_WRITER_COMPARE_TRIANGLE_HEADER__ #define _3DS_WRITER_COMPARE_TRIANGLE_HEADER__ #include #include #include struct Triangle { unsigned int t1; unsigned int t2; unsigned int t3; unsigned int material; }; class WriterCompareTriangle { public: WriterCompareTriangle(const osg::Geode & geode, unsigned int nbVertices); bool operator()(const std::pair & t1, const std::pair & t2) const; private: void // This function prevent from cut scene in too many blocs setMaxMin(unsigned int & nbVerticesX, unsigned int & nbVerticesY, unsigned int & nbVerticesZ) const; /** * Cut the scene in different bloc to sort. * \param nbVertices is the number of vertice in mesh. * \param sceneBox contain the size of the scene. */ void cutscene(int nbVertices, const osg::BoundingBox & sceneBox); /** * Find in which box those points are. * \return the place of the box in the vector. * \sa See cutScene() about the definition of the boxes for faces sorting. */ int inWhichBox(const osg::BoundingBox::value_type x, const osg::BoundingBox::value_type y, const osg::BoundingBox::value_type z) const; int inWhichBox(const osg::BoundingBox::vec_type & point) const; const osg::Geode & geode; std::vector boxList; }; #endif // _3DS_WRITER_COMPARE_TRIANGLE_HEADER__