]> git.tdb.fi Git - libs/gl.git/blobdiff - source/resources/resources.h
Access builtin resources through a global instance
[libs/gl.git] / source / resources / resources.h
index 6f04a26088b1a4d0768185440d1c1ef98ad9b850..82d2f4c6798e4a9019380894b314aa56ad9aed57 100644 (file)
@@ -9,8 +9,10 @@ namespace GL {
 
 class Material;
 class Mesh;
+class Module;
 class Program;
 class ResourceManager;
+class Scene;
 class Texture2D;
 
 /**
@@ -19,15 +21,29 @@ application-specific collection.
 */
 class Resources: virtual public DataFile::Collection
 {
+public:
+       class Loader: public DataFile::DerivedObjectLoader<Resources, Collection::Loader>
+       {
+       public:
+               Loader(Resources &);
+
+       private:
+               void scene(const std::string &);
+       };
+
 private:
        TextureFilter default_tex_filter;
        float default_tex_anisotropy;
        bool srgb_conversion;
        ResourceManager *resource_manager;
 
+       static Resources *global_resources;
+
 public:
-       Resources();
+       Resources(bool = true);
+       virtual ~Resources();
 
+       static Resources &get_global();
        static const DataFile::CollectionSource &get_builtins();
 
        void set_default_texture_filter(TextureFilter);
@@ -44,8 +60,13 @@ public:
 protected:
        Material *create_material(const std::string &);
        Mesh *create_mesh(const std::string &);
+       Scene *create_scene(const std::string &);
        Texture2D *create_texture2d(const std::string &);
+       Module *create_module(const std::string &);
        Program *create_program(const std::string &);
+
+       template<typename T>
+       void set_debug_name(const std::string &, T &);
 };
 
 } // namespace GL