From 195f982d4b232e78736e6d5c37abf95dc17591e2 Mon Sep 17 00:00:00 2001 From: Teemu Date: Sat, 13 Jan 2024 14:37:36 +0200 Subject: [PATCH 1/2] Fix "orthographic/camera.lua:795: attempt to index a nil value" from `world_to_window` --- orthographic/camera.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/orthographic/camera.lua b/orthographic/camera.lua index 6fe4ba1..640d59b 100644 --- a/orthographic/camera.lua +++ b/orthographic/camera.lua @@ -792,12 +792,16 @@ end -- @param world World coordinates as a vector3 -- @return window coordinates function M.world_to_window(camera_id, world) - local view = cameras[camera_id].view or MATRIX4 - local projection = cameras[camera_id].projection or MATRIX4 - local screen = M.project(view, projection, vmath.vector3(world)) - local scale_x = screen.x / (dpi_ratio * DISPLAY_WIDTH / WINDOW_WIDTH) - local scale_y = screen.y / (dpi_ratio * DISPLAY_HEIGHT / WINDOW_HEIGHT) - return vmath.vector3(scale_x, scale_y, 0) + camera_id = camera_id or camera_ids[1] + assert(camera_id, "You must provide a camera id") + assert(world, "You must provide world coordinates to convert") + local camera = cameras[camera_id] + local view = camera.view or MATRIX4 + local projection = camera.projection or MATRIX4 + local screen = M.project(view, projection, vmath.vector3(world)) + local scale_x = screen.x / (dpi_ratio * DISPLAY_WIDTH / WINDOW_WIDTH) + local scale_y = screen.y / (dpi_ratio * DISPLAY_HEIGHT / WINDOW_HEIGHT) + return vmath.vector3(scale_x, scale_y, 0) end --- Translate world coordinates to screen coordinates given a From dc75d49e5fd396ca8bf2f69384ce1de4511dce37 Mon Sep 17 00:00:00 2001 From: Teemu Date: Mon, 22 Jan 2024 11:26:10 +0200 Subject: [PATCH 2/2] Updated world_to_window camera_id param comment --- orthographic/camera.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orthographic/camera.lua b/orthographic/camera.lua index 640d59b..bbdcbcf 100644 --- a/orthographic/camera.lua +++ b/orthographic/camera.lua @@ -788,7 +788,7 @@ end -- on a specific camera's view and projection -- Window coordinates are the non-scaled coordinates provided by action.screen_x -- and action.screen_y in on_input() --- @param camera_id +-- @param camera_id or nil for the first camera -- @param world World coordinates as a vector3 -- @return window coordinates function M.world_to_window(camera_id, world)