diff --git a/src/camera.c b/src/camera.c index 7502dfe..2cbcebb 100644 --- a/src/camera.c +++ b/src/camera.c @@ -33,3 +33,12 @@ SDL_FRect camera_world_to_pixel_rect(Camera* self, SDL_FRect* world_space) { size.x, size.y }; } + +Vector camera_world_to_pixel_point(Camera* self, Vector point) { + Transform t = self->transform; + t.rotation = 0; + t.scale = OneVector; + t = transform_invert(t); + + return vmulff(transform_point(&t, point), g_render_resolution.x / self->fov); +} diff --git a/src/camera.h b/src/camera.h index c2ab7fa..90c2e4c 100644 --- a/src/camera.h +++ b/src/camera.h @@ -18,5 +18,6 @@ extern Camera g_camera; extern void camera_init(); extern SDL_FRect camera_screen_to_world_space(Camera* self, SDL_FRect* camera_space); extern SDL_FRect camera_world_to_pixel_rect(Camera* self, SDL_FRect* world_space); +extern Vector camera_world_to_pixel_point(Camera* self, Vector point); #endif // !_fencer_camera_h