X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fobject.cpp;h=3ba2d64c378862ea435f6d371cc4e5ec122a5579;hb=c6aea1bc1586ffef132e6fffdf99343cb56617db;hp=e406755c1e81e2e1d27e5f77658c19d5034c6b21;hpb=01525e40e4bc32b885196dd85ff68e876678d19d;p=libs%2Fgl.git diff --git a/source/object.cpp b/source/object.cpp index e406755c..3ba2d64c 100644 --- a/source/object.cpp +++ b/source/object.cpp @@ -26,46 +26,41 @@ Object::Object(): meshes(1, static_cast(0)), material(0) { - normal_pass=&passes[""]; + normal_pass=&passes[0]; } Object::~Object() { - for(map::iterator i=passes.begin(); i!=passes.end(); ++i) + for(map::iterator i=passes.begin(); i!=passes.end(); ++i) delete i->second.shdata; } -bool Object::has_pass(const string &pn) const +bool Object::has_pass(const Tag &tag) const { - return passes.count(pn); + return passes.count(tag.id); } -const ObjectPass &Object::get_pass(const string &pn) const +const ObjectPass &Object::get_pass(const Tag &tag) const { - map::const_iterator i=passes.find(pn); + map::const_iterator i=passes.find(tag.id); if(i==passes.end()) throw KeyError("Unknown pass"); return i->second; } -void Object::render(const ObjectInstance *inst) const +void Object::render(const Tag &tag) const { - render(*normal_pass, inst); + render(get_pass(tag), 0); } -void Object::render(const string &pn, const ObjectInstance *inst) const +void Object::render(const ObjectInstance &inst, const Tag &tag) const { - render(get_pass(pn), inst); + render(get_pass(tag), &inst); } -void Object::render(const list &insts) const +void Object::render(const list &insts, const Tag &tag) const { - render(*normal_pass, insts); -} - -void Object::render(const string &pn, const list &insts) const -{ - render(get_pass(pn), insts); + render(get_pass(tag), insts); } void Object::setup_render(const ObjectPass &pass) const @@ -153,7 +148,7 @@ Object::Loader::Loader(Object &o, Collection &c): Object::Loader::~Loader() { - for(map::iterator i=obj.passes.begin(); i!=obj.passes.end(); ++i) + for(map::iterator i=obj.passes.begin(); i!=obj.passes.end(); ++i) if(i->second.shdata) { for(unsigned j=0; j