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);
- bld.matrix() *= GL::Matrix::translation(rgeom.x, rgeom.y, 0);
+ GL::MeshBuilder bld(cache.create_mesh(*this, *graphic[state]->get_texture()));
+ bld.transform(GL::Matrix::translation(rgeom.x, rgeom.y, 0));
graphic[state]->build(rgeom.w, rgeom.h, bld);
}
}
}
+void Part::Loader::graphic_normal(const string &n)
+{
+ graphic(NORMAL, n);
+}
+
void Part::Loader::graphic(State s, const string &n)
{
- Graphic *grph = &get_collection().get<Graphic>(n);
+ Graphic *grph = (n.empty() ? 0 : &get_collection().get<Graphic>(n));
for(int i=0; i<N_STATES_; ++i)
if((i&s)==s)
obj.graphic[i] = grph;