add some collider logic

This commit is contained in:
Tuomas Katajisto 2025-11-03 22:03:47 +02:00
parent 2587bd1e5c
commit e2da734dcd
4 changed files with 30 additions and 1 deletions

View File

@ -1,4 +1,4 @@
[tasks] [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" 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" 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"

View File

@ -15,6 +15,7 @@ String :: #import "String";
Jaison :: #import "Jaison"; Jaison :: #import "Jaison";
stbi :: #import "stb_image"; stbi :: #import "stb_image";
#load "pseudophysics/core.jai";
#load "trile.jai"; #load "trile.jai";
#load "rendering/rendering.jai"; #load "rendering/rendering.jai";
#load "input/hotkeys.jai"; #load "input/hotkeys.jai";

View File

@ -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
};
}

View File

@ -0,0 +1 @@
#load "colliders.jai";