Part::Part(const string &n):
name(n)
{
- for(unsigned i=0; i<N_STATES_; ++i)
- graphic[i] = 0;
+ fill(graphic, graphic+N_STATES_, static_cast<Graphic *>(0));
}
const Graphic *Part::get_graphic(State state) const
return graphic[state];
}
-void Part::build(const Geometry &parent, State state, CachedPart &cache) const
+void Part::build(const Geometry &parent, State state, PartCache &cache) const
{
- if(!graphic[state])
- {
- cache.texture = 0;
+ if(!graphic[state] || !graphic[state]->get_texture())
return;
- }
-
- cache.texture = graphic[state]->get_texture();
- cache.clear_mesh();
Geometry rgeom = geom;
align.apply(rgeom, parent, margin);
- GL::MeshBuilder bld(*cache.mesh);
+ GL::MeshBuilder bld(cache.create_mesh(*this, *graphic[state]->get_texture()));
bld.matrix() *= GL::Matrix::translation(rgeom.x, rgeom.y, 0);
graphic[state]->build(rgeom.w, rgeom.h, bld);
}