00001 #ifndef X3DTK_MESH_MESHSIMPLIFIERSTATEVARIABLES_H
00002 #define X3DTK_MESH_MESHSIMPLIFIERSTATEVARIABLES_H
00003
00004 #include "MESH_SceneGraphTypes.h"
00005 #include "MESH_Mesh.h"
00006 #include "MESH_Vertex.h"
00007
00008 #include <list>
00009 #include <vector>
00010 #include <map>
00011
00012 namespace X3DTK {
00013 namespace MESH {
00014
00021 template<class MData, class VData, class EData, class FData, bool RW>
00022 class TemplateMeshSimplifierStateVariables : public StateVariables
00023 {
00024 public:
00026 TemplateMeshSimplifierStateVariables();
00027
00029 void init();
00031 void finish();
00032
00034 void addNode(SFNode N);
00036 bool getNode(SFNode N) const;
00037
00039 inline TemplateMesh<MData, VData, EData, FData, RW> *getMesh() const {return _mesh;};
00040
00042 void addCoupleVertex(SFTemplateVertex<MData, VData, EData, FData, RW> *A, SFTemplateVertex<MData, VData, EData, FData, RW> *B);
00044 SFTemplateVertex<MData, VData, EData, FData, RW> *getNode(SFTemplateVertex<MData, VData, EData, FData, RW> *V) const;
00045
00046 private:
00047 std::list<SFNode> _nodeList;
00048 TemplateMesh<MData, VData, EData, FData, RW> *_mesh;
00049 std::map<SFTemplateVertex<MData, VData, EData, FData, RW> *, SFTemplateVertex<MData, VData, EData, FData, RW> *> _vertexMap;
00050 };
00051
00052 }
00053 }
00054
00055 #include "MESH_MeshSimplifierStateVariables.inl"
00056
00057 #endif