X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Finstancearray.cpp;h=be3f17d4bc24cd6e2cd3d612321448a7302caf02;hb=1b23728908f5ec9beb08b2b70737c3903745fddc;hp=293fa6cdad8e1ee55384df261a50f22b58997a25;hpb=d493917dbc215cd6ba3f8773a52a289d9f14380d;p=libs%2Fgl.git diff --git a/source/render/instancearray.cpp b/source/render/instancearray.cpp index 293fa6cd..be3f17d4 100644 --- a/source/render/instancearray.cpp +++ b/source/render/instancearray.cpp @@ -10,6 +10,7 @@ #include "mesh.h" #include "object.h" #include "objectinstance.h" +#include "program.h" #include "renderer.h" #include "technique.h" #include "vertexsetup.h" @@ -28,10 +29,9 @@ InstanceArray::InstanceArray(const Object &o): matrix_offset(0) { const Technique *tech = object.get_technique(); - const Technique::PassMap &passes = tech->get_passes(); - for(Technique::PassMap::const_iterator i=passes.begin(); i!=passes.end(); ++i) + for(const auto &kvp: tech->get_passes()) { - const Program *shprog = i->second.get_shader_program(); + const Program *shprog = kvp.second.get_shader_program(); if(!shprog) throw invalid_argument("InstanceArray::InstanceArray"); @@ -65,8 +65,8 @@ InstanceArray::InstanceArray(const Object &o): InstanceArray::~InstanceArray() { - for(vector::iterator i=instances.begin(); i!=instances.end(); ++i) - delete *i; + for(ObjectInstance *i: instances) + delete i; delete vtx_setup; delete instance_data; delete instance_buffer; @@ -94,7 +94,7 @@ void InstanceArray::append(ObjectInstance *inst) void InstanceArray::remove(ObjectInstance &inst) { - vector::iterator i = find(instances, &inst); + auto i = find(instances, &inst); if(i==instances.end()) throw key_error(&inst); @@ -141,12 +141,12 @@ void InstanceArray::render(Renderer &renderer, Tag tag) const } else { - for(vector::const_iterator i=instances.begin(); i!=instances.end(); ++i) + for(ObjectInstance *i: instances) { - const Matrix &m = *(*i)->get_matrix(); + const Matrix &m = *i->get_matrix(); for(unsigned j=0; j<3; ++j) glVertexAttrib4f(matrix_location+j, m(j, 0), m(j, 1), m(j, 2), m(j, 3)); - (*i)->render(renderer, tag); + i->render(renderer, tag); } } }