00001
00002
00003 #ifndef __EXPLORER_H
00004 #define __EXPLORER_H
00005
00006 #include <esg/SceneGraphObject.h>
00007 #include <esg/Transform.h>
00008
00009 #include <stack>
00010 #include <esg/Export>
00011
00012 namespace esg {
00013
00014 class OGSCENE_EXPORT Explorer {
00015 protected:
00016 std::stack<Matrix4*> _trStack;
00017
00018 protected:
00019 virtual bool _explore (SceneGraphObject&);
00020 virtual bool _iterate (SceneGraphObject&);
00021 virtual bool _process_leaf (SceneGraphObject&) = 0;
00022 virtual void _accept_new_transformation (const Matrix4&) = 0;
00023
00024 public:
00025 virtual ~Explorer() {
00026 while (!_trStack.empty()) { delete _trStack.top(); _trStack.pop(); }
00027 }
00028
00029 virtual void explore (SceneGraphObject&);
00030 };
00031
00032 };
00033
00034 #endif // __EXPLORER_H