X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpartcache.cpp;h=3c3fbb169e3e2c20b707f20b6bdb25f656fc94fd;hb=HEAD;hp=3b944572a45abb8874b06a7f4313e569fab123dd;hpb=6deafc9f236b90175a303944815f7c0eac1c95c1;p=libs%2Fgltk.git diff --git a/source/partcache.cpp b/source/partcache.cpp index 3b94457..560db29 100644 --- a/source/partcache.cpp +++ b/source/partcache.cpp @@ -6,22 +6,6 @@ using namespace std; namespace Msp { namespace GLtk { -CachedPart::CachedPart(): - part(0), - texture(0), - mesh(0) -{ } - -CachedPart::~CachedPart() -{ - delete mesh; -} - - -PartCache::PartCache(): - rebuilding(false) -{ } - void PartCache::begin_rebuild() { if(rebuilding) @@ -39,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()); @@ -75,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();