From c8a6ff1c0693ca1bd9025dcbdd7c22e3d193f8dd Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 8 Feb 2009 13:13:11 +0000 Subject: materials registry, read shaderlist.txt --- src/model/material.h | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'src/model/material.h') diff --git a/src/model/material.h b/src/model/material.h index bdfee68..8081792 100644 --- a/src/model/material.h +++ b/src/model/material.h @@ -7,13 +7,58 @@ #ifndef __INCLUDED_MODEL_MATERIAL_H__ #define __INCLUDED_MODEL_MATERIAL_H__ +#include +#include + namespace model { +/// fragment surface material parameters class Material { public: - enum Flags { None=0, Primary=1, Secondary=2, Tertiary=3, Dark=4, Light=8, Engine=16}; + /// surface flags + enum SurfaceFlags { None=0, Primary=1, Secondary=2, Tertiary=3, Dark=4, Light=8, Engine=16}; + + /// type definition for the material registry + typedef std::map Registry; + + Material(const std::string &name); + ~Material(); + + inline const std::string &name() { return material_name; } + +/* ---- static ----------------------------------------------------- */ + + /** + * @brief initialize materials + * reads materials from the shader files + */ + static void init(); + + /// clear all materials + static void shutdown(); + + /// clear all materials + static void clear(); + + /// list registered materials + static void list(); + + /// add a material to the registry + static void add(Material *material); + + /// find a material in the registry + static Material *find(const std::string &name); + +private: + + std::string material_name; + + /// the material registry + static Registry material_registry; + + static void load_shader(const std::string &shadername); }; } -- cgit v1.2.3