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