From ae4a4a8e571b4b7215336cc6789b4450213e321c Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 28 Oct 2024 20:47:53 +0100 Subject: [PATCH] Fix `ComputeShapeSqrDistanceToPoint` on PhysX with Large Worlds #3023 --- Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp b/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp index d88031a01..e4335e318 100644 --- a/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp +++ b/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp @@ -2801,7 +2801,14 @@ float PhysicsBackend::ComputeShapeSqrDistanceToPoint(void* shape, const Vector3& { auto shapePhysX = (PxShape*)shape; const PxTransform trans(C2P(position), C2P(orientation)); +#if USE_LARGE_WORLDS + PxVec3 closestPointPx; + float result = PxGeometryQuery::pointDistance(C2P(point), shapePhysX->getGeometry(), trans, &closestPointPx); + *closestPoint = P2C(closestPointPx); + return result; +#else return PxGeometryQuery::pointDistance(C2P(point), shapePhysX->getGeometry(), trans, (PxVec3*)closestPoint); +#endif } bool PhysicsBackend::RayCastShape(void* shape, const Vector3& position, const Quaternion& orientation, const Vector3& origin, const Vector3& direction, float& resultHitDistance, float maxDistance)