From: kilbith Date: Tue, 27 Jun 2017 09:26:13 +0000 (+0200) Subject: Fix arm inertia limit case X-Git-Tag: 5.0.0~1052 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=48cd217e3b6f53af32802c1897ddd1914d215078;p=oweals%2Fminetest.git Fix arm inertia limit case --- 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);