From 5d3e755b9b91de878aa60ccff776cd82456512e7 Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Thu, 23 Feb 2023 13:49:21 +0800 Subject: [PATCH] Reload of recompiled data --- SHADE_Engine/src/Assets/SHAssetManager.cpp | 32 +++++++++++++++------- SHADE_Engine/src/Assets/SHAssetManager.h | 2 +- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/SHADE_Engine/src/Assets/SHAssetManager.cpp b/SHADE_Engine/src/Assets/SHAssetManager.cpp index b7cae8ff..b7f7fbb4 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.cpp +++ b/SHADE_Engine/src/Assets/SHAssetManager.cpp @@ -41,7 +41,7 @@ namespace SHADE std::vector SHAssetManager::loaders(TYPE_COUNT); std::unordered_map SHAssetManager::assetCollection; - std::unordered_map SHAssetManager::assetData; + std::unordered_map SHAssetManager::assetData; /**************************************************************************** @@ -460,18 +460,30 @@ namespace SHADE else { target = GetAssetIDFromPath(path); - // send compile asset event - SHCompileAssetEvent compileShaderEvent + + //Reload data + auto result = GetAsset(target); + if (result.has_value()) { - .assetName = newPath.filename().stem().string(), - .assetID = target, - .assetType = AssetType::SHADER, - }; - SHEventManager::BroadcastEvent(compileShaderEvent, SH_ASSET_COMPILE_EVENT); + auto const& asset{ result.value() }; + auto newData = loaders[static_cast(asset.type)]->Load(asset.path); + delete assetData[target]; + assetData[target] = newData; + } + else + { + SHLOG_ERROR("[Asset Manager] Critical: reload of existing compiled data failed"); + } } - //TODO SEND EVENT HERE - + // send compile asset event + SHCompileAssetEvent compileShaderEvent + { + .assetName = newPath.filename().stem().string(), + .assetID = target, + .assetType = AssetType::SHADER, + }; + SHEventManager::BroadcastEvent(compileShaderEvent, SH_ASSET_COMPILE_EVENT); } FolderPointer SHAssetManager::GetRootFolder() noexcept diff --git a/SHADE_Engine/src/Assets/SHAssetManager.h b/SHADE_Engine/src/Assets/SHAssetManager.h index c0ea9a1e..e5cd0359 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.h +++ b/SHADE_Engine/src/Assets/SHAssetManager.h @@ -123,7 +123,7 @@ namespace SHADE // For all resources static std::unordered_map assetCollection; - static std::unordered_map assetData; + static std::unordered_map assetData; }; }