diff options
author | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-07-21 13:48:02 -0600 |
---|---|---|
committer | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-07-21 13:48:02 -0600 |
commit | a408b352f13df546b2262ca01cf162b60891cdae (patch) | |
tree | 6a7f7053efbf01c65cb82df4478721c3a818f07a /src/util.c | |
parent | d4b40dcf7589bef2bbd0b6b940ee992da9db2343 (diff) |
Sonic fast collision
Diffstat (limited to 'src/util.c')
-rw-r--r-- | src/util.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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]; +} |