00001 00002 // MESH_MeshX3DBuilderStateVariables.h // 00004 00005 #ifndef MESHX3DBUILDERGLOBALVARIABLES_H 00006 #define MESHX3DBUILDERGLOBALVARIABLES_H 00007 00008 #include "StateVariables.h" 00009 #include "MESH_X3DNode.h" 00010 #include "X3D_X3DNode.h" 00011 #include "Cloner.h" 00012 00013 #include <map> 00014 00015 namespace X3DTK { 00016 namespace MESH { 00017 00019 00020 class MeshX3DBuilderStateVariables : public StateVariables 00021 { 00022 public: 00024 MeshX3DBuilderStateVariables(); 00026 virtual ~MeshX3DBuilderStateVariables(); 00028 virtual void init(); 00030 virtual void finish(); 00031 00033 void addCoupleNode(SFNode N, X3D::SFNode NN); 00035 void pushNode(X3D::SFNode N); 00037 void popNode(); 00038 00040 inline X3D::SFNode getRoot() const {return _root;}; 00042 inline X3D::SFNode getTop() const {return (!_nodeStack.empty() ? _nodeStack.front() : 0);}; 00044 X3D::SFNode getNode(SFNode N) const; 00046 X3D::X3DNode *clone(X3D::X3DNode *N); 00047 00048 private: 00049 X3D::SFNode _root; 00050 X3D::MFNode _nodeStack; 00051 std::map<SFNode, X3D::SFNode> _nodeCoupleMap; 00052 Cloner *_cloner; 00053 }; 00054 00055 } 00056 } 00057 00058 #endif