X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources.cpp;h=c70e0a11308aee38929e053983bfa285ab51c04c;hb=08fa4d11a07a52e62eb4e30730d2a2b9cdcb568d;hp=cba8054cf4b9f3636b02a0630fde7fa585a03d32;hpb=184dc3f14feab183bcd84eca40f89c143ecbe41f;p=libs%2Fdemoscene.git diff --git a/source/resources.cpp b/source/resources.cpp index cba8054..c70e0a1 100644 --- a/source/resources.cpp +++ b/source/resources.cpp @@ -1,20 +1,35 @@ +#include +#include #include #include "resources.h" using namespace std; -using namespace Msp; -Resources::Resources(const string &pack_name): - ui_font(0), - ui_text_technique(0) +namespace Msp { +namespace DemoScene { + +void init_data(DataFile::BuiltinSource &); + +Resources::Resources() { - set_default_texture_anisotropy(8); - set_srgb_conversion(true); + init(); +} + +Resources::Resources(const string &pack_name) +{ + init(); + init_sources(pack_name); +} - if(FS::exists("data")) +void Resources::init_sources(const string &pack_name) +{ + 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 { @@ -23,6 +38,37 @@ Resources::Resources(const string &pack_name): } } +void Resources::init() +{ + ui_font = 0; + ui_text_technique = 0; + + set_default_texture_anisotropy(8); + set_srgb_conversion(true); + + 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 { if(!ui_font) @@ -42,3 +88,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