From 9ab78d53840085d886405416903fcd112e84b713 Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 4 May 2024 23:00:05 +0200 Subject: [PATCH] fix: correct asset references in xmodel material dumping --- .../Game/IW3/AssetDumpers/AssetDumperXModel.cpp | 16 ++++++++++++---- .../Game/IW4/AssetDumpers/AssetDumperXModel.cpp | 16 ++++++++++++---- .../Game/IW5/AssetDumpers/AssetDumperXModel.cpp | 16 ++++++++++++---- .../Game/T5/AssetDumpers/AssetDumperXModel.cpp | 16 ++++++++++++---- .../Game/T6/AssetDumpers/AssetDumperXModel.cpp | 16 ++++++++++++---- 5 files changed, 60 insertions(+), 20 deletions(-) diff --git a/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp index ee73a0b6..df8dad55 100644 --- a/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/IW3/AssetDumpers/AssetDumperXModel.cpp @@ -150,6 +150,14 @@ namespace } } + const char* AssetName(const char* input) + { + if (input && input[0] == ',') + return &input[1]; + + return input; + } + void AddXModelMaterials(XModelCommon& out, DistinctMapper& materialMapper, const XModel* model) { for (auto surfaceMaterialNum = 0; surfaceMaterialNum < model->numsurfs; surfaceMaterialNum++) @@ -160,18 +168,18 @@ namespace XModelMaterial xMaterial; xMaterial.ApplyDefaults(); - xMaterial.name = material->info.name; + xMaterial.name = AssetName(material->info.name); const auto* colorMap = GetMaterialColorMap(material); if (colorMap) - xMaterial.colorMapName = std::string(colorMap->name); + xMaterial.colorMapName = AssetName(colorMap->name); const auto* normalMap = GetMaterialNormalMap(material); if (normalMap) - xMaterial.normalMapName = std::string(normalMap->name); + xMaterial.normalMapName = AssetName(normalMap->name); const auto* specularMap = GetMaterialSpecularMap(material); if (specularMap) - xMaterial.specularMapName = std::string(specularMap->name); + xMaterial.specularMapName = AssetName(specularMap->name); out.m_materials.emplace_back(std::move(xMaterial)); } diff --git a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp index b1019067..f88bcc3b 100644 --- a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperXModel.cpp @@ -145,6 +145,14 @@ namespace } } + const char* AssetName(const char* input) + { + if (input && input[0] == ',') + return &input[1]; + + return input; + } + void AddXModelMaterials(XModelCommon& out, DistinctMapper& materialMapper, const XModel* model) { for (auto surfaceMaterialNum = 0; surfaceMaterialNum < model->numsurfs; surfaceMaterialNum++) @@ -155,18 +163,18 @@ namespace XModelMaterial xMaterial; xMaterial.ApplyDefaults(); - xMaterial.name = material->info.name; + xMaterial.name = AssetName(material->info.name); const auto* colorMap = GetMaterialColorMap(material); if (colorMap) - xMaterial.colorMapName = std::string(colorMap->name); + xMaterial.colorMapName = AssetName(colorMap->name); const auto* normalMap = GetMaterialNormalMap(material); if (normalMap) - xMaterial.normalMapName = std::string(normalMap->name); + xMaterial.normalMapName = AssetName(normalMap->name); const auto* specularMap = GetMaterialSpecularMap(material); if (specularMap) - xMaterial.specularMapName = std::string(specularMap->name); + xMaterial.specularMapName = AssetName(specularMap->name); out.m_materials.emplace_back(std::move(xMaterial)); } diff --git a/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp index b9cb4435..cef5b987 100644 --- a/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/IW5/AssetDumpers/AssetDumperXModel.cpp @@ -145,6 +145,14 @@ namespace } } + const char* AssetName(const char* input) + { + if (input && input[0] == ',') + return &input[1]; + + return input; + } + void AddXModelMaterials(XModelCommon& out, DistinctMapper& materialMapper, const XModel* model) { for (auto surfaceMaterialNum = 0; surfaceMaterialNum < model->numsurfs; surfaceMaterialNum++) @@ -155,18 +163,18 @@ namespace XModelMaterial xMaterial; xMaterial.ApplyDefaults(); - xMaterial.name = material->info.name; + xMaterial.name = AssetName(material->info.name); const auto* colorMap = GetMaterialColorMap(material); if (colorMap) - xMaterial.colorMapName = std::string(colorMap->name); + xMaterial.colorMapName = AssetName(colorMap->name); const auto* normalMap = GetMaterialNormalMap(material); if (normalMap) - xMaterial.normalMapName = std::string(normalMap->name); + xMaterial.normalMapName = AssetName(normalMap->name); const auto* specularMap = GetMaterialSpecularMap(material); if (specularMap) - xMaterial.specularMapName = std::string(specularMap->name); + xMaterial.specularMapName = AssetName(specularMap->name); out.m_materials.emplace_back(std::move(xMaterial)); } diff --git a/src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp index ad9c3657..6538f7c7 100644 --- a/src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/T5/AssetDumpers/AssetDumperXModel.cpp @@ -150,6 +150,14 @@ namespace } } + const char* AssetName(const char* input) + { + if (input && input[0] == ',') + return &input[1]; + + return input; + } + void AddXModelMaterials(XModelCommon& out, DistinctMapper& materialMapper, const XModel* model) { for (auto surfaceMaterialNum = 0; surfaceMaterialNum < model->numsurfs; surfaceMaterialNum++) @@ -160,18 +168,18 @@ namespace XModelMaterial xMaterial; xMaterial.ApplyDefaults(); - xMaterial.name = material->info.name; + xMaterial.name = AssetName(material->info.name); const auto* colorMap = GetMaterialColorMap(material); if (colorMap) - xMaterial.colorMapName = std::string(colorMap->name); + xMaterial.colorMapName = AssetName(colorMap->name); const auto* normalMap = GetMaterialNormalMap(material); if (normalMap) - xMaterial.normalMapName = std::string(normalMap->name); + xMaterial.normalMapName = AssetName(normalMap->name); const auto* specularMap = GetMaterialSpecularMap(material); if (specularMap) - xMaterial.specularMapName = std::string(specularMap->name); + xMaterial.specularMapName = AssetName(specularMap->name); out.m_materials.emplace_back(std::move(xMaterial)); } diff --git a/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp index 794367ed..f2cf9370 100644 --- a/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp +++ b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperXModel.cpp @@ -162,6 +162,14 @@ namespace } } + const char* AssetName(const char* input) + { + if (input && input[0] == ',') + return &input[1]; + + return input; + } + void AddXModelMaterials(XModelCommon& out, DistinctMapper& materialMapper, const XModel* model) { for (auto surfaceMaterialNum = 0; surfaceMaterialNum < model->numsurfs; surfaceMaterialNum++) @@ -172,18 +180,18 @@ namespace XModelMaterial xMaterial; xMaterial.ApplyDefaults(); - xMaterial.name = material->info.name; + xMaterial.name = AssetName(material->info.name); const auto* colorMap = GetMaterialColorMap(material); if (colorMap) - xMaterial.colorMapName = std::string(colorMap->name); + xMaterial.colorMapName = AssetName(colorMap->name); const auto* normalMap = GetMaterialNormalMap(material); if (normalMap) - xMaterial.normalMapName = std::string(normalMap->name); + xMaterial.normalMapName = AssetName(normalMap->name); const auto* specularMap = GetMaterialSpecularMap(material); if (specularMap) - xMaterial.specularMapName = std::string(specularMap->name); + xMaterial.specularMapName = AssetName(specularMap->name); out.m_materials.emplace_back(std::move(xMaterial)); }