goat3d

annotate src/material.h @ 67:8970ca3d55e0

merged
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 19 Apr 2014 08:01:37 +0300
parents 498ca7ac7047
children
rev   line source
nuclear@54 1 /*
nuclear@54 2 goat3d - 3D scene, character, and animation file format library.
nuclear@54 3 Copyright (C) 2013-2014 John Tsiombikas <nuclear@member.fsf.org>
nuclear@54 4
nuclear@54 5 This program is free software: you can redistribute it and/or modify
nuclear@54 6 it under the terms of the GNU Lesser General Public License as published by
nuclear@54 7 the Free Software Foundation, either version 3 of the License, or
nuclear@54 8 (at your option) any later version.
nuclear@54 9
nuclear@54 10 This program is distributed in the hope that it will be useful,
nuclear@54 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
nuclear@54 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
nuclear@54 13 GNU Lesser General Public License for more details.
nuclear@54 14
nuclear@54 15 You should have received a copy of the GNU Lesser General Public License
nuclear@54 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
nuclear@54 17 */
nuclear@0 18 #ifndef MATERIAL_H_
nuclear@0 19 #define MATERIAL_H_
nuclear@0 20
nuclear@1 21 #include <string>
nuclear@1 22 #include <map>
nuclear@1 23 #include <vmath/vmath.h>
nuclear@1 24
nuclear@47 25 namespace g3dimpl {
nuclear@47 26
nuclear@1 27 struct MaterialAttrib {
nuclear@1 28 Vector4 value;
nuclear@1 29 std::string map;
nuclear@15 30
nuclear@15 31 MaterialAttrib() : value(1, 1, 1, 1) {}
nuclear@1 32 };
nuclear@1 33
nuclear@0 34 class Material {
nuclear@1 35 private:
nuclear@1 36 static MaterialAttrib def_attr;
nuclear@1 37
nuclear@1 38 std::map<std::string, MaterialAttrib> attrib;
nuclear@1 39
nuclear@1 40 public:
nuclear@8 41 std::string name;
nuclear@8 42
nuclear@9 43 int get_attrib_count() const;
nuclear@9 44 const char *get_attrib_name(int idx) const;
nuclear@1 45
nuclear@9 46 MaterialAttrib &operator [](int idx);
nuclear@9 47 const MaterialAttrib &operator [](int idx) const;
nuclear@9 48
nuclear@9 49 MaterialAttrib &operator [](const std::string &name);
nuclear@9 50 const MaterialAttrib &operator [](const std::string &name) const;
nuclear@0 51 };
nuclear@0 52
nuclear@47 53 } // namespace g3dimpl
nuclear@47 54
nuclear@0 55 #endif // MATERIAL_H_