diff options
author | kilbith <kilbith@users.noreply.github.com> | 2017-06-27 11:26:13 +0200 |
---|---|---|
committer | Loïc Blot <loic.blot@unix-experience.fr> | 2017-06-27 11:26:37 +0200 |
commit | 48cd217e3b6f53af32802c1897ddd1914d215078 (patch) | |
tree | 6ebfa3e34c4134e0f3f3f5b180013202409adda1 /src | |
parent | 53a6b5439eac140bbbe76441a4d6a02590fadb2f (diff) | |
download | minetest-48cd217e3b6f53af32802c1897ddd1914d215078.tar.gz minetest-48cd217e3b6f53af32802c1897ddd1914d215078.tar.bz2 minetest-48cd217e3b6f53af32802c1897ddd1914d215078.zip |
Fix arm inertia limit case
Diffstat (limited to 'src')
-rw-r--r-- | src/camera.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/camera.cpp b/src/camera.cpp index 855bca3ad..2de76da19 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -197,13 +197,17 @@ void Camera::step(f32 dtime) void Camera::addArmInertia(f32 player_yaw, f32 frametime) { - if (m_timer.X == 0.0f) - m_cam_vel.X = std::fabs((m_last_cam_pos.X - player_yaw)) * 0.01f; + if (m_timer.X == 0.0f) { + // In the limit case where timer is 0 set a static velocity (generic case divide by zero) + m_cam_vel.X = 1.0001f; + } else m_cam_vel.X = std::fabs((m_last_cam_pos.X - player_yaw) / m_timer.X) * 0.01f; - if (m_timer.Y == 0.0f) - m_cam_vel.Y = std::fabs(m_last_cam_pos.Y - m_camera_direction.Y); + if (m_timer.Y == 0.0f) { + // In the limit case where timer is 0 set a static velocity (generic case divide by zero) + m_cam_vel.Y = 1.0001f; + } else m_cam_vel.Y = std::fabs((m_last_cam_pos.Y - m_camera_direction.Y) / m_timer.Y); |