00001 00002 00003 00005 00006 00011 00016 00021 // SimpleX3DGLScene.h // 00023 00024 #ifndef SIMPLEX3DGLSCENE_H 00025 #define SIMPLEX3DGLSCENE_H 00026 00027 #include "X3DTypes.h" 00028 #include "Bbox.h" 00029 00030 namespace X3DTK { 00031 00032 class X3DLoader; 00033 class X3DMemReleaser; 00034 00035 namespace X3D { 00036 00037 class Scene; 00038 class X3DBboxUpdater; 00039 class X3DGLBuilder; 00040 class X3DFileValidator; 00041 00042 } 00043 00044 namespace GL { 00045 00046 class Scene; 00047 class X3DRenderer; 00048 00049 } 00050 00052 00053 class SimpleX3DGLScene 00054 { 00055 public: 00057 SimpleX3DGLScene(); 00059 virtual ~SimpleX3DGLScene(); 00060 00062 virtual void load(const char *file, bool fileValidation = true); 00064 virtual void draw(); 00066 inline SFVec3f getBboxMin() const {return min;}; 00068 inline SFVec3f getBboxMax() const {return max;}; 00070 void release(); 00071 00073 void setLoader(X3DLoader *loader); 00075 void setBboxUpdater(X3D::X3DBboxUpdater *bboxUpdater); 00077 void setGLBuilder(X3D::X3DGLBuilder *builder); 00079 void setGLRenderer(GL::X3DRenderer *renderer); 00081 void setMemReleaser(X3DMemReleaser *memReleaser); 00083 void setFileValidator(X3D::X3DFileValidator *fileValidator); 00084 00086 inline X3DLoader *getLoader() const {return _loader;}; 00088 inline X3D::X3DBboxUpdater *getBboxUpdater() const {return _bboxupdater;}; 00090 inline X3D::X3DGLBuilder *getGLBuilder() const {return _builder;}; 00092 inline GL::X3DRenderer *getGLRenderer() const {return _renderer;}; 00094 inline X3DMemReleaser *getMemReleaser() const {return _releaser;}; 00095 00096 protected: 00097 X3D::Scene *scene; 00098 GL::Scene *glscene; 00099 00100 SFVec3f min; 00101 SFVec3f max; 00102 00103 void loadFile(const char *file, bool fileValidation); 00104 void computeBbox(); 00105 void buildGLScene(); 00106 00107 private: 00108 X3DLoader *_loader; 00109 X3D::X3DBboxUpdater *_bboxupdater; 00110 X3D::X3DGLBuilder *_builder; 00111 GL::X3DRenderer *_renderer; 00112 X3DMemReleaser *_releaser; 00113 }; 00114 00115 } 00116 00117 #endif