00001 #ifndef SIMPLEX3DGLSCENE_H 00002 #define SIMPLEX3DGLSCENE_H 00003 00004 #include "X3DTypes.h" 00005 #include "BBox.h" 00006 #include "X3D_Scene.h" 00007 00008 namespace X3DTK { 00009 00010 class X3DMemReleaser; 00011 00012 namespace X3D { 00013 00014 class Loader; 00015 class X3DBBoxUpdater; 00016 class X3DGLBuilder; 00017 class X3DFileValidator; 00018 00019 } 00020 00021 namespace GL { 00022 00023 class Scene; 00024 class X3DRenderer; 00025 00026 } 00027 00052 class SimpleX3DGLScene 00053 { 00054 public: 00056 SimpleX3DGLScene(); 00058 virtual ~SimpleX3DGLScene(); 00059 00061 virtual void load(const char *file, bool fileValidation = true); 00063 virtual void draw(); 00065 virtual void select(double x, double y); 00067 inline SFVec3f getBBoxMin() const {return min;}; 00069 inline SFVec3f getBBoxMax() const {return max;}; 00071 void release(); 00072 00074 void setLoader(X3D::Loader *loader); 00076 void setBBoxUpdater(X3D::X3DBBoxUpdater *bboxUpdater); 00078 void setGLBuilder(X3D::X3DGLBuilder *builder); 00080 void setGLRenderer(GL::X3DRenderer *renderer); 00082 void setMemReleaser(X3DMemReleaser *memReleaser); 00084 void setFileValidator(X3D::X3DFileValidator *fileValidator); 00085 00087 inline X3D::Loader *getLoader() const {return _loader;}; 00089 inline X3D::X3DBBoxUpdater *getBBoxUpdater() const {return _bboxupdater;}; 00091 inline X3D::X3DGLBuilder *getGLBuilder() const {return _builder;}; 00093 inline GL::X3DRenderer *getGLRenderer() const {return _renderer;}; 00095 inline X3DMemReleaser *getMemReleaser() const {return _releaser;}; 00096 00097 protected: 00098 X3D::Scene *scene; 00099 GL::Scene *glscene; 00100 00101 SFVec3f min; 00102 SFVec3f max; 00103 00105 void loadFile(const char *file, bool fileValidation); 00108 void computeBBox(); 00110 void buildGLScene(); 00111 00112 private: 00113 X3D::Loader *_loader; 00114 X3D::X3DBBoxUpdater *_bboxupdater; 00115 X3D::X3DGLBuilder *_builder; 00116 GL::X3DRenderer *_renderer; 00117 X3DMemReleaser *_releaser; 00118 }; 00119 00120 } 00121 00122 #endif