aboutsummaryrefslogtreecommitdiff
path: root/src/util.c
diff options
context:
space:
mode:
authornathansmithsmith <thenathansmithsmith@gmail.com>2023-07-21 13:48:02 -0600
committernathansmithsmith <thenathansmithsmith@gmail.com>2023-07-21 13:48:02 -0600
commita408b352f13df546b2262ca01cf162b60891cdae (patch)
tree6a7f7053efbf01c65cb82df4478721c3a818f07a /src/util.c
parentd4b40dcf7589bef2bbd0b6b940ee992da9db2343 (diff)
Sonic fast collision
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c12
1 files changed, 9 insertions, 3 deletions
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];
+}