From 0c590ac952dca6fd37292ae9cd920985ef7bcc34 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Mon, 9 Feb 2026 20:05:24 -0800 Subject: [PATCH] Disable collision for carpet and rug M2 models - Add carpet/rug name detection in model loading - Set collisionNoBlock flag for carpet and rug models - Prevents slipping/sliding on decorative floor coverings - Player can now walk through carpets without collision --- src/rendering/m2_renderer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/rendering/m2_renderer.cpp b/src/rendering/m2_renderer.cpp index 2b3abf81..8e1b2dbf 100644 --- a/src/rendering/m2_renderer.cpp +++ b/src/rendering/m2_renderer.cpp @@ -913,6 +913,9 @@ bool M2Renderer::loadModel(const pipeline::M2Model& model, uint32_t modelId) { (lowerName.find("well") != std::string::npos) || (lowerName.find("base") != std::string::npos); bool lowPlatformLikeShape = lowWideShape || lowPlatformShape; + bool carpetOrRug = + (lowerName.find("carpet") != std::string::npos) || + (lowerName.find("rug") != std::string::npos); gpuModel.collisionSmallSolidProp = !gpuModel.collisionSteppedFountain && !gpuModel.collisionSteppedLowPlatform && @@ -921,7 +924,8 @@ bool M2Renderer::loadModel(const pipeline::M2Model& model, uint32_t modelId) { !curbLikeName && !lowPlatformLikeShape && (smallSolidPropName || (genericSolidPropShape && !foliageName && !softTree)); - gpuModel.collisionNoBlock = ((foliageName || softTree) && + // Disable collision for foliage, soft trees, and decorative carpets/rugs + gpuModel.collisionNoBlock = ((foliageName || softTree || carpetOrRug) && !forceSolidCurb); } gpuModel.boundMin = tightMin;