From eb0cec1d813fad1a789b1dccadf062a9d685da06 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 22 Apr 2024 23:36:21 +0200 Subject: [PATCH] refactor: make LoadDependency and LoadIndirectAssetReference functions work with Asset template types --- .../AssetLoading/IAssetLoadingManager.h | 16 ++++++++++ .../AssetLoaders/AssetLoaderGfxLightDef.cpp | 2 +- .../IW4/AssetLoaders/AssetLoaderMaterial.cpp | 4 +-- .../AssetLoaders/AssetLoaderTechniqueSet.cpp | 10 +++---- .../IW4/AssetLoaders/AssetLoaderWeapon.cpp | 2 +- .../InfoStringToStructConverter.cpp | 30 +++++++++---------- .../Game/IW4/Menu/MenuConverterIW4.cpp | 8 ++--- .../IW5/AssetLoaders/AssetLoaderWeapon.cpp | 10 +++---- .../InfoStringToStructConverter.cpp | 30 +++++++++---------- .../Game/IW5/Menu/MenuConverterIW5.cpp | 8 ++--- .../T6/AssetLoaders/AssetLoaderFontIcon.cpp | 4 +-- .../T6/AssetLoaders/AssetLoaderWeapon.cpp | 16 +++++----- .../AssetLoaderWeaponAttachmentUnique.cpp | 8 ++--- .../InfoStringToStructConverter.cpp | 30 +++++++++---------- .../Game/T6/Material/JsonMaterialLoader.cpp | 6 ++-- .../T6/WeaponCamo/JsonWeaponCamoLoader.cpp | 12 ++++---- 16 files changed, 106 insertions(+), 90 deletions(-) diff --git a/src/ObjLoading/AssetLoading/IAssetLoadingManager.h b/src/ObjLoading/AssetLoading/IAssetLoadingManager.h index b7283769..398a6515 100644 --- a/src/ObjLoading/AssetLoading/IAssetLoadingManager.h +++ b/src/ObjLoading/AssetLoading/IAssetLoadingManager.h @@ -1,5 +1,6 @@ #pragma once #include "AssetLoadingContext.h" +#include "Game/IAsset.h" #include "Pool/XAssetInfo.h" #include "Utils/ClassUtils.h" #include "Zone/ZoneTypes.h" @@ -50,6 +51,21 @@ public: assetType, assetName, asset, std::move(dependencies), std::move(usedScriptStrings), std::move(indirectAssetReferences))); } + template XAssetInfo* LoadDependency(const std::string& assetName) + { + static_assert(std::is_base_of_v); + + return static_cast*>(LoadDependency(AssetType::EnumEntry, assetName)); + } + + template IndirectAssetReference LoadIndirectAssetReference(const std::string& assetName) + { + static_assert(std::is_base_of_v); + + return LoadIndirectAssetReference(AssetType::EnumEntry, assetName); + } + +protected: virtual XAssetInfoGeneric* LoadDependency(asset_type_t assetType, const std::string& assetName) = 0; virtual IndirectAssetReference LoadIndirectAssetReference(asset_type_t assetType, const std::string& assetName) = 0; }; diff --git a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderGfxLightDef.cpp b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderGfxLightDef.cpp index 816766f3..de01df08 100644 --- a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderGfxLightDef.cpp +++ b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderGfxLightDef.cpp @@ -52,7 +52,7 @@ bool AssetLoaderGfxLightDef::LoadFromRaw( file.m_stream->read(&imageName[0], static_cast(imageNameSize)); file.m_stream->read(reinterpret_cast(&lmapLookupStart), sizeof(int8_t)); - auto* imageDependency = reinterpret_cast*>(manager->LoadDependency(ASSET_TYPE_IMAGE, imageName)); + auto* imageDependency = manager->LoadDependency(imageName); if (!imageDependency) { diff --git a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMaterial.cpp b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMaterial.cpp index 3750403e..1d9d472f 100644 --- a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMaterial.cpp +++ b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMaterial.cpp @@ -808,7 +808,7 @@ namespace IW4 void SetTechniqueSet(const std::string& techsetName) { - auto* techset = reinterpret_cast*>(m_manager->LoadDependency(ASSET_TYPE_TECHNIQUE_SET, techsetName)); + auto* techset = m_manager->LoadDependency(techsetName); if (techset == nullptr) { @@ -994,7 +994,7 @@ namespace IW4 break; } - auto* image = reinterpret_cast*>(m_manager->LoadDependency(ASSET_TYPE_IMAGE, textureName)); + auto* image = m_manager->LoadDependency(textureName); if (image == nullptr) { diff --git a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderTechniqueSet.cpp b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderTechniqueSet.cpp index 90308388..e51a7a3b 100644 --- a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderTechniqueSet.cpp +++ b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderTechniqueSet.cpp @@ -391,7 +391,7 @@ namespace IW4 ss << materialStreamSourceAbbreviation[stream.source] << materialStreamDestinationAbbreviation[stream.dest]; } - pass.m_vertex_decl_asset = reinterpret_cast*>(m_manager->LoadDependency(ASSET_TYPE_VERTEXDECL, ss.str())); + pass.m_vertex_decl_asset = m_manager->LoadDependency(ss.str()); } bool AcceptEndPass(std::string& errorMessage) override @@ -461,7 +461,7 @@ namespace IW4 bool AcceptVertexShader(const std::string& vertexShaderName, std::string& errorMessage) override { - auto* vertexShaderDependency = m_manager->LoadDependency(ASSET_TYPE_VERTEXSHADER, vertexShaderName); + auto* vertexShaderDependency = m_manager->LoadDependency(vertexShaderName); if (vertexShaderDependency == nullptr) { std::ostringstream ss; @@ -472,7 +472,7 @@ namespace IW4 assert(!m_passes.empty()); auto& pass = m_passes.at(m_passes.size() - 1); - pass.m_vertex_shader = reinterpret_cast*>(vertexShaderDependency); + pass.m_vertex_shader = vertexShaderDependency; if (pass.m_vertex_shader->Asset()->name && pass.m_vertex_shader->Asset()->name[0] == ',') { @@ -501,7 +501,7 @@ namespace IW4 bool AcceptPixelShader(const std::string& pixelShaderName, std::string& errorMessage) override { - auto* pixelShaderDependency = m_manager->LoadDependency(ASSET_TYPE_PIXELSHADER, pixelShaderName); + auto* pixelShaderDependency = m_manager->LoadDependency(pixelShaderName); if (pixelShaderDependency == nullptr) { std::ostringstream ss; @@ -512,7 +512,7 @@ namespace IW4 assert(!m_passes.empty()); auto& pass = m_passes.at(m_passes.size() - 1); - pass.m_pixel_shader = reinterpret_cast*>(pixelShaderDependency); + pass.m_pixel_shader = pixelShaderDependency; if (pass.m_pixel_shader->Asset()->name && pass.m_pixel_shader->Asset()->name[0] == ',') { diff --git a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderWeapon.cpp b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderWeapon.cpp index 5fda3048..c7221d1d 100644 --- a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderWeapon.cpp +++ b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderWeapon.cpp @@ -137,7 +137,7 @@ namespace if (ConvertString(value, field.iOffset)) { if (!value.empty()) - m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(ASSET_TYPE_XANIMPARTS, value)); + m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(value)); return true; } diff --git a/src/ObjLoading/Game/IW4/InfoString/InfoStringToStructConverter.cpp b/src/ObjLoading/Game/IW4/InfoString/InfoStringToStructConverter.cpp index c18cbd97..4ac8d81a 100644 --- a/src/ObjLoading/Game/IW4/InfoString/InfoStringToStructConverter.cpp +++ b/src/ObjLoading/Game/IW4/InfoString/InfoStringToStructConverter.cpp @@ -54,11 +54,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* fx = m_loading_manager->LoadDependency(ASSET_TYPE_FX, value); + auto* fx = m_loading_manager->LoadDependency(value); if (fx == nullptr) { @@ -67,7 +67,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(fx); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = fx->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = fx->Asset(); return true; } @@ -76,11 +76,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* xmodel = m_loading_manager->LoadDependency(ASSET_TYPE_XMODEL, value); + auto* xmodel = m_loading_manager->LoadDependency(value); if (xmodel == nullptr) { @@ -89,7 +89,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(xmodel); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = xmodel->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = xmodel->Asset(); return true; } @@ -98,11 +98,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* material = m_loading_manager->LoadDependency(ASSET_TYPE_MATERIAL, value); + auto* material = m_loading_manager->LoadDependency(value); if (material == nullptr) { @@ -111,7 +111,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(material); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = material->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = material->Asset(); return true; } @@ -120,11 +120,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* tracer = m_loading_manager->LoadDependency(ASSET_TYPE_TRACER, value); + auto* tracer = m_loading_manager->LoadDependency(value); if (tracer == nullptr) { @@ -133,7 +133,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(tracer); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = tracer->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = tracer->Asset(); return true; } @@ -156,11 +156,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* collmap = m_loading_manager->LoadDependency(ASSET_TYPE_PHYSCOLLMAP, value); + auto* collmap = m_loading_manager->LoadDependency(value); if (collmap == nullptr) { @@ -169,7 +169,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(collmap); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = collmap->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = collmap->Asset(); return true; } diff --git a/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp b/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp index 2b29488f..4c27dbd5 100644 --- a/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp +++ b/src/ObjLoading/Game/IW4/Menu/MenuConverterIW4.cpp @@ -83,11 +83,11 @@ namespace IW4 if (materialName.empty()) return nullptr; - auto* materialDependency = m_manager->LoadDependency(ASSET_TYPE_MATERIAL, materialName); + auto* materialDependency = m_manager->LoadDependency(materialName); if (!materialDependency) throw MenuConversionException("Failed to load material \"" + materialName + "\"", menu, item); - return static_cast(materialDependency->m_ptr); + return materialDependency->Asset(); } _NODISCARD snd_alias_list_t* ConvertSound(const std::string& soundName, const CommonMenuDef* menu, const CommonItemDef* item = nullptr) const @@ -95,11 +95,11 @@ namespace IW4 if (soundName.empty()) return nullptr; - auto* soundDependency = m_manager->LoadDependency(ASSET_TYPE_SOUND, soundName); + auto* soundDependency = m_manager->LoadDependency(soundName); if (!soundDependency) throw MenuConversionException("Failed to load sound \"" + soundName + "\"", menu, item); - return static_cast(soundDependency->m_ptr); + return soundDependency->Asset(); } bool HandleStaticDvarFunctionCall(Statement_s* gameStatement, diff --git a/src/ObjLoading/Game/IW5/AssetLoaders/AssetLoaderWeapon.cpp b/src/ObjLoading/Game/IW5/AssetLoaders/AssetLoaderWeapon.cpp index 2eeed39d..c81441a0 100644 --- a/src/ObjLoading/Game/IW5/AssetLoaders/AssetLoaderWeapon.cpp +++ b/src/ObjLoading/Game/IW5/AssetLoaders/AssetLoaderWeapon.cpp @@ -135,7 +135,7 @@ namespace if (ConvertString(value, field.iOffset)) { if (!value.empty()) - m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(ASSET_TYPE_XANIMPARTS, value)); + m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(value)); return true; } @@ -157,7 +157,7 @@ namespace auto currentOther = 0u; for (const auto& attachmentName : valueArray) { - auto* attachmentInfo = static_cast*>(m_loading_manager->LoadDependency(ASSET_TYPE_ATTACHMENT, attachmentName)); + auto* attachmentInfo = m_loading_manager->LoadDependency(attachmentName); if (!attachmentInfo) return false; m_dependencies.emplace(attachmentInfo); @@ -448,7 +448,7 @@ namespace } animName = m_memory->Dup(value.c_str()); - m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(ASSET_TYPE_XANIMPARTS, value)); + m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(value)); } void ParseSoundAlias(const std::string& value, SndAliasCustom& soundAlias) @@ -461,7 +461,7 @@ namespace soundAlias.name = m_memory->Alloc(); soundAlias.name->soundName = m_memory->Dup(value.c_str()); - m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(ASSET_TYPE_SOUND, value)); + m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(value)); } bool ParseFxEffectDef(const std::string& value, FxEffectDef*& fx) @@ -472,7 +472,7 @@ namespace return true; } - auto* fxInfo = static_cast*>(m_loading_manager->LoadDependency(ASSET_TYPE_FX, value)); + auto* fxInfo = m_loading_manager->LoadDependency(value); if (!fxInfo) { std::cerr << "Failed to load fx for override \"" << value << "\"\n"; diff --git a/src/ObjLoading/Game/IW5/InfoString/InfoStringToStructConverter.cpp b/src/ObjLoading/Game/IW5/InfoString/InfoStringToStructConverter.cpp index 3f8f7e55..4d312202 100644 --- a/src/ObjLoading/Game/IW5/InfoString/InfoStringToStructConverter.cpp +++ b/src/ObjLoading/Game/IW5/InfoString/InfoStringToStructConverter.cpp @@ -54,11 +54,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* fx = m_loading_manager->LoadDependency(ASSET_TYPE_FX, value); + auto* fx = m_loading_manager->LoadDependency(value); if (fx == nullptr) { @@ -67,7 +67,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(fx); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = fx->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = fx->Asset(); return true; } @@ -76,11 +76,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* xmodel = m_loading_manager->LoadDependency(ASSET_TYPE_XMODEL, value); + auto* xmodel = m_loading_manager->LoadDependency(value); if (xmodel == nullptr) { @@ -89,7 +89,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(xmodel); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = xmodel->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = xmodel->Asset(); return true; } @@ -98,11 +98,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* material = m_loading_manager->LoadDependency(ASSET_TYPE_MATERIAL, value); + auto* material = m_loading_manager->LoadDependency(value); if (material == nullptr) { @@ -111,7 +111,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(material); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = material->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = material->Asset(); return true; } @@ -120,11 +120,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* tracer = m_loading_manager->LoadDependency(ASSET_TYPE_TRACER, value); + auto* tracer = m_loading_manager->LoadDependency(value); if (tracer == nullptr) { @@ -133,7 +133,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(tracer); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = tracer->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = tracer->Asset(); return true; } @@ -156,11 +156,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* collmap = m_loading_manager->LoadDependency(ASSET_TYPE_PHYSCOLLMAP, value); + auto* collmap = m_loading_manager->LoadDependency(value); if (collmap == nullptr) { @@ -169,7 +169,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(collmap); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = collmap->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = collmap->Asset(); return true; } diff --git a/src/ObjLoading/Game/IW5/Menu/MenuConverterIW5.cpp b/src/ObjLoading/Game/IW5/Menu/MenuConverterIW5.cpp index ba55f60c..e36a7b37 100644 --- a/src/ObjLoading/Game/IW5/Menu/MenuConverterIW5.cpp +++ b/src/ObjLoading/Game/IW5/Menu/MenuConverterIW5.cpp @@ -83,11 +83,11 @@ namespace IW5 if (materialName.empty()) return nullptr; - auto* materialDependency = m_manager->LoadDependency(ASSET_TYPE_MATERIAL, materialName); + auto* materialDependency = m_manager->LoadDependency(materialName); if (!materialDependency) throw MenuConversionException("Failed to load material \"" + materialName + "\"", menu, item); - return static_cast(materialDependency->m_ptr); + return materialDependency->Asset(); } _NODISCARD snd_alias_list_t* ConvertSound(const std::string& soundName, const CommonMenuDef* menu, const CommonItemDef* item = nullptr) const @@ -95,11 +95,11 @@ namespace IW5 if (soundName.empty()) return nullptr; - auto* soundDependency = m_manager->LoadDependency(ASSET_TYPE_SOUND, soundName); + auto* soundDependency = m_manager->LoadDependency(soundName); if (!soundDependency) throw MenuConversionException("Failed to load sound \"" + soundName + "\"", menu, item); - return static_cast(soundDependency->m_ptr); + return soundDependency->Asset(); } bool HandleStaticDvarFunctionCall(Statement_s* gameStatement, diff --git a/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderFontIcon.cpp b/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderFontIcon.cpp index b86b2661..b89b4f8c 100644 --- a/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderFontIcon.cpp +++ b/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderFontIcon.cpp @@ -117,14 +117,14 @@ bool AssetLoaderFontIcon::ReadIconRow(const std::vector& row, return false; } - auto* materialDependency = manager->LoadDependency(ASSET_TYPE_MATERIAL, row[ROW_ICON_MATERIAL]); + auto* materialDependency = manager->LoadDependency(row[ROW_ICON_MATERIAL]); if (materialDependency == nullptr) { std::cout << ErrorPrefix(assetName, rowIndex) << "Failed to load material \"" << row[ROW_ICON_MATERIAL] << "\"\n"; return false; } - icon.fontIconMaterialHandle = static_cast(materialDependency->m_ptr); + icon.fontIconMaterialHandle = materialDependency->Asset(); icon.fontIconName.string = memory->Dup(row[ROW_ICON_NAME].c_str()); icon.fontIconName.hash = Common::Com_HashString(icon.fontIconName.string); diff --git a/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderWeapon.cpp b/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderWeapon.cpp index 7d17d30a..96f21e6f 100644 --- a/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderWeapon.cpp +++ b/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderWeapon.cpp @@ -132,11 +132,11 @@ namespace T6 { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* camo = m_loading_manager->LoadDependency(ASSET_TYPE_WEAPON_CAMO, value); + auto* camo = m_loading_manager->LoadDependency(value); if (camo == nullptr) { @@ -145,7 +145,7 @@ namespace T6 } m_dependencies.emplace(camo); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = camo->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = camo->Asset(); return true; } @@ -163,14 +163,14 @@ namespace T6 for (const auto& attachmentName : valueArray) { - auto* attachmentAssetInfo = m_loading_manager->LoadDependency(ASSET_TYPE_ATTACHMENT, attachmentName); + auto* attachmentAssetInfo = m_loading_manager->LoadDependency(attachmentName); if (attachmentAssetInfo == nullptr) { std::cerr << "Failed to load attachment asset \"" << attachmentName << "\"\n"; return false; } - auto* attachmentAsset = static_cast(attachmentAssetInfo->m_ptr); + auto* attachmentAsset = attachmentAssetInfo->Asset(); if (static_cast(attachmentAsset->attachmentType) >= ATTACHMENT_TYPE_COUNT) { @@ -212,14 +212,14 @@ namespace T6 for (const auto& attachmentUniqueName : valueArray) { - auto* attachmentUniqueAssetInfo = m_loading_manager->LoadDependency(ASSET_TYPE_ATTACHMENT_UNIQUE, attachmentUniqueName); + auto* attachmentUniqueAssetInfo = m_loading_manager->LoadDependency(attachmentUniqueName); if (attachmentUniqueAssetInfo == nullptr) { std::cerr << "Failed to load attachment unique asset \"" << attachmentUniqueName << "\"\n"; return false; } - auto* attachmentUniqueAsset = static_cast(attachmentUniqueAssetInfo->m_ptr); + auto* attachmentUniqueAsset = attachmentUniqueAssetInfo->Asset(); if (HasMoreThanOneAttachmentSetInMask(attachmentUniqueAsset->combinedAttachmentTypeMask)) { @@ -263,7 +263,7 @@ namespace T6 if (ConvertString(value, field.iOffset)) { if (!value.empty()) - m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(ASSET_TYPE_XANIMPARTS, value)); + m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(value)); return true; } diff --git a/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderWeaponAttachmentUnique.cpp b/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderWeaponAttachmentUnique.cpp index 4081af74..1e3cd64a 100644 --- a/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderWeaponAttachmentUnique.cpp +++ b/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderWeaponAttachmentUnique.cpp @@ -62,11 +62,11 @@ namespace T6 { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* camo = m_loading_manager->LoadDependency(ASSET_TYPE_WEAPON_CAMO, value); + auto* camo = m_loading_manager->LoadDependency(value); if (camo == nullptr) { @@ -75,7 +75,7 @@ namespace T6 } m_dependencies.emplace(camo); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = camo->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = camo->Asset(); return true; } @@ -85,7 +85,7 @@ namespace T6 if (ConvertString(value, field.iOffset)) { if (!value.empty()) - m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(ASSET_TYPE_XANIMPARTS, value)); + m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(value)); return true; } diff --git a/src/ObjLoading/Game/T6/InfoString/InfoStringToStructConverter.cpp b/src/ObjLoading/Game/T6/InfoString/InfoStringToStructConverter.cpp index 11a039e4..6866a586 100644 --- a/src/ObjLoading/Game/T6/InfoString/InfoStringToStructConverter.cpp +++ b/src/ObjLoading/Game/T6/InfoString/InfoStringToStructConverter.cpp @@ -72,11 +72,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* fx = m_loading_manager->LoadDependency(ASSET_TYPE_FX, value); + auto* fx = m_loading_manager->LoadDependency(value); if (fx == nullptr) { @@ -85,7 +85,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(fx); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = fx->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = fx->Asset(); return true; } @@ -94,11 +94,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* xmodel = m_loading_manager->LoadDependency(ASSET_TYPE_XMODEL, value); + auto* xmodel = m_loading_manager->LoadDependency(value); if (xmodel == nullptr) { @@ -107,7 +107,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(xmodel); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = xmodel->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = xmodel->Asset(); return true; } @@ -117,11 +117,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* material = m_loading_manager->LoadDependency(ASSET_TYPE_MATERIAL, value); + auto* material = m_loading_manager->LoadDependency(value); if (material == nullptr) { @@ -130,7 +130,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(material); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = material->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = material->Asset(); return true; } @@ -139,11 +139,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* physPreset = m_loading_manager->LoadDependency(ASSET_TYPE_PHYSPRESET, value); + auto* physPreset = m_loading_manager->LoadDependency(value); if (physPreset == nullptr) { @@ -152,7 +152,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(physPreset); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = physPreset->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = physPreset->Asset(); return true; } @@ -164,11 +164,11 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons { if (value.empty()) { - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = nullptr; return true; } - auto* tracer = m_loading_manager->LoadDependency(ASSET_TYPE_TRACER, value); + auto* tracer = m_loading_manager->LoadDependency(value); if (tracer == nullptr) { @@ -177,7 +177,7 @@ bool InfoStringToStructConverter::ConvertBaseField(const cspField_t& field, cons } m_dependencies.emplace(tracer); - *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = tracer->m_ptr; + *reinterpret_cast(reinterpret_cast(m_structure) + field.iOffset) = tracer->Asset(); return true; } diff --git a/src/ObjLoading/Game/T6/Material/JsonMaterialLoader.cpp b/src/ObjLoading/Game/T6/Material/JsonMaterialLoader.cpp index 2011b30d..c714a955 100644 --- a/src/ObjLoading/Game/T6/Material/JsonMaterialLoader.cpp +++ b/src/ObjLoading/Game/T6/Material/JsonMaterialLoader.cpp @@ -99,7 +99,7 @@ namespace textureDef.semantic = jTexture.semantic; textureDef.isMatureContent = jTexture.isMatureContent; - auto* image = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_IMAGE, jTexture.image)); + auto* image = m_manager.LoadDependency(jTexture.image); if (!image) { PrintError(material, std::format("Could not find textureDef image: {}", jTexture.image)); @@ -275,7 +275,7 @@ namespace material.cameraRegion = jMaterial.cameraRegion; material.probeMipBits = jMaterial.probeMipBits; - auto* techniqueSet = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_TECHNIQUE_SET, jMaterial.techniqueSet)); + auto* techniqueSet = m_manager.LoadDependency(jMaterial.techniqueSet); if (!techniqueSet) { PrintError(material, "Could not find technique set"); @@ -337,7 +337,7 @@ namespace if (jMaterial.thermalMaterial) { - auto* thermalMaterial = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, jMaterial.thermalMaterial.value())); + auto* thermalMaterial = m_manager.LoadDependency(jMaterial.thermalMaterial.value()); if (!thermalMaterial) { PrintError(material, "Could not find thermal material"); diff --git a/src/ObjLoading/Game/T6/WeaponCamo/JsonWeaponCamoLoader.cpp b/src/ObjLoading/Game/T6/WeaponCamo/JsonWeaponCamoLoader.cpp index bb437b86..fada1b6e 100644 --- a/src/ObjLoading/Game/T6/WeaponCamo/JsonWeaponCamoLoader.cpp +++ b/src/ObjLoading/Game/T6/WeaponCamo/JsonWeaponCamoLoader.cpp @@ -53,7 +53,7 @@ namespace { if (jWeaponCamoSet.solidCamoImage) { - auto* image = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_IMAGE, jWeaponCamoSet.solidCamoImage.value())); + auto* image = m_manager.LoadDependency(jWeaponCamoSet.solidCamoImage.value()); if (!image) { PrintError(weaponCamo, "Could not find solidCamoImage"); @@ -65,7 +65,7 @@ namespace if (jWeaponCamoSet.patternCamoImage) { - auto* image = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_IMAGE, jWeaponCamoSet.patternCamoImage.value())); + auto* image = m_manager.LoadDependency(jWeaponCamoSet.patternCamoImage.value()); if (!image) { PrintError(weaponCamo, "Could not find patternCamoImage"); @@ -102,8 +102,8 @@ namespace for (auto i = 0u; i < weaponCamoMaterial.numBaseMaterials; i++) { const auto& materialOverride = jWeaponCamoMaterial.materialOverrides[i]; - auto* baseMaterial = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, materialOverride.baseMaterial)); - auto* camoMaterial = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, materialOverride.camoMaterial)); + auto* baseMaterial = m_manager.LoadDependency(materialOverride.baseMaterial); + auto* camoMaterial = m_manager.LoadDependency(materialOverride.camoMaterial); if (!baseMaterial) { @@ -164,7 +164,7 @@ namespace { if (jWeaponCamo.solidBaseImage) { - auto* image = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_IMAGE, jWeaponCamo.solidBaseImage.value())); + auto* image = m_manager.LoadDependency(jWeaponCamo.solidBaseImage.value()); if (!image) { PrintError(weaponCamo, "Could not find solidBaseImage"); @@ -176,7 +176,7 @@ namespace if (jWeaponCamo.patternBaseImage) { - auto* image = static_cast*>(m_manager.LoadDependency(ASSET_TYPE_IMAGE, jWeaponCamo.patternBaseImage.value())); + auto* image = m_manager.LoadDependency(jWeaponCamo.patternBaseImage.value()); if (!image) { PrintError(weaponCamo, "Could not find patternBaseImage");