]> git.tdb.fi Git - libs/gl.git/blobdiff - source/resources/resources.cpp
Add keywords for light and material to Resources::Loader
[libs/gl.git] / source / resources / resources.cpp
index fa20a0bf2e38d5cc072908480ce0bf3a62008257..12448a901fc436ce1059b7a92bc834b57f0d6166 100644 (file)
@@ -167,7 +167,8 @@ Mesh *Resources::create_mesh(const string &name)
 
        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();
        }
@@ -187,7 +188,8 @@ Texture2D *Resources::create_texture2d(const string &name)
 
                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);
@@ -275,14 +277,17 @@ void Resources::set_debug_name(const string &name, T &item)
 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