00001 00002 // SimpleX3DGLScene.h // 00004 00005 #ifndef SIMPLEX3DGLSCENE_H 00006 #define SIMPLEX3DGLSCENE_H 00007 00008 #include "X3DTypes.h" 00009 #include "BBox.h" 00010 00011 namespace X3DTK { 00012 00013 class X3DMemReleaser; 00014 00015 namespace X3D { 00016 00017 class Scene; 00018 class Loader; 00019 class X3DBBoxUpdater; 00020 class X3DGLBuilder; 00021 class X3DFileValidator; 00022 00023 } 00024 00025 namespace GL { 00026 00027 class Scene; 00028 class X3DRenderer; 00029 00030 } 00031 00033 00034 class SimpleX3DGLScene 00035 { 00036 public: 00038 SimpleX3DGLScene(); 00040 virtual ~SimpleX3DGLScene(); 00041 00043 virtual void load(const char *file, bool fileValidation = true); 00045 virtual void draw(); 00047 inline SFVec3f getBBoxMin() const {return min;}; 00049 inline SFVec3f getBBoxMax() const {return max;}; 00051 void release(); 00052 00054 void setLoader(X3D::Loader *loader); 00056 void setBBoxUpdater(X3D::X3DBBoxUpdater *bboxUpdater); 00058 void setGLBuilder(X3D::X3DGLBuilder *builder); 00060 void setGLRenderer(GL::X3DRenderer *renderer); 00062 void setMemReleaser(X3DMemReleaser *memReleaser); 00064 void setFileValidator(X3D::X3DFileValidator *fileValidator); 00065 00067 inline X3D::Loader *getLoader() const {return _loader;}; 00069 inline X3D::X3DBBoxUpdater *getBBoxUpdater() const {return _bboxupdater;}; 00071 inline X3D::X3DGLBuilder *getGLBuilder() const {return _builder;}; 00073 inline GL::X3DRenderer *getGLRenderer() const {return _renderer;}; 00075 inline X3DMemReleaser *getMemReleaser() const {return _releaser;}; 00076 00077 protected: 00078 X3D::Scene *scene; 00079 GL::Scene *glscene; 00080 00081 SFVec3f min; 00082 SFVec3f max; 00083 00084 void loadFile(const char *file, bool fileValidation); 00085 void computeBBox(); 00086 void buildGLScene(); 00087 00088 private: 00089 X3D::Loader *_loader; 00090 X3D::X3DBBoxUpdater *_bboxupdater; 00091 X3D::X3DGLBuilder *_builder; 00092 GL::X3DRenderer *_renderer; 00093 X3DMemReleaser *_releaser; 00094 }; 00095 00096 } 00097 00098 #endif