summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorNathan Handley <NathanHandley@users.noreply.github.com>2024-12-19 12:16:57 -0600
committerGitHub <noreply@github.com>2024-12-19 19:16:57 +0100
commit0b39bf01ccf5a4a61aa8bc63eea3930ba35aedf7 (patch)
tree7520305fb7df6b4ec890a08acddc028b45673937 /src/tools
parent866c304d85e917b0330f4a7f2956538f0befe3c7 (diff)
feat(tools/vmap4_extractor) Add detection of collision-only material IDs (#20822)
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/vmap4_extractor/wmo.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/tools/vmap4_extractor/wmo.cpp b/src/tools/vmap4_extractor/wmo.cpp
index c0d6c0bbe7..70164930b7 100644
--- a/src/tools/vmap4_extractor/wmo.cpp
+++ b/src/tools/vmap4_extractor/wmo.cpp
@@ -395,8 +395,10 @@ int WMOGroup::ConvertToVMAPGroupWmo(FILE* output, bool preciseVectorData)
for (int i = 0; i < nTriangles; ++i)
{
// Skip no collision triangles
+ // TODO: Update to use MOBR in the future to catch any possibly missed edge cases
bool isRenderFace = (MOPY[2 * i] & WMO_MATERIAL_RENDER) && !(MOPY[2 * i] & WMO_MATERIAL_DETAIL);
- bool isCollision = MOPY[2 * i] & WMO_MATERIAL_COLLISION || isRenderFace;
+ bool isCollisionOnlyFace = static_cast<unsigned char>(MOPY[(2 * i) + 1]) == 0xFF; // 255 is a collision-only material id
+ bool isCollision = MOPY[2 * i] & WMO_MATERIAL_COLLISION || isRenderFace || isCollisionOnlyFace;
if (!isCollision)
continue;
// Use this triangle