goat3d

annotate src/material.h @ 8:cd71f0b92f44

a bit more...
author John Tsiombikas <nuclear@member.fsf.org>
date Wed, 21 Aug 2013 05:52:28 +0300
parents e46529a5d057
children 04bb114fcf05
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@1 31 MaterialAttrib &operator [](const std::string &name)
nuclear@1 32 {
nuclear@1 33 return attrib[name];
nuclear@1 34 }
nuclear@1 35
nuclear@1 36 const MaterialAttrib &operator [](const std::string &name) const
nuclear@1 37 {
nuclear@1 38 std::map<std::string, MaterialAttrib>::const_iterator it;
nuclear@1 39 if((it = attrib.find(name)) != attrib.end()) {
nuclear@1 40 return it->second;
nuclear@1 41 }
nuclear@1 42 return def_attr;
nuclear@1 43 }
nuclear@0 44 };
nuclear@0 45
nuclear@0 46 #endif // MATERIAL_H_