From dc6d489814e8c7c61aac5ad39030a1d67bb2d5b6 Mon Sep 17 00:00:00 2001 From: Muhlex <21311428+Muhlex@users.noreply.github.com> Date: Mon, 18 Oct 2021 22:49:31 +0200 Subject: [PATCH] Adjust IW4 xmodel bones for shield hits --- src/IW4/Assets/Xmodel.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/IW4/Assets/Xmodel.cpp b/src/IW4/Assets/Xmodel.cpp index 1b763285..82094981 100644 --- a/src/IW4/Assets/Xmodel.cpp +++ b/src/IW4/Assets/Xmodel.cpp @@ -153,9 +153,23 @@ namespace ZoneTool if (data->partClassification) { + char *shieldAdjustedPartClassification = new char[data->numBones]; + + for (int i = 0; i < data->numBones; i++) + { + uint16_t boneNameIndex = data->boneNames[i]; + std::string boneNameString = buf->get_scriptstring(boneNameIndex); + if (boneNameString == "tag_shield_back" || boneNameString == "tag_weapon_left") + shieldAdjustedPartClassification[i] = 0x13; + else + shieldAdjustedPartClassification[i] = data->partClassification[i]; + } + buf->align(0); - buf->write(data->partClassification, data->numBones); + buf->write(shieldAdjustedPartClassification, data->numBones); + ZoneBuffer::clear_pointer(&dest->partClassification); + delete[] shieldAdjustedPartClassification; } if (data->animMatrix)