/* render/model.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_RENDER_MODEL_H__ #define __INCLUDED_RENDER_MODEL_H__ #include #include #include "render/face.h" #include "math/plane3f.h" namespace render { /// a 3D model contains a list of faces class Model { public: /// load a model from disk Model(std::string const & name); ~Model(); /// the name of the model inline std::string const & name() const { return model_name; } void add_face(Face *face); /// the Model registry static std::map registry; /// draw the model void draw(); /* ---- static functions for the Model registry -------------------- */ /// get name model, returns 0 if not found static Model *find(std::string const & name); /// get named model from the registry and load it if necessary static Model *get(std::string const & name); /// clear the Model registry static void clear(); private: void make_face(math::Plane3f *face, std::vector & planes); std::list model_face; std::string model_name; float model_scale; }; } #endif // __INCLUDED_RENDER_MODEL_H__