diff --git a/include/vec.h b/include/vec.h index 2705f0c..b7f63f9 100644 --- a/include/vec.h +++ b/include/vec.h @@ -7,10 +7,19 @@ typedef struct Vec float y; } Vec; +/* like memcpy but for vectors */ +void vec_cpy(Vec *destination, Vec *source); + /* apply a force on a vector */ void vec_add(Vec *vector, Vec force); /* apply the opposite of a force on a vector */ void vec_sub(Vec *vector, Vec force); +/* multiply a vector by a scale */ +void vec_mul(Vec *vector, float scale); + +/* divise a vector by a scale */ +void vec_div(Vec *vector, float scale); + #endif /* _DEF_VEC */ diff --git a/src/main.c b/src/main.c index f7a37eb..c8ffd3d 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,4 @@ -w#include +#include #include #include @@ -15,7 +15,7 @@ int main(void) /* create player */ Player player = { - .position = (Vec){32, 32} + .position = {32, 32} }; /* create level */ @@ -28,8 +28,7 @@ int main(void) Camera camera = { .follow = &player.position }; - camera.position.x = player.position.x; - camera.position.y = player.position.y; + vec_cpy(&camera.position, &player.position); /* main game loop */ step_event(&player, &level, &camera); diff --git a/src/vec.c b/src/vec.c index 1260738..af64294 100644 --- a/src/vec.c +++ b/src/vec.c @@ -1,5 +1,11 @@ #include "vec.h" +void vec_cpy(Vec *destination, Vec *source) +{ + destination->x = source->x; + destination->y = source->y; +} + void vec_add(Vec *vector, Vec force) { vector->x += force.x; @@ -11,3 +17,15 @@ void vec_sub(Vec *vector, Vec force) vector->x -= force.x; vector->y -= force.y; } + +void vec_mul(Vec *vector, float scale) +{ + vector->x *= scale; + vector->y *= scale; +} + +void vec_div(Vec *vector, float scale) +{ + vector->x /= scale; + vector->y /= scale; +}