chore: rename ZoneAssetLoaderState to ZoneAssetCreationState

This commit is contained in:
Jan 2025-01-03 11:01:44 +01:00
parent 9068e96dfa
commit 416823c6cd
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
24 changed files with 104 additions and 103 deletions

View File

@ -1,6 +1,7 @@
#pragma once
#include "Asset/AssetCreatorCollection.h"
#include "Asset/IZoneAssetCreationState.h"
#include "Asset/ZoneDefinitionContext.h"
#include "Gdt/IGdtQueryable.h"
#include "SearchPath/ISearchPath.h"

View File

@ -1,6 +1,6 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "SearchPath/ISearchPath.h"
#include <filesystem>
@ -21,7 +21,7 @@ private:
std::vector<std::string> m_image_names;
};
class IPakCreator : public IZoneAssetLoaderState
class IPakCreator : public IZoneAssetCreationState
{
public:
IPakToCreate* GetOrAddIPak(const std::string& ipakName);

View File

@ -39,7 +39,7 @@ void AbstractImageIPakPostProcessor::FindNextObjContainer(AssetCreationContext&
if (objContainer.m_type != ZoneDefinitionObjContainerType::IPAK)
continue;
auto& ipakCreator = context.GetZoneAssetLoaderState<IPakCreator>();
auto& ipakCreator = context.GetZoneAssetCreationState<IPakCreator>();
m_current_ipak = ipakCreator.GetOrAddIPak(objContainer.m_name);
m_current_ipak_start_index = objContainer.m_asset_start;
m_current_ipak_end_index = objContainer.m_asset_end;
@ -70,5 +70,5 @@ void AbstractImageIPakPostProcessor::PostProcessAsset(XAssetInfoGeneric& assetIn
void AbstractImageIPakPostProcessor::FinalizeZone(AssetCreationContext& context)
{
context.GetZoneAssetLoaderState<IPakCreator>().Finalize(m_search_path, m_out_dir);
context.GetZoneAssetCreationState<IPakCreator>().Finalize(m_search_path, m_out_dir);
}

View File

@ -40,7 +40,7 @@ void AbstractImageIwdPostProcessor::FindNextObjContainer(AssetCreationContext& c
if (objContainer.m_type != ZoneDefinitionObjContainerType::IWD)
continue;
auto& iwdCreator = context.GetZoneAssetLoaderState<IwdCreator>();
auto& iwdCreator = context.GetZoneAssetCreationState<IwdCreator>();
m_current_iwd = iwdCreator.GetOrAddIwd(objContainer.m_name);
m_current_iwd_start_index = objContainer.m_asset_start;
m_current_iwd_end_index = objContainer.m_asset_end;
@ -71,5 +71,5 @@ void AbstractImageIwdPostProcessor::PostProcessAsset(XAssetInfoGeneric& assetInf
void AbstractImageIwdPostProcessor::FinalizeZone(AssetCreationContext& context)
{
context.GetZoneAssetLoaderState<IwdCreator>().Finalize(m_search_path, m_out_dir);
context.GetZoneAssetCreationState<IwdCreator>().Finalize(m_search_path, m_out_dir);
}

View File

@ -1,6 +1,6 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "SearchPath/ISearchPath.h"
#include <filesystem>
@ -21,7 +21,7 @@ private:
std::vector<std::string> m_file_paths;
};
class IwdCreator : public IZoneAssetLoaderState
class IwdCreator : public IZoneAssetCreationState
{
public:
IwdToCreate* GetOrAddIwd(const std::string& iwdName);

View File

@ -63,7 +63,7 @@ std::unique_ptr<XAssetInfoGeneric> GenericAssetRegistration::CreateXAssetInfo()
}
AssetCreationContext::AssetCreationContext(Zone& zone, const AssetCreatorCollection* creators, const IgnoredAssetLookup* ignoredAssetLookup)
: ZoneAssetLoaderContainer(zone),
: ZoneAssetCreationStateContainer(zone),
m_creators(creators),
m_ignored_asset_lookup(ignoredAssetLookup)
{

View File

@ -1,6 +1,6 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "AssetRegistration.h"
#include "Game/IAsset.h"
#include "Pool/XAssetInfo.h"
@ -26,7 +26,7 @@ public:
std::unordered_multimap<std::string, asset_type_t> m_ignored_asset_lookup;
};
class AssetCreationContext : public ZoneAssetLoaderContainer
class AssetCreationContext : public ZoneAssetCreationStateContainer
{
public:
AssetCreationContext(Zone& zone, const AssetCreatorCollection* creators, const IgnoredAssetLookup* ignoredAssetLookup);

View File

@ -0,0 +1,57 @@
#pragma once
#include "Zone/Zone.h"
#include <memory>
#include <typeindex>
#include <unordered_map>
class IZoneAssetCreationState
{
protected:
IZoneAssetCreationState() = default;
public:
virtual ~IZoneAssetCreationState() = default;
IZoneAssetCreationState(const IZoneAssetCreationState& other) = default;
IZoneAssetCreationState(IZoneAssetCreationState&& other) noexcept = default;
IZoneAssetCreationState& operator=(const IZoneAssetCreationState& other) = default;
IZoneAssetCreationState& operator=(IZoneAssetCreationState&& other) noexcept = default;
virtual void SetZone(Zone* zone)
{
// Do nothing by default
}
};
class ZoneAssetCreationStateContainer
{
public:
ZoneAssetCreationStateContainer(Zone& zone)
: m_zone(zone)
{
}
template<typename T> T& GetZoneAssetCreationState()
{
static_assert(std::is_base_of_v<IZoneAssetCreationState, T>, "T must inherit IZoneAssetCreationState");
// T must also have a public default constructor
const auto foundEntry = m_zone_asset_creation_states.find(typeid(T));
if (foundEntry != m_zone_asset_creation_states.end())
return *dynamic_cast<T*>(foundEntry->second.get());
auto newState = std::make_unique<T>();
newState->SetZone(&m_zone);
auto* newStatePtr = newState.get();
m_zone_asset_creation_states.emplace(std::make_pair<std::type_index, std::unique_ptr<IZoneAssetCreationState>>(typeid(T), std::move(newState)));
return *newStatePtr;
}
protected:
Zone& m_zone;
private:
std::unordered_map<std::type_index, std::unique_ptr<IZoneAssetCreationState>> m_zone_asset_creation_states;
};

View File

@ -1,57 +0,0 @@
#pragma once
#include "Zone/Zone.h"
#include <memory>
#include <typeindex>
#include <unordered_map>
class IZoneAssetLoaderState
{
protected:
IZoneAssetLoaderState() = default;
public:
virtual ~IZoneAssetLoaderState() = default;
IZoneAssetLoaderState(const IZoneAssetLoaderState& other) = default;
IZoneAssetLoaderState(IZoneAssetLoaderState&& other) noexcept = default;
IZoneAssetLoaderState& operator=(const IZoneAssetLoaderState& other) = default;
IZoneAssetLoaderState& operator=(IZoneAssetLoaderState&& other) noexcept = default;
virtual void SetZone(Zone* zone)
{
// Do nothing by default
}
};
class ZoneAssetLoaderContainer
{
public:
ZoneAssetLoaderContainer(Zone& zone)
: m_zone(zone)
{
}
template<typename T> T& GetZoneAssetLoaderState()
{
static_assert(std::is_base_of_v<IZoneAssetLoaderState, T>, "T must inherit IZoneAssetLoaderState");
// T must also have a public default constructor
const auto foundEntry = m_zone_asset_loader_states.find(typeid(T));
if (foundEntry != m_zone_asset_loader_states.end())
return *dynamic_cast<T*>(foundEntry->second.get());
auto newState = std::make_unique<T>();
newState->SetZone(&m_zone);
auto* newStatePtr = newState.get();
m_zone_asset_loader_states.emplace(std::make_pair<std::type_index, std::unique_ptr<IZoneAssetLoaderState>>(typeid(T), std::move(newState)));
return *newStatePtr;
}
protected:
Zone& m_zone;
private:
std::unordered_map<std::type_index, std::unique_ptr<IZoneAssetLoaderState>> m_zone_asset_loader_states;
};

View File

@ -44,7 +44,7 @@ namespace
m_search_path(searchPath),
m_context(context),
m_registration(registration),
m_state_map_cache(context.GetZoneAssetLoaderState<techset::TechniqueStateMapCache>()),
m_state_map_cache(context.GetZoneAssetCreationState<techset::TechniqueStateMapCache>()),
m_base_state_bits{},
m_techset_creator(CreateTechsetLoader(memory, searchPath))
{
@ -792,7 +792,7 @@ namespace
m_registration.AddDependency(techset);
m_material.techniqueSet = techset->Asset();
auto& definitionCache = m_context.GetZoneAssetLoaderState<techset::TechsetDefinitionCache>();
auto& definitionCache = m_context.GetZoneAssetCreationState<techset::TechsetDefinitionCache>();
bool failure = false;
const auto* techsetDefinition = m_techset_creator->LoadTechsetDefinition(techsetName, m_context, failure);

View File

@ -28,8 +28,8 @@ namespace
std::vector<menuDef_t*> menus;
AssetRegistration<AssetMenuList> registration(assetName);
auto& zoneState = context.GetZoneAssetLoaderState<menu::MenuAssetZoneState>();
auto& conversionState = context.GetZoneAssetLoaderState<MenuConversionZoneState>();
auto& zoneState = context.GetZoneAssetCreationState<menu::MenuAssetZoneState>();
auto& conversionState = context.GetZoneAssetCreationState<MenuConversionZoneState>();
std::deque<std::string> menuLoadQueue;
const auto alreadyLoadedMenuListFileMenus = conversionState.m_menus_by_filename.find(assetName);
@ -74,7 +74,7 @@ namespace
void FinalizeZone(AssetCreationContext& context) override
{
context.GetZoneAssetLoaderState<MenuConversionZoneState>().FinalizeSupportingData();
context.GetZoneAssetCreationState<MenuConversionZoneState>().FinalizeSupportingData();
}
private:

View File

@ -1,13 +1,13 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "Game/IW4/IW4.h"
#include <map>
namespace IW4
{
class MenuConversionZoneState final : public IZoneAssetLoaderState
class MenuConversionZoneState final : public IZoneAssetCreationState
{
Zone* m_zone;
std::vector<Statement_s*> m_functions;

View File

@ -1112,8 +1112,8 @@ namespace
public:
MenuConverter(const bool disableOptimizations, ISearchPath& searchPath, MemoryManager& memory, AssetCreationContext& context)
: AbstractMenuConverter(disableOptimizations, searchPath, memory, context),
m_conversion_zone_state(context.GetZoneAssetLoaderState<MenuConversionZoneState>()),
m_parsing_zone_state(context.GetZoneAssetLoaderState<MenuAssetZoneState>())
m_conversion_zone_state(context.GetZoneAssetCreationState<MenuConversionZoneState>()),
m_parsing_zone_state(context.GetZoneAssetCreationState<MenuAssetZoneState>())
{
}

View File

@ -41,7 +41,7 @@ namespace
}
};
class TechniqueZoneLoadingState final : public IZoneAssetLoaderState
class TechniqueZoneLoadingState final : public IZoneAssetCreationState
{
public:
typedef const float (*literal_t)[4];
@ -84,7 +84,7 @@ namespace
std::map<techset::ShaderArgumentLiteralSource, literal_t> m_allocated_literals;
};
class ShaderInfoFromFileSystemCacheState final : public IZoneAssetLoaderState
class ShaderInfoFromFileSystemCacheState final : public IZoneAssetCreationState
{
std::unordered_map<std::string, std::unique_ptr<d3d9::ShaderInfo>> m_cached_shader_info;
@ -205,9 +205,9 @@ namespace
m_search_path(searchPath),
m_memory(memory),
m_context(context),
m_zone_state(context.GetZoneAssetLoaderState<TechniqueZoneLoadingState>()),
m_state_map_cache(context.GetZoneAssetLoaderState<techset::TechniqueStateMapCache>()),
m_shader_info_cache(context.GetZoneAssetLoaderState<ShaderInfoFromFileSystemCacheState>()),
m_zone_state(context.GetZoneAssetCreationState<TechniqueZoneLoadingState>()),
m_state_map_cache(context.GetZoneAssetCreationState<techset::TechniqueStateMapCache>()),
m_shader_info_cache(context.GetZoneAssetCreationState<ShaderInfoFromFileSystemCacheState>()),
m_techset_creator(techsetCreator)
{
}
@ -1034,7 +1034,7 @@ namespace
: m_search_path(searchPath),
m_memory(memory),
m_context(context),
m_zone_state(context.GetZoneAssetLoaderState<TechniqueZoneLoadingState>()),
m_zone_state(context.GetZoneAssetCreationState<TechniqueZoneLoadingState>()),
m_techset_creator(techsetCreator)
{
}
@ -1313,7 +1313,7 @@ namespace
techset::TechsetDefinition* LoadTechsetDefinition(const std::string& assetName, AssetCreationContext& context, bool& failure) override
{
failure = false;
auto& definitionCache = context.GetZoneAssetLoaderState<techset::TechsetDefinitionCache>();
auto& definitionCache = context.GetZoneAssetCreationState<techset::TechsetDefinitionCache>();
auto* cachedTechsetDefinition = definitionCache.GetCachedTechsetDefinition(assetName);
if (cachedTechsetDefinition)
return cachedTechsetDefinition;
@ -1340,7 +1340,7 @@ namespace
const state_map::StateMapDefinition* LoadStateMapDefinition(const std::string& stateMapName, AssetCreationContext& context) override
{
auto& stateMapCache = context.GetZoneAssetLoaderState<techset::TechniqueStateMapCache>();
auto& stateMapCache = context.GetZoneAssetCreationState<techset::TechniqueStateMapCache>();
auto* cachedStateMap = stateMapCache.GetCachedStateMap(stateMapName);
if (cachedStateMap)
return cachedStateMap;

View File

@ -392,7 +392,7 @@ namespace
bool LoadAccuracyGraphs(WeaponFullDef& weaponFullDef, MemoryManager& memory, ISearchPath& searchPath, AssetCreationContext& context)
{
auto& accuracyGraphLoader = context.GetZoneAssetLoaderState<AccuracyGraphLoader>();
auto& accuracyGraphLoader = context.GetZoneAssetCreationState<AccuracyGraphLoader>();
if (weaponFullDef.weapDef.aiVsAiAccuracyGraphName && weaponFullDef.weapDef.aiVsAiAccuracyGraphName[0])
{

View File

@ -28,8 +28,8 @@ namespace
std::vector<menuDef_t*> menus;
AssetRegistration<AssetMenuList> registration(assetName);
auto& zoneState = context.GetZoneAssetLoaderState<menu::MenuAssetZoneState>();
auto& conversionState = context.GetZoneAssetLoaderState<MenuConversionZoneState>();
auto& zoneState = context.GetZoneAssetCreationState<menu::MenuAssetZoneState>();
auto& conversionState = context.GetZoneAssetCreationState<MenuConversionZoneState>();
std::deque<std::string> menuLoadQueue;
const auto alreadyLoadedMenuListFileMenus = conversionState.m_menus_by_filename.find(assetName);
@ -74,7 +74,7 @@ namespace
void FinalizeZone(AssetCreationContext& context) override
{
context.GetZoneAssetLoaderState<MenuConversionZoneState>().FinalizeSupportingData();
context.GetZoneAssetCreationState<MenuConversionZoneState>().FinalizeSupportingData();
}
private:

View File

@ -1,13 +1,13 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "Game/IW5/IW5.h"
#include <map>
namespace IW5
{
class MenuConversionZoneState final : public IZoneAssetLoaderState
class MenuConversionZoneState final : public IZoneAssetCreationState
{
Zone* m_zone;
std::vector<Statement_s*> m_functions;

View File

@ -1120,8 +1120,8 @@ namespace
public:
MenuConverter(const bool disableOptimizations, ISearchPath& searchPath, MemoryManager& memory, AssetCreationContext& context)
: AbstractMenuConverter(disableOptimizations, searchPath, memory, context),
m_conversion_zone_state(context.GetZoneAssetLoaderState<MenuConversionZoneState>()),
m_parsing_zone_state(context.GetZoneAssetLoaderState<MenuAssetZoneState>())
m_conversion_zone_state(context.GetZoneAssetCreationState<MenuConversionZoneState>()),
m_parsing_zone_state(context.GetZoneAssetCreationState<MenuAssetZoneState>())
{
}

View File

@ -822,7 +822,7 @@ namespace
bool LoadAccuracyGraphs(WeaponFullDef& weaponFullDef, MemoryManager& memory, ISearchPath& searchPath, AssetCreationContext& context)
{
auto& accuracyGraphLoader = context.GetZoneAssetLoaderState<AccuracyGraphLoader>();
auto& accuracyGraphLoader = context.GetZoneAssetCreationState<AccuracyGraphLoader>();
if (weaponFullDef.weapDef.aiVsAiAccuracyGraphName && weaponFullDef.weapDef.aiVsAiAccuracyGraphName[0])
{

View File

@ -409,7 +409,7 @@ namespace
bool LoadAccuracyGraphs(WeaponFullDef& weaponFullDef, MemoryManager& memory, ISearchPath& searchPath, AssetCreationContext& context)
{
auto& accuracyGraphLoader = context.GetZoneAssetLoaderState<AccuracyGraphLoader>();
auto& accuracyGraphLoader = context.GetZoneAssetCreationState<AccuracyGraphLoader>();
if (weaponFullDef.weapDef.aiVsAiAccuracyGraphName && weaponFullDef.weapDef.aiVsAiAccuracyGraphName[0])
{

View File

@ -1,6 +1,6 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "Domain/CommonFunctionDef.h"
#include "Domain/CommonMenuDef.h"
@ -8,7 +8,7 @@
namespace menu
{
class MenuAssetZoneState final : public IZoneAssetLoaderState
class MenuAssetZoneState final : public IZoneAssetCreationState
{
public:
std::vector<std::unique_ptr<CommonFunctionDef>> m_functions;

View File

@ -1,6 +1,6 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "StateMap/StateMapDefinition.h"
#include "Utils/ClassUtils.h"
@ -10,7 +10,7 @@
namespace techset
{
class TechniqueStateMapCache final : public IZoneAssetLoaderState
class TechniqueStateMapCache final : public IZoneAssetCreationState
{
public:
_NODISCARD const state_map::StateMapDefinition* GetCachedStateMap(const std::string& name) const;

View File

@ -1,6 +1,6 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "TechsetDefinition.h"
#include "Utils/ClassUtils.h"
@ -10,7 +10,7 @@
namespace techset
{
class TechsetDefinitionCache final : public IZoneAssetLoaderState
class TechsetDefinitionCache final : public IZoneAssetCreationState
{
public:
_NODISCARD TechsetDefinition* GetCachedTechsetDefinition(const std::string& techsetName) const;

View File

@ -1,6 +1,6 @@
#pragma once
#include "Asset/IZoneAssetLoaderState.h"
#include "Asset/IZoneAssetCreationState.h"
#include "Parsing/GenericGraph2D.h"
#include "SearchPath/ISearchPath.h"
@ -8,7 +8,7 @@
#include <string>
#include <unordered_map>
class AccuracyGraphLoader final : public IZoneAssetLoaderState
class AccuracyGraphLoader final : public IZoneAssetCreationState
{
public:
const GenericGraph2D* LoadAiVsAiGraph(ISearchPath& searchPath, const std::string& graphName);