goat3d

annotate src/material.h @ 1:e46529a5d057

some progress
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 17 Aug 2013 23:51:24 +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_