From 4c1aa470fad91d24e3ef9c9af867f7f0d513af74 Mon Sep 17 00:00:00 2001 From: talha Date: Wed, 12 Feb 2025 23:25:46 +0500 Subject: Fixed camera jerk --- source/main.cpp | 27 ++++++++------------------- source/todo.txt | 2 +- 2 files changed, 9 insertions(+), 20 deletions(-) (limited to 'source') diff --git a/source/main.cpp b/source/main.cpp index ae6b5a4..f1d76a9 100755 --- a/source/main.cpp +++ b/source/main.cpp @@ -900,13 +900,7 @@ int main(int argc, char* argv[]) // @todo: rename rect members (makes more sense) // tl -> lt // br -> rb - { - // @step: calculate_camera_bounds - Vec2 cam_lb = Vec2{renderer.cam_pos.x, renderer.cam_pos.y}; - Vec2 cam_rt = Vec2{renderer.cam_pos.x + camera_screen_size.x, renderer.cam_pos.y + camera_screen_size.y}; - state.camera_bounds.lb = cam_lb; - state.camera_bounds.rt = cam_rt; - } + state.camera_bounds = rect(renderer.cam_pos, camera_screen_size); // @section: level elements @@ -927,8 +921,8 @@ int main(int argc, char* argv[]) load_level(&state, &level_arena, level_path); // put camera on player Entity player = state.game_level.entities[state.player.index]; - renderer.cam_pos.x = player.position.x; - renderer.cam_pos.y = player.position.y; + renderer.cam_pos.x = player.position.x - (40.0f * state.render_scale.x); + renderer.cam_pos.y = player.position.y - (40.0f * state.render_scale.y); effective_force = 0.0f; player_velocity = Vec2{0.0f, 0.0f}; gravity_diry = 1.0f; @@ -1065,11 +1059,12 @@ int main(int argc, char* argv[]) load_level(&state, &level_arena, level_path); // put camera on player Entity player = state.game_level.entities[state.player.index]; - renderer.cam_pos.x = player.position.x; - renderer.cam_pos.y = player.position.y; + renderer.cam_pos.x = player.position.x - (40.0f * state.render_scale.x); + renderer.cam_pos.y = player.position.y - (40.0f * state.render_scale.y); effective_force = 0.0f; player_velocity = Vec2{0.0f, 0.0f}; gravity_diry = 1.0f; + renderer.cam_update = 1; } } #if CAM_MANUAL_MOVE @@ -1510,7 +1505,7 @@ int main(int argc, char* argv[]) state.game_level.entities[state.player.index] = player; } - // @func: update_camera + // @section: camera_update { // camera movement and handling // Cases: @@ -1629,13 +1624,7 @@ int main(int argc, char* argv[]) renderer.preset_up_dir ); renderer.cam_update = false; - { - // @step: calculate_camera_bounds - Vec2 cam_lb = Vec2{renderer.cam_pos.x, renderer.cam_pos.y}; - Vec2 cam_rt = Vec2{renderer.cam_pos.x + camera_screen_size.x, renderer.cam_pos.y + camera_screen_size.y}; - state.camera_bounds.lb = cam_lb; - state.camera_bounds.rt = cam_rt; - } + state.camera_bounds = rect(renderer.cam_pos, camera_screen_size); } } diff --git a/source/todo.txt b/source/todo.txt index efc8285..18ea2e1 100644 --- a/source/todo.txt +++ b/source/todo.txt @@ -32,9 +32,9 @@ in the level file. * add lines for easier distinction * get world position via mouse - setup ui camera +- Fix camera jerk on level load (just a bug) DOING: -- Fix camera jerk on level load BLOCKED: - Audio: figure out what the correct audio sound for jumping will be. -- cgit v1.2.3