From 0b39bf01ccf5a4a61aa8bc63eea3930ba35aedf7 Mon Sep 17 00:00:00 2001 From: Nathan Handley Date: Thu, 19 Dec 2024 12:16:57 -0600 Subject: [PATCH] feat(tools/vmap4_extractor) Add detection of collision-only material IDs (#20822) --- src/tools/vmap4_extractor/wmo.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/vmap4_extractor/wmo.cpp b/src/tools/vmap4_extractor/wmo.cpp index c0d6c0bbe..70164930b 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(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