From bd142a328328cdf0cbfbb59e4e0aa99dd51184b8 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 10 Aug 2009 22:32:36 +0000 Subject: initial texture support for ase models --- src/model/material.h | 50 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 13 deletions(-) (limited to 'src/model/material.h') diff --git a/src/model/material.h b/src/model/material.h index a2ba0d6..9072a4d 100644 --- a/src/model/material.h +++ b/src/model/material.h @@ -20,20 +20,35 @@ class Material { public: /// surface flags - enum SurfaceFlags { None=0, Primary=1, Secondary=2, Tertiary=3, Bright=4, Engine=8, Environment=16}; + enum SurfaceFlags { None=0, Primary=1, Secondary=2, Tertiary=3, Bright=4, Engine=8, Environment=16, Texture=32}; /// type definition for the material registry typedef std::map Registry; Material(const std::string &name); + ~Material(); + /* ---- inspectors ----------------------------------------- */ + inline const std::string &name() const { return material_name; } inline const math::Color &color() const { return material_color; } inline const unsigned int flags() const { return material_flags; } + inline const std::string &texture() const { return material_texture; } + + inline const size_t texture_id() const { return material_texture_id; } + + /* ---- mutators ------------------------------------------- */ + + void set_color(const math::Color &color); + + void set_texture(const std::string &texture); + + void set_texture_id(const size_t texture_id); + inline void set_flags(SurfaceFlags flags) { material_flags |= flags; @@ -43,31 +58,38 @@ public: { material_flags &= ~flags; } - - - void set_color(const math::Color &color); -/* ---- static ----------------------------------------------------- */ + /* ---- static ----------------------------------------------------- */ /** - * @brief initialize materials - * reads materials from the shader files + * @brief initialize material registry + * reads materials from the shader files listed in shaderlist.txt */ static void init(); - /// clear all materials + /** + * @brief shutdown material registry + */ static void shutdown(); - /// clear all materials + /** + * @brief clear material registry + */ static void clear(); - /// list registered materials + /** + * @brief print registered materials to the system console + */ static void list(); - /// add a material to the registry + /** + * @brief add a material to the registry + */ static void add(Material *material); - /// find a material in the registry + /** + * @brief find a material in the registry + */ static Material *find(const std::string &name); private: @@ -75,8 +97,10 @@ private: std::string material_name; math::Color material_color; unsigned int material_flags; + std::string material_texture; + size_t material_texture_id; - /// the material registry + /// the materials registry static Registry material_registry; static void load_shader(const std::string &shadername); -- cgit v1.2.3