From 9c70be8caaca8378e4b7c2e23488fb004f7e6231 Mon Sep 17 00:00:00 2001
From: Joseph Walton-Rivers <joseph@walton-rivers.uk>
Date: Sat, 26 Nov 2022 11:13:40 +0000
Subject: [PATCH] only run asset discovery for viewer when viewer is loaded

---
 demo/demo/main.cpp                     | 1 -
 demo/demo/models/viewer.cpp            | 3 +++
 include/fggl/assets/packed/adapter.hpp | 4 ++++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/demo/demo/main.cpp b/demo/demo/main.cpp
index d98a6a4..ff0734b 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 17ec4ee..5c1f15a 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 022eee6..1c86492 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);
-- 
GitLab