00001 #ifndef X3DTK_X3D_WORLDCOORDTRANSLATORSTATEVARIABLES_H 00002 #define X3DTK_X3D_WORLDCOORDTRANSLATORSTATEVARIABLES_H 00003 00004 #include "X3D_SceneGraphTypes.h" 00005 #include "StateVariables.h" 00006 00007 #include <list> 00008 00009 namespace X3DTK { 00010 namespace X3D { 00011 00018 class WorldCoordTranslatorStateVariables : public StateVariables 00019 { 00020 public: 00022 WorldCoordTranslatorStateVariables(); 00024 virtual ~WorldCoordTranslatorStateVariables(); 00025 00027 void init(); 00029 void finish(); 00030 00032 void pushMatrix(const SFMatrix34f &transformation); 00034 void pushProcessedNode(SFNode N); 00035 00037 void pushNode(SFNode N); 00039 void popNode(); 00041 void popMatrix(); 00042 00044 inline SFNode getParent() const {return _nodeStack.back();}; 00045 00047 SFMatrix34f getMatrix() const {return _matrixStack.front();}; 00049 bool findProcessedNode(SFNode N); 00050 00051 private: 00052 std::list<SFMatrix34f> _matrixStack; 00053 std::list<SFNode> _nodeList; 00054 std::list<SFNode> _nodeStack; 00055 }; 00056 00057 } 00058 } 00059 00060 #endif