goat3d

annotate src/material.cc @ 58:d317eb4f83da

- made everything compile properly on windows again - removed libanim/libvmath, we'll use them as external dependencies - added new maxgoat_stub 3dsmax plugin project. Gets loaded as a max plugin and loads the actual maxgoat (and later maxgoat_anim) exporters on demand, to allow reloading the actual exporters without having to restart 3dsmax (which takes AGES).
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 25 Mar 2014 03:19:55 +0200
parents f1b4c27382ce
children dad392c710df
rev   line source
nuclear@9 1 #include "material.h"
nuclear@9 2
nuclear@47 3 using namespace g3dimpl;
nuclear@47 4
nuclear@15 5 MaterialAttrib Material::def_attr;
nuclear@15 6
nuclear@9 7 int Material::get_attrib_count() const
nuclear@9 8 {
nuclear@9 9 return (int)attrib.size();
nuclear@9 10 }
nuclear@9 11
nuclear@9 12 const char *Material::get_attrib_name(int idx) const
nuclear@9 13 {
nuclear@9 14 if(idx < 0 || idx >= get_attrib_count()) {
nuclear@9 15 return 0;
nuclear@9 16 }
nuclear@9 17
nuclear@9 18 std::map<std::string, MaterialAttrib>::const_iterator it = attrib.begin();
nuclear@9 19 for(int i=0; i<idx; i++) it++;
nuclear@9 20 return it->first.c_str();
nuclear@9 21 }
nuclear@9 22
nuclear@9 23 MaterialAttrib &Material::operator [](int idx)
nuclear@9 24 {
nuclear@9 25 if(idx < 0 || idx >= get_attrib_count()) {
nuclear@9 26 return def_attr;
nuclear@9 27 }
nuclear@9 28
nuclear@9 29 std::map<std::string, MaterialAttrib>::iterator it = attrib.begin();
nuclear@9 30 for(int i=0; i<idx; i++) it++;
nuclear@9 31 return it->second;
nuclear@9 32 }
nuclear@9 33
nuclear@9 34 const MaterialAttrib &Material::operator [](int idx) const
nuclear@9 35 {
nuclear@9 36 if(idx < 0 || idx >= get_attrib_count()) {
nuclear@9 37 return def_attr;
nuclear@9 38 }
nuclear@9 39
nuclear@9 40 std::map<std::string, MaterialAttrib>::const_iterator it = attrib.begin();
nuclear@9 41 for(int i=0; i<idx; i++) it++;
nuclear@9 42 return it->second;
nuclear@9 43 }
nuclear@9 44
nuclear@9 45 MaterialAttrib &Material::operator [](const std::string &name)
nuclear@9 46 {
nuclear@9 47 return attrib[name];
nuclear@9 48 }
nuclear@9 49
nuclear@9 50 const MaterialAttrib &Material::operator [](const std::string &name) const
nuclear@9 51 {
nuclear@9 52 std::map<std::string, MaterialAttrib>::const_iterator it;
nuclear@9 53 if((it = attrib.find(name)) != attrib.end()) {
nuclear@9 54 return it->second;
nuclear@9 55 }
nuclear@9 56 return def_attr;
nuclear@9 57 }
nuclear@9 58