From 6ce66659929cbd680a91dd5caa1a5957f30b0716 Mon Sep 17 00:00:00 2001 From: ModoX Date: Fri, 30 Dec 2022 00:02:40 +0100 Subject: Core/Vmaps: Fix inconsistency of hitInstance and hitModel to cause wrong area ids (#28632) Closes #28326 Co-authored-by: Gosha <284210+Lordron@users.noreply.github.com> --- src/common/Collision/Models/ModelInstance.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/common/Collision/Models/ModelInstance.cpp') diff --git a/src/common/Collision/Models/ModelInstance.cpp b/src/common/Collision/Models/ModelInstance.cpp index 28a0bd51d25..783db84caca 100644 --- a/src/common/Collision/Models/ModelInstance.cpp +++ b/src/common/Collision/Models/ModelInstance.cpp @@ -116,7 +116,9 @@ namespace VMAP Vector3 pModel = iInvRot * (p - iPos) * iInvScale; Vector3 zDirModel = iInvRot * Vector3(0.f, 0.f, -1.f); float zDist; - if (iModel->GetLocationInfo(pModel, zDirModel, zDist, info)) + + GroupLocationInfo groupInfo; + if (iModel->GetLocationInfo(pModel, zDirModel, zDist, groupInfo)) { Vector3 modelGround = pModel + zDist * zDirModel; // Transform back to world space. Note that: @@ -125,6 +127,8 @@ namespace VMAP float world_Z = ((modelGround * iInvRot) * iScale + iPos).z; if (info.ground_Z < world_Z) // hm...could it be handled automatically with zDist at intersection? { + info.rootId = groupInfo.rootId; + info.hitModel = groupInfo.hitModel; info.ground_Z = world_Z; info.hitInstance = this; return true; -- cgit v1.2.3