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