X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources.cpp;h=f44d8c1985d05ef1e45c3651bcaa0a8b77cb4d1f;hb=592e8a658d80c2720a940953d6c4decd656d444c;hp=cba8054cf4b9f3636b02a0630fde7fa585a03d32;hpb=184dc3f14feab183bcd84eca40f89c143ecbe41f;p=libs%2Fdemoscene.git diff --git a/source/resources.cpp b/source/resources.cpp index cba8054..f44d8c1 100644 --- a/source/resources.cpp +++ b/source/resources.cpp @@ -1,8 +1,19 @@ +#include +#include #include #include "resources.h" using namespace std; -using namespace Msp; + +namespace Msp { +namespace DemoScene { + +void init_data(DataFile::BuiltinSource &); + +Resources::Resources() +{ + add_source(get_builtin_source()); +} Resources::Resources(const string &pack_name): ui_font(0), @@ -11,16 +22,41 @@ Resources::Resources(const string &pack_name): set_default_texture_anisotropy(8); set_srgb_conversion(true); - if(FS::exists("data")) + FS::Path data_dir = "data"; + if(FS::exists(data_dir)) { - dir_source.add_directory("data"); + dir_source.add_directory(data_dir); add_source(dir_source); + for(const auto &c: FS::list_filtered(data_dir, "\\.mdc$")) + load(*this, (data_dir/c).str()); } else { pack_source.add_pack_file(pack_name); add_source(pack_source); } + + add_source(get_builtin_source()); +} + +const DataFile::CollectionSource &Resources::get_builtin_source() +{ + static DataFile::BuiltinSource builtin_src; + bool init_done = false; + + if(!init_done) + { + init_data(builtin_src); + init_done = true; + } + + return builtin_src; +} + +Resources &Resources::get_builtins() +{ + static Resources builtins; + return builtins; } const GL::Font &Resources::get_ui_font() const @@ -42,3 +78,6 @@ void Resources::set_ui_text_resources(const string &font, const string &tech) ui_font = &get(font); ui_text_technique = &get(tech); } + +} // namespace DemoScene +} // namespace Msp