X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources%2Fresources.cpp;h=8a7780cd4016521c2b0cb39428270ad0f50c1609;hb=dbc91b65728ab9c0e574bb1127cfe4d2da55de7f;hp=66f6f082b927d2d6cdd5499a859f23bde6eadff2;hpb=fcde8390ad577fe434dcd4b29e0f410d29f867c9;p=libs%2Fgl.git diff --git a/source/resources/resources.cpp b/source/resources/resources.cpp index 66f6f082..8a7780cd 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,19 +34,21 @@ namespace GL { void init_shaderlib(DataFile::BuiltinSource &); void init_builtin_data(DataFile::BuiltinSource &); -Resources::Resources(): - default_tex_filter(Texture::can_generate_mipmap() ? LINEAR_MIPMAP_LINEAR : LINEAR), - default_tex_anisotropy(1.0f), +Resources *Resources::global_resources = 0; + +Resources::Resources(bool set_as_global): srgb_conversion(false), resource_manager(0) { 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 +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() @@ -92,16 +111,6 @@ const DataFile::CollectionSource &Resources::get_builtins() return builtins; } -void Resources::set_default_texture_filter(TextureFilter tf) -{ - default_tex_filter = tf; -} - -void Resources::set_default_texture_anisotropy(float a) -{ - default_tex_anisotropy = a; -} - void Resources::set_srgb_conversion(bool c) { srgb_conversion = c; @@ -178,16 +187,6 @@ Texture2D *Resources::create_texture2d(const string &name) image.load_io(*io); tex = new Texture2D(resource_manager); - Sampler &samp = tex->get_default_sampler(); - if(is_mipmapped(default_tex_filter)) - { - tex->set_auto_generate_mipmap(true); - samp.set_mag_filter(LINEAR); - } - else - samp.set_mag_filter(default_tex_filter); - samp.set_min_filter(default_tex_filter); - samp.set_max_anisotropy(default_tex_anisotropy); if(resource_manager) resource_manager->set_resource_location(*tex, *this, name);