Modernize client code (#6250)
[oweals/minetest.git] / src / camera.cpp
index 35aaeaad4ef4059d586de477633d141f69527540..7406aba0323533402b7ddf46009a84e6912e0244 100644 (file)
@@ -215,7 +215,8 @@ static inline v2f dir(const v2f &pos_dist)
 
 void Camera::addArmInertia(f32 player_yaw)
 {
-       m_cam_vel.X = std::fabs((m_last_cam_pos.X - player_yaw) / 0.016f) * 0.01f;
+       m_cam_vel.X = std::fabs(rangelim(m_last_cam_pos.X - player_yaw,
+               -100.0f, 100.0f) / 0.016f) * 0.01f;
        m_cam_vel.Y = std::fabs((m_last_cam_pos.Y - m_camera_direction.Y) / 0.016f);
        f32 gap_X = std::fabs(WIELDMESH_OFFSET_X - m_wieldmesh_offset.X);
        f32 gap_Y = std::fabs(WIELDMESH_OFFSET_Y - m_wieldmesh_offset.Y);
@@ -525,7 +526,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
        // If the player is walking, swimming, or climbing,
        // view bobbing is enabled and free_move is off,
        // start (or continue) the view bobbing animation.
-       v3f speed = player->getSpeed();
+       const v3f &speed = player->getSpeed();
        const bool movement_XZ = hypot(speed.X, speed.Z) > BS;
        const bool movement_Y = fabs(speed.Y) > BS;
 
@@ -616,7 +617,7 @@ void Camera::drawNametags()
                        // shadow can remain.
                        continue;
                }
-               v3f pos = nametag->parent_node->getAbsolutePosition() + v3f(0.0, 1.1 * BS, 0.0);
+               v3f pos = nametag->parent_node->getAbsolutePosition() + nametag->nametag_pos * BS;
                f32 transformed_pos[4] = { pos.X, pos.Y, pos.Z, 1.0f };
                trans.multiplyWith1x4Matrix(transformed_pos);
                if (transformed_pos[3] > 0) {
@@ -640,9 +641,10 @@ void Camera::drawNametags()
 }
 
 Nametag *Camera::addNametag(scene::ISceneNode *parent_node,
-               std::string nametag_text, video::SColor nametag_color)
+               const std::string &nametag_text, video::SColor nametag_color,
+               const v3f &pos)
 {
-       Nametag *nametag = new Nametag(parent_node, nametag_text, nametag_color);
+       Nametag *nametag = new Nametag(parent_node, nametag_text, nametag_color, pos);
        m_nametags.push_back(nametag);
        return nametag;
 }