From 3d6db71f921c47d6bb29e3dd4e9475682462d7ef Mon Sep 17 00:00:00 2001 From: James Lambert Date: Mon, 27 Nov 2023 22:30:04 -0700 Subject: [PATCH] Have capsule minkowski sum work with non normalized vector #501 --- src/physics/collision_capsule.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/physics/collision_capsule.c b/src/physics/collision_capsule.c index a185089..ee529d3 100644 --- a/src/physics/collision_capsule.c +++ b/src/physics/collision_capsule.c @@ -41,12 +41,14 @@ int collisionCapsuleMinkowsiSum(void* data, struct Basis* basis, struct Vector3* float directionY = vector3Dot(&basis->y, direction); - if (directionY > SQRT_2) { - vector3Scale(&basis->y, output, capsule->radius); - return 0xFF; - } else if (directionY < -SQRT_2) { - vector3Scale(&basis->y, output, -capsule->radius - capsule->extendDownward); - return 0xFF00; + if (directionY * directionY > 0.5f * vector3MagSqrd(direction)) { + if (directionY > 0.0f) { + vector3Scale(&basis->y, output, capsule->radius); + return 0xFF; + } else { + vector3Scale(&basis->y, output, -capsule->radius - capsule->extendDownward); + return 0xFF00; + } } else { struct Vector2 horizontalBasis;