add some collider logic
This commit is contained in:
parent
2587bd1e5c
commit
e2da734dcd
@ -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"
|
||||||
|
|||||||
@ -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";
|
||||||
|
|||||||
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