X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources%2Fresources.cpp;h=682acde23d6603604f411193e7407d9cb09d530b;hb=a275d25eccad43716c5dcf91f8bc4af2a53c0445;hp=66f6f082b927d2d6cdd5499a859f23bde6eadff2;hpb=fcde8390ad577fe434dcd4b29e0f410d29f867c9;p=libs%2Fgl.git diff --git a/source/resources/resources.cpp b/source/resources/resources.cpp index 66f6f082..682acde2 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), @@ -41,11 +44,13 @@ Resources::Resources(): { add_type().suffix(".anim").keyword("animation"); add_type().suffix(".arma").keyword("armature"); - add_type().keyword("camera"); + add_type().keyword("camera") + .notify(&Resources::set_debug_name); add_type().keyword("font"); add_type().suffix(".kframe").keyword("keyframe"); add_type().keyword("light"); - add_type().suffix(".lightn").keyword("lighting"); + add_type().suffix(".lightn").keyword("lighting") + .notify(&Resources::set_debug_name); add_type().suffix(".mat") .creator(&Resources::create_material).notify(&Resources::set_debug_name); add_type().keyword("mesh") @@ -75,6 +80,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()