]> git.tdb.fi Git - libs/gl.git/blobdiff - source/resources/resources.cpp
Access builtin resources through a global instance
[libs/gl.git] / source / resources / resources.cpp
index 66f6f082b927d2d6cdd5499a859f23bde6eadff2..79c95932b6c52b03f45c669d58a68f71d5e2bbeb 100644 (file)
@@ -3,6 +3,7 @@
 #include "animation.h"
 #include "armature.h"
 #include "camera.h"
+#include "error.h"
 #include "font.h"
 #include "keyframe.h"
 #include "light.h"
@@ -33,7 +34,9 @@ namespace GL {
 void init_shaderlib(DataFile::BuiltinSource &);
 void init_builtin_data(DataFile::BuiltinSource &);
 
-Resources::Resources():
+Resources *Resources::global_resources = 0;
+
+Resources::Resources(bool set_as_global):
        default_tex_filter(Texture::can_generate_mipmap() ? LINEAR_MIPMAP_LINEAR : LINEAR),
        default_tex_anisotropy(1.0f),
        srgb_conversion(false),
@@ -75,6 +78,22 @@ Resources::Resources():
                .notify(&Resources::set_debug_name<Texture2DArray>);
 
        add_source(get_builtins());
+
+       if(set_as_global && !global_resources)
+               global_resources = this;
+}
+
+Resources::~Resources()
+{
+       if(this==global_resources)
+               global_resources = 0;
+}
+
+Resources &Resources::get_global()
+{
+       if(!global_resources)
+               throw invalid_operation("no global resources");
+       return *global_resources;
 }
 
 const DataFile::CollectionSource &Resources::get_builtins()