X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpartcache.cpp;h=3c3fbb169e3e2c20b707f20b6bdb25f656fc94fd;hb=HEAD;hp=f4c085e5baa47c4230786eba92a2feb50ac8cf50;hpb=9f38197854e699a6093a906ab43f4238f3cd2388;p=libs%2Fgltk.git diff --git a/source/partcache.cpp b/source/partcache.cpp index f4c085e..560db29 100644 --- a/source/partcache.cpp +++ b/source/partcache.cpp @@ -6,12 +6,6 @@ using namespace std; namespace Msp { namespace GLtk { -CachedPart::~CachedPart() -{ - delete mesh; -} - - void PartCache::begin_rebuild() { if(rebuilding) @@ -29,12 +23,9 @@ void PartCache::insert_special(const Part &part) if(!rebuilding) throw logic_error("!rebuilding"); - for(current=next; current!=parts.end(); ++current) - if(current->part==&part) - { - parts.erase(next, current); - break; - } + current = find_if(next, parts.end(), [&part](const CachedPart &p){ return p.part==∂ }); + if(current!=parts.end()) + parts.erase(next, current); if(current==parts.end()) current = parts.insert(next, CachedPart()); @@ -65,7 +56,7 @@ GL::Mesh &PartCache::create_mesh(const Part &part, const GL::Texture2D &tex) { current = parts.insert(next, CachedPart()); current->texture = &tex; - current->mesh = new GL::Mesh((GL::TEXCOORD2, GL::COLOR4,GL::UNSIGNED_BYTE, GL::VERTEX2)); + current->mesh = make_unique((GL::TEXCOORD2, GL::COLOR4,GL::UNSIGNED_BYTE, GL::VERTEX2)); } else current->mesh->clear();