Have capsule minkowski sum work with non normalized vector #501

This commit is contained in:
James Lambert 2023-11-27 22:30:04 -07:00
parent c4a6ef375c
commit 3d6db71f92

View file

@ -41,12 +41,14 @@ int collisionCapsuleMinkowsiSum(void* data, struct Basis* basis, struct Vector3*
float directionY = vector3Dot(&basis->y, direction); float directionY = vector3Dot(&basis->y, direction);
if (directionY > SQRT_2) { if (directionY * directionY > 0.5f * vector3MagSqrd(direction)) {
if (directionY > 0.0f) {
vector3Scale(&basis->y, output, capsule->radius); vector3Scale(&basis->y, output, capsule->radius);
return 0xFF; return 0xFF;
} else if (directionY < -SQRT_2) { } else {
vector3Scale(&basis->y, output, -capsule->radius - capsule->extendDownward); vector3Scale(&basis->y, output, -capsule->radius - capsule->extendDownward);
return 0xFF00; return 0xFF00;
}
} else { } else {
struct Vector2 horizontalBasis; struct Vector2 horizontalBasis;