From 3ec518643e9ed3801c3c75bb7606fbdec57f5391 Mon Sep 17 00:00:00 2001 From: Kamay Xutax Date: Sun, 15 Sep 2024 00:27:27 +0200 Subject: [PATCH] Fix swept box ray tracing with OBBs --- mp/src/public/collisionutils.cpp | 10 +++++----- sp/src/public/collisionutils.cpp | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mp/src/public/collisionutils.cpp b/mp/src/public/collisionutils.cpp index 2549a569f..deacf3bfa 100644 --- a/mp/src/public/collisionutils.cpp +++ b/mp/src/public/collisionutils.cpp @@ -1475,12 +1475,12 @@ 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 vecOBBExtents; + VectorAdd( vecOBBMins, vecOBBMaxs, vecOBBExtents ); + vecOBBExtents *= 0.5f; + Vector vecOBBCenter; - VectorAdd( vecOBBMins, vecOBBMaxs, vecOBBCenter ); - vecOBBCenter *= 0.5f; - vecOBBCenter.x += matOBBToWorld[0][3]; - vecOBBCenter.y += matOBBToWorld[1][3]; - vecOBBCenter.z += matOBBToWorld[2][3]; + VectorTransform( vecOBBExtents, matOBBToWorld, vecOBBCenter ); Vector vecOBBHalfDiagonal; VectorSubtract( vecOBBMaxs, vecOBBMins, vecOBBHalfDiagonal ); diff --git a/sp/src/public/collisionutils.cpp b/sp/src/public/collisionutils.cpp index d26db4ab0..513657114 100644 --- a/sp/src/public/collisionutils.cpp +++ b/sp/src/public/collisionutils.cpp @@ -1475,12 +1475,12 @@ 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 vecOBBExtents; + VectorAdd( vecOBBMins, vecOBBMaxs, vecOBBExtents ); + vecOBBExtents *= 0.5f; + Vector vecOBBCenter; - VectorAdd( vecOBBMins, vecOBBMaxs, vecOBBCenter ); - vecOBBCenter *= 0.5f; - vecOBBCenter.x += matOBBToWorld[0][3]; - vecOBBCenter.y += matOBBToWorld[1][3]; - vecOBBCenter.z += matOBBToWorld[2][3]; + VectorTransform( vecOBBExtents, matOBBToWorld, vecOBBCenter ); Vector vecOBBHalfDiagonal; VectorSubtract( vecOBBMaxs, vecOBBMins, vecOBBHalfDiagonal );