add some collider logic
This commit is contained in:
parent
2587bd1e5c
commit
e2da734dcd
@ -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"
|
||||
|
||||
@ -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";
|
||||
|
||||
27
src/pseudophysics/colliders.jai
Normal file
27
src/pseudophysics/colliders.jai
Normal 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
|
||||
};
|
||||
}
|
||||
1
src/pseudophysics/core.jai
Normal file
1
src/pseudophysics/core.jai
Normal file
@ -0,0 +1 @@
|
||||
#load "colliders.jai";
|
||||
Loading…
x
Reference in New Issue
Block a user