From 0a98da9a79d7a3d3b7a275a0214007105a7b9170 Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 11 Jan 2025 11:56:04 +0100 Subject: [PATCH 1/3] fix: not calculating fields in t6 attachment unique loader --- .../Game/T6/Weapon/InfoStringLoaderAttachmentUniqueT6.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ObjLoading/Game/T6/Weapon/InfoStringLoaderAttachmentUniqueT6.cpp b/src/ObjLoading/Game/T6/Weapon/InfoStringLoaderAttachmentUniqueT6.cpp index 8172eddb..98a17081 100644 --- a/src/ObjLoading/Game/T6/Weapon/InfoStringLoaderAttachmentUniqueT6.cpp +++ b/src/ObjLoading/Game/T6/Weapon/InfoStringLoaderAttachmentUniqueT6.cpp @@ -238,5 +238,7 @@ AssetCreationResult InfoStringLoaderAttachmentUnique::CreateAsset(const std::str return AssetCreationResult::Failure(); } + CalculateAttachmentUniqueFields(assetName, *attachmentUniqueFull); + return AssetCreationResult::Success(context.AddAsset(std::move(registration))); } From 36f0764cd58251586b15babe3fc0662d0e4f15dc Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 11 Jan 2025 11:56:39 +0100 Subject: [PATCH 2/3] fix: not registering script strings for xmodel loading --- src/ObjLoading/XModel/LoaderXModel.cpp.template | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ObjLoading/XModel/LoaderXModel.cpp.template b/src/ObjLoading/XModel/LoaderXModel.cpp.template index 28447a8d..20d87f69 100644 --- a/src/ObjLoading/XModel/LoaderXModel.cpp.template +++ b/src/ObjLoading/XModel/LoaderXModel.cpp.template @@ -251,8 +251,9 @@ namespace info.radiusSquared = halfSizeEigen.squaredNorm(); } - - bool ApplyCommonBonesToXModel(const JsonXModelLod& jLod, XModel& xmodel, unsigned lodNumber, const XModelCommon& common) + + bool ApplyCommonBonesToXModel( + const JsonXModelLod& jLod, XModel& xmodel, unsigned lodNumber, const XModelCommon& common, AssetRegistration& registration) { if (common.m_bones.empty()) return true; @@ -305,6 +306,7 @@ namespace { const auto& bone = common.m_bones[boneIndex]; xmodel.boneNames[boneIndex] = m_script_strings.AddOrGetScriptString(bone.name); + registration.AddScriptString(xmodel.boneNames[boneIndex]); xmodel.partClassification[boneIndex] = static_cast(m_part_classification_state.GetPartClassificationForBoneName(bone.name)); ApplyBasePose(xmodel.baseMat[boneIndex], bone); @@ -656,7 +658,7 @@ namespace if (lodNumber == 0u) { - if (!ApplyCommonBonesToXModel(jLod, xmodel, lodNumber, *common)) + if (!ApplyCommonBonesToXModel(jLod, xmodel, lodNumber, *common, registration)) return false; } else From c86f9f63910066100d68a38fcd633fc74661dc7e Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 11 Jan 2025 11:57:09 +0100 Subject: [PATCH 3/3] fix: not accessing previous zone data when taking an asset from global asset pools --- src/ObjLoading/Asset/GlobalAssetPoolsLoader.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ObjLoading/Asset/GlobalAssetPoolsLoader.h b/src/ObjLoading/Asset/GlobalAssetPoolsLoader.h index b9f3bd23..6aeeb76f 100644 --- a/src/ObjLoading/Asset/GlobalAssetPoolsLoader.h +++ b/src/ObjLoading/Asset/GlobalAssetPoolsLoader.h @@ -38,7 +38,12 @@ public: for (const auto scrString : existingAsset->m_used_script_strings) m_zone.m_script_strings.AddOrGetScriptString(existingAsset->m_zone->m_script_strings.CValue(scrString)); - return AssetCreationResult::Success(context.AddAsset(std::move(registration))); + auto* newAsset = context.AddAsset(std::move(registration)); + + // Make sure we remember this asset came from another zone + newAsset->m_zone = existingAsset->m_zone; + + return AssetCreationResult::Success(newAsset); } private: