00001 #ifndef SIMPLEMESHGLSCENE_H 00002 #define SIMPLEMESHGLSCENE_H 00003 00004 #include "MESH_Drawer.h" 00005 00006 #include <X3DTK/kernel.h> 00007 #include <X3DTK/X3D/meshbuilder.h> 00008 #include <X3DTK/MESH/normalsupdater.h> 00009 00010 namespace X3DTK { 00011 00012 class X3DMemReleaser; 00013 00014 namespace X3D { 00015 00016 class Scene; 00017 class Loader; 00018 class X3DBBoxUpdater; 00019 00020 } 00021 00022 namespace MESH { 00023 00024 class Scene; 00025 class Drawer; 00026 00027 } 00028 00029 // Class defining a facade to allow an easy load and display of an X3D scene. 00030 00031 class SimpleMeshGLScene 00032 { 00033 public: 00034 SimpleMeshGLScene(); 00035 virtual ~SimpleMeshGLScene(); 00036 00037 virtual void load(const char *file); 00038 virtual void drawMesh(bool selection = false); 00039 virtual void drawSelected(); 00040 inline SFVec3f getBBoxMin() const {return min;}; 00041 inline SFVec3f getBBoxMax() const {return max;}; 00042 void release(); 00043 00044 inline void changeDrawPoints() {_drawer->changeDrawPoints();}; 00045 inline void changeDrawEdges() {_drawer->changeDrawEdges();}; 00046 inline void changeDrawFaces() {_drawer->changeDrawFaces();}; 00047 inline void changeOneColorPerMesh() {_drawer->changeOneColorPerMesh();}; 00048 inline void setSelectedType(SelectedType selectedType) {_drawer->setSelectedType(selectedType);}; 00049 inline void setSelectedMesh(int selectedMesh) {_drawer->setSelectedMesh(selectedMesh);}; 00050 inline void setSelectedId(int selectedId) {_drawer->setSelectedId(selectedId);}; 00051 00052 inline SelectedType getSelectedType() const {return _drawer->getSelectedType();}; 00053 inline int getSelectedMesh() const {return _drawer->getSelectedMesh();}; 00054 inline int getSelectedId() const {return _drawer->getSelectedId();}; 00055 00056 protected: 00057 X3D::Scene *scene; 00058 MESH::Scene *meshScene; 00059 00060 SFVec3f min; 00061 SFVec3f max; 00062 00063 void loadFile(const char *file); 00064 void computeBBox(); 00065 void buildMeshScene(); 00066 00067 private: 00068 X3D::Loader *_loader; 00069 X3D::X3DBBoxUpdater *_bboxupdater; 00070 X3D::MeshBuilder *_builder; 00071 MESH::NormalsUpdater *_normalUpdater; 00072 MESH::Drawer *_drawer; 00073 X3DMemReleaser *_releaser; 00074 }; 00075 00076 } 00077 00078 #endif