diff options
author | Stijn Buys <ingar@osirion.org> | 2009-08-12 12:03:18 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2009-08-12 12:03:18 +0000 |
commit | 183f0f0b905715f0d89b38174fdfd44641c1a79c (patch) | |
tree | 6cae553ac6284044002fb668c7991da27291825d /src/model/material.h | |
parent | 8bf8afe68ca15c61b0dea1f5c1ef5fc7186dca0f (diff) |
src/model filenames cleanup, parse .map texture coordinates, early loading of material textures
Diffstat (limited to 'src/model/material.h')
-rw-r--r-- | src/model/material.h | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/model/material.h b/src/model/material.h index 9072a4d..9185fd2 100644 --- a/src/model/material.h +++ b/src/model/material.h @@ -11,6 +11,7 @@ #include <map> #include "math/color.h" +#include "math/vector2f.h" namespace model { @@ -19,8 +20,11 @@ namespace model class Material { public: + /// function pointer type for local functions + typedef void(* LoaderFuncPtr)(Material *); + /// surface flags - enum SurfaceFlags { None=0, Primary=1, Secondary=2, Tertiary=3, Bright=4, Engine=8, Environment=16, Texture=32}; + enum SurfaceFlags { None=0, Primary=1, Secondary=2, Tertiary=3, Bright=4, Engine=8, Environment=16, Texture=32, Ignore=64}; /// type definition for the material registry typedef std::map<std::string, Material *> Registry; @@ -41,14 +45,35 @@ public: inline const size_t texture_id() const { return material_texture_id; } + /** + * @brief returns the material texture size + */ + inline const math::Vector2f & size() const { return material_size; } + /* ---- mutators ------------------------------------------- */ void set_color(const math::Color &color); + /** + * @brief set the material texture name + */ void set_texture(const std::string &texture); + /** + * @brief set the material texture id + */ void set_texture_id(const size_t texture_id); + /** + * @brief set the material texture size + */ + void set_size(const float width, const float height); + + /** + * @brief set the material texture size + */ + void set_size(const math::Vector2f &size); + inline void set_flags(SurfaceFlags flags) { material_flags |= flags; @@ -92,6 +117,8 @@ public: */ static Material *find(const std::string &name); + static void set_loader_func(LoaderFuncPtr func); + private: std::string material_name; @@ -100,10 +127,15 @@ private: std::string material_texture; size_t material_texture_id; + /// size of the material + math::Vector2f material_size; + /// the materials registry static Registry material_registry; static void load_shader(const std::string &shadername); + + static LoaderFuncPtr material_loaderfunc; }; } |