goat3d
annotate src/material.h @ 9:04bb114fcf05
implementing Scene::save, lots to do still
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Fri, 23 Aug 2013 06:36:47 +0300 |
parents | cd71f0b92f44 |
children | f1b4c27382ce |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef MATERIAL_H_ |
nuclear@0 | 2 #define MATERIAL_H_ |
nuclear@0 | 3 |
nuclear@1 | 4 #include <string> |
nuclear@1 | 5 #include <map> |
nuclear@1 | 6 #include <vmath/vmath.h> |
nuclear@1 | 7 |
nuclear@1 | 8 struct MaterialAttrib { |
nuclear@1 | 9 Vector4 value; |
nuclear@1 | 10 std::string map; |
nuclear@1 | 11 }; |
nuclear@1 | 12 |
nuclear@1 | 13 #define MAT_ATTR_DIFFUSE "diffuse" |
nuclear@1 | 14 #define MAT_ATTR_SPECULAR "specular" |
nuclear@1 | 15 #define MAT_ATTR_SHININESS "shininess" |
nuclear@1 | 16 #define MAT_ATTR_NORMAL "normal" |
nuclear@1 | 17 #define MAT_ATTR_BUMP "bump" |
nuclear@1 | 18 #define MAT_ATTR_REFLECTION "reflection" |
nuclear@1 | 19 #define MAT_ATTR_TRANSMISSION "transmission" |
nuclear@1 | 20 #define MAT_ATTR_IOR "ior" |
nuclear@1 | 21 |
nuclear@0 | 22 class Material { |
nuclear@1 | 23 private: |
nuclear@1 | 24 static MaterialAttrib def_attr; |
nuclear@1 | 25 |
nuclear@1 | 26 std::map<std::string, MaterialAttrib> attrib; |
nuclear@1 | 27 |
nuclear@1 | 28 public: |
nuclear@8 | 29 std::string name; |
nuclear@8 | 30 |
nuclear@9 | 31 int get_attrib_count() const; |
nuclear@9 | 32 const char *get_attrib_name(int idx) const; |
nuclear@1 | 33 |
nuclear@9 | 34 MaterialAttrib &operator [](int idx); |
nuclear@9 | 35 const MaterialAttrib &operator [](int idx) const; |
nuclear@9 | 36 |
nuclear@9 | 37 MaterialAttrib &operator [](const std::string &name); |
nuclear@9 | 38 const MaterialAttrib &operator [](const std::string &name) const; |
nuclear@0 | 39 }; |
nuclear@0 | 40 |
nuclear@0 | 41 #endif // MATERIAL_H_ |