diff --git a/demo/demo/main.cpp b/demo/demo/main.cpp index d98a6a40d3fe6afeb6853e7a07eb1b64056a2121..ff0734b3ed729c6c267a09f82bb0d07b02bc92cb 100644 --- a/demo/demo/main.cpp +++ b/demo/demo/main.cpp @@ -108,7 +108,6 @@ int main(int argc, const char* argv[]) { auto* assetFinder = app.service<fggl::assets::CheckinAdapted>(); assetFinder->discover("core"); - assetFinder->discover("viewer"); // force asset loading { diff --git a/demo/demo/models/viewer.cpp b/demo/demo/models/viewer.cpp index 17ec4eefbd275718a9287184ad0bb5097d50e6df..5c1f15aa107e0326ba92a34f18f1712a645bff46 100644 --- a/demo/demo/models/viewer.cpp +++ b/demo/demo/models/viewer.cpp @@ -109,6 +109,9 @@ namespace demo { void Viewer::activate() { Game::activate(); + auto* assetFinder = m_owner.service<fggl::assets::CheckinAdapted>(); + assetFinder->discover("viewer"); + // setup the assets we can select between // TODO some form of introspection to automatically find declared/discovered assets of a given type m_assets.clear(); diff --git a/include/fggl/assets/packed/adapter.hpp b/include/fggl/assets/packed/adapter.hpp index 022eee657d93d3b7dd90da3e21d0979c3662f8e8..1c864921efc722cac2e6ff76900772b103073b22 100644 --- a/include/fggl/assets/packed/adapter.hpp +++ b/include/fggl/assets/packed/adapter.hpp @@ -96,6 +96,10 @@ namespace fggl::assets { } void discover( const char* packName, bool useCache = false, bool updateCache = true) { + if ( m_packs.contains(packName) ) { + return; + } + std::string packRoot = "packs/"; auto packDir = m_storage->resolvePath( data::StorageType::Data, packRoot + packName ); discover(packDir, useCache, updateCache);