From a408b352f13df546b2262ca01cf162b60891cdae Mon Sep 17 00:00:00 2001 From: nathansmithsmith Date: Fri, 21 Jul 2023 13:48:02 -0600 Subject: Sonic fast collision --- src/util.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/util.c') diff --git a/src/util.c b/src/util.c index 8ef4018..7f6d2ce 100644 --- a/src/util.c +++ b/src/util.c @@ -20,7 +20,7 @@ void printVector3(Vector3 v) { // Warning. Mostly chatgpt written. -static void projectTriangleOntoAxis(const Vector3 triangle[3], const Vector3 axis, float* min, float* max) { +static void projectTriangleOntoAxis(const Triangle3D triangle, const Vector3 axis, float* min, float* max) { float dot1 = Vector3DotProduct(triangle[0], axis); float dot2 = Vector3DotProduct(triangle[1], axis); float dot3 = Vector3DotProduct(triangle[2], axis); @@ -29,7 +29,7 @@ static void projectTriangleOntoAxis(const Vector3 triangle[3], const Vector3 axi *max = fmaxf(fmaxf(dot1, dot2), dot3); } -static bool trianglesIntersectOnAxis(const Vector3 triangleA[3], const Vector3 triangleB[3], Vector3 axis) { +static bool trianglesIntersectOnAxis(const Triangle3D triangleA, const Triangle3D triangleB, Vector3 axis) { float minA, maxA; float minB, maxB; @@ -39,7 +39,7 @@ static bool trianglesIntersectOnAxis(const Vector3 triangleA[3], const Vector3 t return (minA <= maxB && maxA >= minB); } -bool checkTriangleCollision3D(const Vector3 triangleA[3], const Vector3 triangleB[3], Vector3 normalA, Vector3 normalB) { +bool checkTriangleCollision3D(const Triangle3D triangleA, const Triangle3D triangleB, Vector3 normalA, Vector3 normalB) { // Test triangle normals if (!trianglesIntersectOnAxis(triangleA, triangleB, normalA)) return false; @@ -72,3 +72,9 @@ bool checkTriangleCollision3D(const Vector3 triangleA[3], const Vector3 triangle return true; } + +void copyTriangle3D(Triangle3D a, const Triangle3D b) { + a[0] = b[0]; + a[1] = b[1]; + a[2] = b[2]; +} -- cgit v1.2.3