X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fobject.cpp;h=78f445577caa54209044e3db4dc40dd1e33b5cec;hb=b8b06a0ff96763ba7e188d9fcacbd8c0e3dcd515;hp=f710145a08cb23913aa6db794ca878bb2b6649ef;hpb=0f3ae7cf6aed59f07895dfbef6740be3b666fc20;p=libs%2Fgl.git diff --git a/source/object.cpp b/source/object.cpp index f710145a..78f44557 100644 --- a/source/object.cpp +++ b/source/object.cpp @@ -59,11 +59,6 @@ void Object::render(const ObjectInstance &inst, const Tag &tag) const render(get_pass(tag), &inst); } -void Object::render(const list &insts, const Tag &tag) const -{ - render(get_pass(tag), insts); -} - void Object::setup_render(const ObjectPass &pass) const { if(!meshes[0]) @@ -105,36 +100,20 @@ void Object::render(const ObjectPass &pass, const ObjectInstance *inst) const { setup_render(pass); - unsigned lod=0; - if(inst) - { - inst->setup_render(pass); - lod=min(inst->get_level_of_detail(), meshes.size()-1); - } - - meshes[lod]->draw(); - if(inst) - inst->finish_render(pass); + render_instance(pass, *inst); + else + meshes[0]->draw(); finish_render(pass); } -void Object::render(const ObjectPass &pass, const list &insts) const +void Object::render_instance(const ObjectPass &pass, const ObjectInstance &inst) const { - setup_render(pass); - - for(list::const_iterator i=insts.begin(); i!=insts.end(); ++i) - { - (*i)->setup_render(pass); - - unsigned lod=min((*i)->get_level_of_detail(), meshes.size()-1); - meshes[lod]->draw(); - - (*i)->finish_render(pass); - } - - finish_render(pass); + inst.setup_render(pass); + unsigned lod=min(inst.get_level_of_detail(), meshes.size()-1); + meshes[lod]->draw(); + inst.finish_render(pass); }