From 81787e9004377016236865e95b95707ed6cf1d0b Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 2 Mar 2008 12:23:48 +0000 Subject: initial (buggy) support for .map models --- src/render/model.h | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/render/model.h (limited to 'src/render/model.h') diff --git a/src/render/model.h b/src/render/model.h new file mode 100644 index 0000000..ab6207e --- /dev/null +++ b/src/render/model.h @@ -0,0 +1,61 @@ +/* + 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__ + -- cgit v1.2.3