From e2da734dcd95dcfaec151df68f60bb02d4169602 Mon Sep 17 00:00:00 2001 From: Katajisto Date: Mon, 3 Nov 2025 22:03:47 +0200 Subject: [PATCH] add some collider logic --- mise.toml | 2 +- src/main.jai | 1 + src/pseudophysics/colliders.jai | 27 +++++++++++++++++++++++++++ src/pseudophysics/core.jai | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/pseudophysics/colliders.jai create mode 100644 src/pseudophysics/core.jai diff --git a/mise.toml b/mise.toml index b2df8e7..6943e20 100644 --- a/mise.toml +++ b/mise.toml @@ -1,4 +1,4 @@ [tasks] build_web = "$HOME/bin/jai/bin/jai-linux first.jai - wasm release && rm -rf dist/packs/ && cp -r packs/ dist/ && rm dist/main.o" ship_web = "./game/ship_web.sh" -run = "$HOME/bin/jai/bin/jai-linux first.jai && ./first" +start = "$HOME/bin/jai/bin/jai-linux first.jai && ./first" diff --git a/src/main.jai b/src/main.jai index 70c84fe..785496a 100644 --- a/src/main.jai +++ b/src/main.jai @@ -15,6 +15,7 @@ String :: #import "String"; Jaison :: #import "Jaison"; stbi :: #import "stb_image"; +#load "pseudophysics/core.jai"; #load "trile.jai"; #load "rendering/rendering.jai"; #load "input/hotkeys.jai"; diff --git a/src/pseudophysics/colliders.jai b/src/pseudophysics/colliders.jai new file mode 100644 index 0000000..f0c372d --- /dev/null +++ b/src/pseudophysics/colliders.jai @@ -0,0 +1,27 @@ +Collision_Rect :: struct { + width : float; + height : float; + position : Vector2; +} + +Collision_Circle :: struct { + radius : float; + position : Vector2; +} + +Collision_Result :: struct { + hit : bool; + collisionDepth : float; +} + +check_collision :: (rect: Collision_Rect, circle: Collision_Circle) -> Collision_Result { + closestX := max(rect.position.x - (rect.width / 2.0), min(circle.position.x, rect.position.x + (rect.width / 2.0))); + closestY := max(rect.position.y - (rect.height / 2.0), min(circle.position.y, rect.position.y + (rect.height / 2.0))); + distanceX := circle.position.x - closestX; + distanceY := circle.position.y - closestY; + distanceSquared := (distanceX * distanceX) + (distanceY*distanceY); + radiusSquared := circle.radius * circle.radius; + return Collision_Result.{ + hit = distanceSquared <= radiusSquared + }; +} diff --git a/src/pseudophysics/core.jai b/src/pseudophysics/core.jai new file mode 100644 index 0000000..cadd0b1 --- /dev/null +++ b/src/pseudophysics/core.jai @@ -0,0 +1 @@ +#load "colliders.jai";