if(RefPtr<IO::Seekable> io = open_raw(name))
{
- RefPtr<Mesh> mesh = new Mesh(resource_manager);
+ RefPtr<Mesh> mesh = new Mesh;
+ mesh->set_manager(resource_manager);
resource_manager->set_resource_location(*mesh, *this, name);
return mesh.release();
}
if(ext==".tex2d")
{
- tex = new Texture2D(resource_manager);
+ tex = new Texture2D;
+ tex->set_manager(resource_manager);
DataFile::Parser parser(*io, name);
Texture2D::Loader ldr(*tex, *this);
ldr.load(parser);
Resources::Loader::Loader(Resources &r):
DerivedObjectLoader<Resources, Collection::Loader>(r)
{
- add("scene", &Loader::scene);
+ add("light", &Loader::generic<Light>);
+ add("material", &Loader::generic<Material>);
+ add("scene", &Loader::generic<Scene>);
}
-void Resources::Loader::scene(const string &name)
+template<typename T>
+void Resources::Loader::generic(const string &name)
{
- Scene::GenericLoader ldr(obj);
+ typename T::GenericLoader ldr(obj);
load_sub_with(ldr);
- obj.add(name, ldr.get_object());
+ ldr.store_object(obj, name);
}
} // namespace GL