diff --git a/src/ObjCompiling/Image/IPak/IPakCreator.cpp b/src/ObjCompiling/Image/IPak/IPakCreator.cpp index b21d6c3b..d18c127c 100644 --- a/src/ObjCompiling/Image/IPak/IPakCreator.cpp +++ b/src/ObjCompiling/Image/IPak/IPakCreator.cpp @@ -7,6 +7,7 @@ #include "Utils/Alignment.h" #include +#include #include #include #include @@ -394,6 +395,16 @@ void IPakToCreate::Build(ISearchPath& searchPath, const std::filesystem::path& o std::cout << std::format("Created ipak {} with {} entries\n", m_name, m_image_names.size()); } +IPakCreator::IPakCreator() + : m_kvp_creator(nullptr) +{ +} + +void IPakCreator::Inject(ZoneAssetCreationInjection& inject) +{ + m_kvp_creator = &inject.m_zone_states.GetZoneAssetCreationState(); +} + IPakToCreate* IPakCreator::GetOrAddIPak(const std::string& ipakName) { const auto existingIPak = m_ipak_lookup.find(ipakName); @@ -404,6 +415,9 @@ IPakToCreate* IPakCreator::GetOrAddIPak(const std::string& ipakName) auto* result = newIPak.get(); m_ipaks.emplace_back(std::move(newIPak)); + assert(m_kvp_creator); + m_kvp_creator->AddKeyValuePair(CommonKeyValuePair("ipak_read", ipakName)); + return result; } diff --git a/src/ObjCompiling/Image/IPak/IPakCreator.h b/src/ObjCompiling/Image/IPak/IPakCreator.h index 2eb76b14..6b9a7565 100644 --- a/src/ObjCompiling/Image/IPak/IPakCreator.h +++ b/src/ObjCompiling/Image/IPak/IPakCreator.h @@ -1,6 +1,7 @@ #pragma once #include "Asset/IZoneAssetCreationState.h" +#include "KeyValuePairs/KeyValuePairsCreator.h" #include "SearchPath/ISearchPath.h" #include @@ -24,10 +25,15 @@ private: class IPakCreator : public IZoneAssetCreationState { public: + IPakCreator(); + + void Inject(ZoneAssetCreationInjection& inject) override; + IPakToCreate* GetOrAddIPak(const std::string& ipakName); void Finalize(ISearchPath& searchPath, const std::filesystem::path& outPath); private: + KeyValuePairsCreator* m_kvp_creator; std::unordered_map m_ipak_lookup; std::vector> m_ipaks; };