From aff93c326e36f6d59713e928e77d489dcf2f494c Mon Sep 17 00:00:00 2001 From: Jason Hilder Date: Wed, 15 Jul 2026 06:10:09 +0200 Subject: [PATCH] Initial 2d camera setup --- src/camera.odin | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/camera.odin diff --git a/src/camera.odin b/src/camera.odin new file mode 100644 index 0000000..e9caef7 --- /dev/null +++ b/src/camera.odin @@ -0,0 +1,28 @@ +package game + +import rl "vendor:raylib" + +camera_init :: proc(player: Player, camera_zoom: f32) -> rl.Camera2D { + offset_adjust := (TILE_SIZE / 2) * camera_zoom + + return rl.Camera2D { + target = player.pos, + offset = rl.Vector2{ f32(GAME_WIDTH/2 - offset_adjust), f32(GAME_HEIGHT/2 - offset_adjust) }, + rotation = 0, + zoom = camera_zoom + } +} + +update_camera :: proc(player_pos: rl.Vector2, camera: ^rl.Camera2D) { + //camera.target = rl.Vector2Lerp(camera.target, player_pos, 0.2) + camera.target = player_pos +} + +draw_camera :: proc(camera: ^rl.Camera2D) { + view_width := GAME_WIDTH / camera.zoom + view_height := GAME_HEIGHT / camera.zoom + + top_left := camera.target - rl.Vector2{ f32(view_width)/2, f32(view_height)/2 } + + rl.DrawRectangleLines(i32(top_left.x), i32(top_left.y), i32(view_width), i32(view_height), rl.RED) +} \ No newline at end of file