goat3d
annotate src/material.h @ 5:fca2ea844875
added rudimentary visual studio project
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Mon, 19 Aug 2013 05:18:08 +0300 |
parents | 2918358f5e6d |
children | cd71f0b92f44 |
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@1 | 29 MaterialAttrib &operator [](const std::string &name) |
nuclear@1 | 30 { |
nuclear@1 | 31 return attrib[name]; |
nuclear@1 | 32 } |
nuclear@1 | 33 |
nuclear@1 | 34 const MaterialAttrib &operator [](const std::string &name) const |
nuclear@1 | 35 { |
nuclear@1 | 36 std::map<std::string, MaterialAttrib>::const_iterator it; |
nuclear@1 | 37 if((it = attrib.find(name)) != attrib.end()) { |
nuclear@1 | 38 return it->second; |
nuclear@1 | 39 } |
nuclear@1 | 40 return def_attr; |
nuclear@1 | 41 } |
nuclear@0 | 42 }; |
nuclear@0 | 43 |
nuclear@0 | 44 #endif // MATERIAL_H_ |