camera: Added zoom vector. Fixed camera visible call.
authorLukas Krickl <lukas@krickl.dev>
Fri, 6 Mar 2026 07:45:41 +0000 (08:45 +0100)
committerLukas Krickl <lukas@krickl.dev>
Fri, 6 Mar 2026 07:45:41 +0000 (08:45 +0100)
src/t_camera.c
src/t_camera.h

index d8f9522a3e1a9d9f97b4c55246ba8456d5c480bb..94dac55f62bdb1a39bac7f3ba6bf7397d2f3d417 100644 (file)
@@ -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);
index 71e79da766e09b147809464d31d2c501a067c4ba..71f457ee47c575f53944c7b6156fd72472cb95e9 100644 (file)
@@ -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);