X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fresources%2Fresources.cpp;h=79c95932b6c52b03f45c669d58a68f71d5e2bbeb;hp=66f6f082b927d2d6cdd5499a859f23bde6eadff2;hb=fe2fc291a4fc618425c64112c9ffd3519f0b8a3e;hpb=08d0a9f283b71e874b769b2661389b0aca598f4f diff --git a/source/resources/resources.cpp b/source/resources/resources.cpp index 66f6f082..79c95932 100644 --- a/source/resources/resources.cpp +++ b/source/resources/resources.cpp @@ -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); 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()