From: Lukas Krickl Date: Fri, 6 Mar 2026 07:45:41 +0000 (+0100) Subject: camera: Added zoom vector. Fixed camera visible call. X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=4e4adfa02911399da1f1b1b9ded2408d0405d56c;p=lrts%2F.git camera: Added zoom vector. Fixed camera visible call. --- diff --git a/src/t_camera.c b/src/t_camera.c index d8f9522..94dac55 100644 --- a/src/t_camera.c +++ b/src/t_camera.c @@ -10,7 +10,7 @@ struct t_camera t_camera_init(i32 viewport_x, i32 viewport_y) { c.viewport_x = viewport_x; c.viewport_y = viewport_y; - c.zoom = 2; + c.zoom = 1; return c; } @@ -26,7 +26,7 @@ void t_camera_scroll(struct t_camera *c, i32 by_x, i32 by_y) { lrts_bool t_camera_is_visible_screen(struct t_camera *c, i32 x, i32 y) { lrts_assert(c); lrts_assert(c->zoom); - return u_point_in_rect(x, y, c->x, c->y, c->viewport_x / c->zoom, c->viewport_y / c->zoom); + return u_point_in_rect(x, y, c->x, c->y, c->viewport_x, c->viewport_y); } @@ -54,6 +54,13 @@ i32 t_camera_zoom(struct t_camera *c, i32 n) { return n * t_camera_zoom_factor(c); } +struct u_vec2 t_camera_zoom_vec2(struct t_camera *c, struct u_vec2 v) { + struct u_vec2 r; + r.x = t_camera_zoom(c, v.x); + r.y = t_camera_zoom(c, v.y); + return r; +} + i32 t_camera_zoom_factor(struct t_camera *c) { lrts_assert(c); lrts_assert(c->zoom); diff --git a/src/t_camera.h b/src/t_camera.h index 71e79da..71f457e 100644 --- a/src/t_camera.h +++ b/src/t_camera.h @@ -2,6 +2,7 @@ #define T_CAMERA_H__ #include "u_defs.h" +#include "u_math.h" struct t_camera { i32 x; @@ -36,6 +37,8 @@ lrts_bool t_camera_is_visible_screen(struct t_camera *c, i32 x, i32 y); /* multiplies by zoom factor */ i32 t_camera_zoom(struct t_camera *c, i32 n); +struct u_vec2 t_camera_zoom_vec2(struct t_camera *c, struct u_vec2 v); + i32 t_camera_zoom_factor(struct t_camera *c);