From 67b5a91adec3df1f3ae1b52c0da96b0c8de2508c Mon Sep 17 00:00:00 2001 From: TheLavaBlock <36247472+TheLavaBlock@users.noreply.github.com> Date: Wed, 20 Nov 2019 01:59:03 +0100 Subject: [PATCH] delta --- liblava/app/app.cpp | 2 +- liblava/app/app.hpp | 2 +- liblava/app/camera.cpp | 20 ++++++++------------ liblava/app/camera.hpp | 4 ++-- liblava/core/time.hpp | 6 ++++-- liblava/core/types.hpp | 1 + 6 files changed, 17 insertions(+), 18 deletions(-) diff --git a/liblava/app/app.cpp b/liblava/app/app.cpp index c3f84540..0d1d02b1 100644 --- a/liblava/app/app.cpp +++ b/liblava/app/app.cpp @@ -445,7 +445,7 @@ void app::handle_update() { else delta = milliseconds(0); - return on_update ? on_update(delta) : true; + return on_update ? on_update(to_dt(delta)) : true; }); } diff --git a/liblava/app/app.hpp b/liblava/app/app.hpp index 26d58183..0ffc3411 100644 --- a/liblava/app/app.hpp +++ b/liblava/app/app.hpp @@ -49,7 +49,7 @@ struct app : frame { lava::run_time run_time; - using update_func = std::function<bool(milliseconds)>; + using update_func = std::function<bool(delta)>; update_func on_update; using create_func = std::function<bool()>; diff --git a/liblava/app/camera.cpp b/liblava/app/camera.cpp index 6212c66a..a40a703e 100644 --- a/liblava/app/camera.cpp +++ b/liblava/app/camera.cpp @@ -24,9 +24,7 @@ void camera::destroy() { data = nullptr; } -void camera::update_view(milliseconds delta_, mouse_position mouse_pos) { - - auto delta = to_sec(delta_); +void camera::update_view(delta dt, mouse_position mouse_pos) { if (translate || rotate) { @@ -35,13 +33,13 @@ void camera::update_view(milliseconds delta_, mouse_position mouse_pos) { if (rotate && !lock_rotation) { - auto speed = delta * rotation_speed; + auto speed = dt * rotation_speed; rotation += v3(dy * speed, -dx * speed, 0.f); } if (translate) { - auto speed = delta * movement_speed; + auto speed = dt * movement_speed; position -= v3(-dx * speed, -dy * speed, 0.f); } @@ -51,7 +49,7 @@ void camera::update_view(milliseconds delta_, mouse_position mouse_pos) { if ((scroll_pos != 0.0)) { - auto speed = delta * zoom_speed; + auto speed = dt * zoom_speed; position -= v3(-0.f, 0.f, scroll_pos * speed); scroll_pos = 0.0; } @@ -65,7 +63,7 @@ void camera::update_view(milliseconds delta_, mouse_position mouse_pos) { front = glm::normalize(front); - auto speed = to_r32(delta * movement_speed * 2.f); + auto speed = dt * movement_speed * 2.f; if (up) { @@ -106,13 +104,11 @@ void camera::update_view(milliseconds delta_, mouse_position mouse_pos) { memcpy(as_ptr(data->get_mapped_data()) + sizeof(mat4), &view, sizeof(mat4)); } -void camera::update_view(milliseconds delta_, gamepad const& pad) { +void camera::update_view(delta dt, gamepad const& pad) { if (type != camera_type::first_person) return; - auto delta = to_r32(to_sec(delta_)); - const r32 dead_zone = 0.2f; const r32 range = 1.f - dead_zone; @@ -122,8 +118,8 @@ void camera::update_view(milliseconds delta_, gamepad const& pad) { front.z = cos(glm::radians(rotation.x)) * cos(glm::radians(rotation.y)); front = glm::normalize(front); - auto movement_factor = delta * movement_speed * 2.f; - auto rotation_factor = delta * rotation_speed * 2.5f; + auto movement_factor = dt * movement_speed * 2.f; + auto rotation_factor = dt * rotation_speed * 2.5f; // move diff --git a/liblava/app/camera.hpp b/liblava/app/camera.hpp index 16d21c69..b7a3034b 100644 --- a/liblava/app/camera.hpp +++ b/liblava/app/camera.hpp @@ -24,8 +24,8 @@ struct camera : id_obj { void destroy(); void update_projection(); - void update_view(milliseconds delta, mouse_position mouse_pos); - void update_view(milliseconds delta, gamepad const& pad); + void update_view(delta dt, mouse_position mouse_pos); + void update_view(delta dt, gamepad const& pad); bool handle(key_event::ref event); bool handle(mouse_button_event::ref event, mouse_position mouse_pos); diff --git a/liblava/core/time.hpp b/liblava/core/time.hpp index 4b857f84..0a9096c4 100644 --- a/liblava/core/time.hpp +++ b/liblava/core/time.hpp @@ -19,8 +19,10 @@ using clock = std::chrono::high_resolution_clock; using time_point = clock::time_point; using duration = clock::duration; -inline r64 to_sec(milliseconds ms) { return ms.count() / 1000.0; } -inline milliseconds to_ms(r64 sec) { return milliseconds(to_i32(sec * 1000.0)); } +inline delta to_dt(milliseconds ms) { return ms.count() / 1000.f; } +inline r64 to_sec(milliseconds ms) { return ms.count() / 1000.; } +inline milliseconds to_ms(delta dt) { return milliseconds(to_i32(dt * 1000.f)); } +inline milliseconds to_ms(r64 sec) { return milliseconds(to_i32(sec * 1000.)); } struct timer { diff --git a/liblava/core/types.hpp b/liblava/core/types.hpp index b2db4166..b5f0db3a 100644 --- a/liblava/core/types.hpp +++ b/liblava/core/types.hpp @@ -64,6 +64,7 @@ using uchar = unsigned char; using r32 = float; using r64 = double; using real = r64; +using delta = r32; using type = ui32; constexpr type const no_type = 0xffffffff; -- GitLab