Fix arm inertia limit case
authorkilbith <kilbith@users.noreply.github.com>
Tue, 27 Jun 2017 09:26:13 +0000 (11:26 +0200)
committerLoïc Blot <loic.blot@unix-experience.fr>
Tue, 27 Jun 2017 09:26:37 +0000 (11:26 +0200)
src/camera.cpp

index 855bca3adb6fff5b5687f2a8c45896abb9633615..2de76da193e49871d6977418d9f54917da24eed3 100644 (file)
@@ -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);