From 6906e4fc38ae941bfaf31d3027e4a90cc939b7af Mon Sep 17 00:00:00 2001 From: Noah Metz Date: Mon, 8 Jan 2024 17:55:50 -0700 Subject: [PATCH] Move world position and rotation to function parameters instead of using globals directly --- src/main.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main.c b/src/main.c index e2032be..c7c45a0 100644 --- a/src/main.c +++ b/src/main.c @@ -1745,39 +1745,39 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod } } -VkResult update_ubo(void** buffers, uint32_t frame_index) { +VkResult update_scene_ubo(void** buffers, uint32_t frame_index, vec3 world_position, float* rotation, float aspect_ratio, float time_delta) { vec3 movement_sum = {0.0f, 0.0f, 0.0f}; if(key_flags.forward) { - movement_sum[2] += 0.01; + movement_sum[2] += 1 * time_delta; } if(key_flags.backward) { - movement_sum[2] -= 0.01; + movement_sum[2] -= 1 * time_delta; } if(key_flags.left) { - movement_sum[0] -= 0.01; + movement_sum[0] -= 1 * time_delta; } if(key_flags.right) { - movement_sum[0] += 0.01; + movement_sum[0] += 1 * time_delta; } if(key_flags.up) { - movement_sum[1] += 0.01; + movement_sum[1] += 1 * time_delta; } if(key_flags.down) { - movement_sum[1] -= 0.01; + movement_sum[1] -= 1 * time_delta; } if(key_flags.turn_right) { - rotation -= 0.01; + *rotation -= 1 * time_delta; } if(key_flags.turn_left) { - rotation += 0.01; + *rotation += 1 * time_delta; } vec3 forward = {0.0f, 0.0f, 1.0f}; @@ -1785,7 +1785,7 @@ VkResult update_ubo(void** buffers, uint32_t frame_index) { vec3 dir; mat4 rot; - glm_rotate_make(rot, rotation, up); + glm_rotate_make(rot, *rotation, up); glm_mat4_mulv3(rot, forward, 1.0f, dir); vec3 movement_rot; @@ -1793,7 +1793,7 @@ VkResult update_ubo(void** buffers, uint32_t frame_index) { glm_vec3_add(movement_rot, world_position, world_position); struct SceneUBO ubo = {}; - glm_perspective(90.0f, 800.0/600.0, 0.1, 100, ubo.proj); + glm_perspective(90.0f, aspect_ratio, 0.1, 100, ubo.proj); glm_look(world_position, dir, up, ubo.view); memcpy(buffers[frame_index], (void*)&ubo, sizeof(ubo)); @@ -1802,7 +1802,7 @@ VkResult update_ubo(void** buffers, uint32_t frame_index) { } VkResult draw_frame(VulkanContext* context) { - update_ubo(context->scene_ubo_ptrs, context->current_frame); + update_scene_ubo(context->scene_ubo_ptrs, context->current_frame, world_position, &rotation, (float)context->swapchain_extent.width/(float)context->swapchain_extent.height, 0.01); VkResult result; result = vkWaitForFences(context->device, 1, &context->in_flight_fences[context->current_frame], VK_TRUE, UINT64_MAX);