9 CachedPart::CachedPart():
15 CachedPart::~CachedPart()
21 void PartCache::begin_rebuild()
24 current = parts.end();
27 void PartCache::insert_special(const Part &part)
29 if(part.get_name().empty())
30 throw invalid_argument("PartCache::insert_special");
32 for(current=next; current!=parts.end(); ++current)
33 if(current->part==&part)
35 parts.erase(next, current);
39 if(current==parts.end())
40 current = parts.insert(next, CachedPart());
42 *current = CachedPart();
43 current->part = ∂
49 GL::Mesh &PartCache::create_mesh(const Part &part, const GL::Texture2D &tex)
51 if(current!=parts.end() && current->texture==&tex)
52 return *current->mesh;
54 for(current=next; current!=parts.end(); ++current)
55 if(current->texture==&tex)
57 parts.erase(next, current);
61 if(current==parts.end())
63 current = parts.insert(next, CachedPart());
64 current->texture = &tex;
65 current->mesh = new GL::Mesh((GL::TEXCOORD2, GL::COLOR4_UBYTE, GL::VERTEX2));
68 current->mesh->clear();
69 current->part = ∂
74 return *current->mesh;
77 void PartCache::end_rebuild()
79 parts.erase(next, parts.end());