allow_pointer_reload = false;
add("shader", &RenderPass::shprog);
- add("material", static_cast<void (Loader::*)()>(&Loader::material));
- add("material", static_cast<void (Loader::*)(const string &)>(&Loader::material));
+ add("material", &Loader::material_inline);
+ add("material", &Loader::material);
add("texunit", &Loader::texunit);
add("uniforms", &Loader::uniforms);
}
-void RenderPass::Loader::finish()
-{
- // XXX Make shdata optional
- if(obj.shprog && !obj.shdata)
- obj.shdata = new ProgramData;
-}
-
-void RenderPass::Loader::material()
+void RenderPass::Loader::material_inline()
{
RefPtr<Material> mat = new Material;
load_sub(*mat);
if(!obj.shprog)
throw InvalidState("Can't load uniforms without a shader program");
if(!obj.shdata)
- obj.shdata = new ProgramData;
- load_sub(*obj.shdata, *obj.shprog);
+ obj.shdata = new ProgramData(*obj.shprog);
+ load_sub(*obj.shdata);
}