Files
OpenSceneGraph/src/osgPlugins/fbx/WriterCompareTriangle.h
2012-03-21 17:36:20 +00:00

52 lines
1.5 KiB
C++

#ifndef _3DS_WRITER_COMPARE_TRIANGLE_HEADER__
#define _3DS_WRITER_COMPARE_TRIANGLE_HEADER__
#include <osg/Geode>
#include <osg/Geometry>
#include <iostream>
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<Triangle, int>& t1,
const std::pair<Triangle, int>& t2) const;
private:
void // This function prevents the scene being cut into too many boxes
setMaxMin(unsigned int& nbVerticesX,
unsigned int& nbVerticesY,
unsigned int& nbVerticesZ) const;
/**
* Cut the scene in different box to sort.
* \param nbVertices is the number of vertices 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::Vec3::value_type x,
const osg::Vec3::value_type y,
const osg::Vec3::value_type z) const;
const osg::Geode& geode;
std::vector<osg::BoundingBox> boxList;
};
#endif // _3DS_WRITER_COMPARE_TRIANGLE_HEADER__