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_