#ifndef SIMPLEMESHGLSCENE_H #define SIMPLEMESHGLSCENE_H #include "MESH_Drawer.h" #include #include #include namespace X3DTK { class MemReleaser; namespace X3D { class Scene; class Loader; class BBoxUpdater; } namespace MESH { class Scene; class Drawer; } // Class defining a facade to allow an easy load and display of an X3D scene. class SimpleMeshGLScene { public: SimpleMeshGLScene(); virtual ~SimpleMeshGLScene(); virtual void load(const char *file); virtual void drawMesh(bool selection = false); virtual void drawSelected(); inline SFVec3f getBBoxMin() const {return min;}; inline SFVec3f getBBoxMax() const {return max;}; void release(); inline void changeDrawPoints() {_drawer->changeDrawPoints();}; inline void changeDrawEdges() {_drawer->changeDrawEdges();}; inline void changeDrawFaces() {_drawer->changeDrawFaces();}; inline void changeOneColorPerMesh() {_drawer->changeOneColorPerMesh();}; inline void setSelectedType(SelectedType selectedType) {_drawer->setSelectedType(selectedType);}; inline void setSelectedMesh(int selectedMesh) {_drawer->setSelectedMesh(selectedMesh);}; inline void setSelectedId(int selectedId) {_drawer->setSelectedId(selectedId);}; inline SelectedType getSelectedType() const {return _drawer->getSelectedType();}; inline int getSelectedMesh() const {return _drawer->getSelectedMesh();}; inline int getSelectedId() const {return _drawer->getSelectedId();}; protected: X3D::Scene *scene; MESH::Scene *meshScene; SFVec3f min; SFVec3f max; void loadFile(const char *file); void computeBBox(); void buildMeshScene(); private: X3D::Loader *_loader; X3D::BBoxUpdater *_bboxupdater; X3D::MeshBuilder *_builder; MESH::NormalsUpdater *_normalUpdater; MESH::Drawer *_drawer; MemReleaser *_releaser; }; } #endif