From 56e46c606dff13e33b77bd3f5032f2eb9c5b58f5 Mon Sep 17 00:00:00 2001 From: samisalreadytaken <46823719+samisalreadytaken@users.noreply.github.com> Date: Fri, 26 Aug 2022 22:15:02 +0300 Subject: [PATCH 1/2] Fix incorrect plane calculation in IntersectRayWithOBB --- mp/src/public/collisionutils.cpp | 2 +- sp/src/public/collisionutils.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mp/src/public/collisionutils.cpp b/mp/src/public/collisionutils.cpp index 2549a569fb..6456e5b9bb 100644 --- a/mp/src/public/collisionutils.cpp +++ b/mp/src/public/collisionutils.cpp @@ -1666,7 +1666,7 @@ bool IntersectRayWithOBB( const Ray_t &ray, const matrix3x4_t &matOBBToWorld, } temp.type = 3; - MatrixITransformPlane( matOBBToWorld, temp, pTrace->plane ); + MatrixTransformPlane( matOBBToWorld, temp, pTrace->plane ); return true; } diff --git a/sp/src/public/collisionutils.cpp b/sp/src/public/collisionutils.cpp index d26db4ab05..9947b5bf59 100644 --- a/sp/src/public/collisionutils.cpp +++ b/sp/src/public/collisionutils.cpp @@ -1666,7 +1666,7 @@ bool IntersectRayWithOBB( const Ray_t &ray, const matrix3x4_t &matOBBToWorld, } temp.type = 3; - MatrixITransformPlane( matOBBToWorld, temp, pTrace->plane ); + MatrixTransformPlane( matOBBToWorld, temp, pTrace->plane ); return true; } From 319c5083cc444a22cf28d1c9e32d22112fb50934 Mon Sep 17 00:00:00 2001 From: samisalreadytaken <46823719+samisalreadytaken@users.noreply.github.com> Date: Sun, 2 Jun 2024 21:15:06 +0300 Subject: [PATCH 2/2] Fix missing transform in IntersectRayWithOBB --- mp/src/public/collisionutils.cpp | 10 ++++------ sp/src/public/collisionutils.cpp | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/mp/src/public/collisionutils.cpp b/mp/src/public/collisionutils.cpp index 6456e5b9bb..28e37952fa 100644 --- a/mp/src/public/collisionutils.cpp +++ b/mp/src/public/collisionutils.cpp @@ -1475,12 +1475,10 @@ bool IntersectRayWithOBB( const Ray_t &ray, const matrix3x4_t &matOBBToWorld, Collision_ClearTrace( ray.m_Start + ray.m_StartOffset, ray.m_Delta, pTrace ); // Compute a bounding sphere around the bloated OBB - Vector vecOBBCenter; - VectorAdd( vecOBBMins, vecOBBMaxs, vecOBBCenter ); - vecOBBCenter *= 0.5f; - vecOBBCenter.x += matOBBToWorld[0][3]; - vecOBBCenter.y += matOBBToWorld[1][3]; - vecOBBCenter.z += matOBBToWorld[2][3]; + Vector vecBoxExtents, vecOBBCenter; + VectorAdd( vecOBBMins, vecOBBMaxs, vecBoxExtents ); + vecBoxExtents *= 0.5f; + VectorTransform( vecBoxExtents, matOBBToWorld, vecOBBCenter ); Vector vecOBBHalfDiagonal; VectorSubtract( vecOBBMaxs, vecOBBMins, vecOBBHalfDiagonal ); diff --git a/sp/src/public/collisionutils.cpp b/sp/src/public/collisionutils.cpp index 9947b5bf59..20d2f597b5 100644 --- a/sp/src/public/collisionutils.cpp +++ b/sp/src/public/collisionutils.cpp @@ -1475,12 +1475,10 @@ bool IntersectRayWithOBB( const Ray_t &ray, const matrix3x4_t &matOBBToWorld, Collision_ClearTrace( ray.m_Start + ray.m_StartOffset, ray.m_Delta, pTrace ); // Compute a bounding sphere around the bloated OBB - Vector vecOBBCenter; - VectorAdd( vecOBBMins, vecOBBMaxs, vecOBBCenter ); - vecOBBCenter *= 0.5f; - vecOBBCenter.x += matOBBToWorld[0][3]; - vecOBBCenter.y += matOBBToWorld[1][3]; - vecOBBCenter.z += matOBBToWorld[2][3]; + Vector vecBoxExtents, vecOBBCenter; + VectorAdd( vecOBBMins, vecOBBMaxs, vecBoxExtents ); + vecBoxExtents *= 0.5f; + VectorTransform( vecBoxExtents, matOBBToWorld, vecOBBCenter ); Vector vecOBBHalfDiagonal; VectorSubtract( vecOBBMaxs, vecOBBMins, vecOBBHalfDiagonal );