]> git.lizzy.rs Git - minetest.git/blobdiff - src/camera.cpp
Fix naming conventions of noise userdata
[minetest.git] / src / camera.cpp
index b7aed5d748fda67dc330d4d40f8194f4af7189d9..a64b903aea136528352d5b6f1358d2fecbd3b4b6 100644 (file)
@@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "noise.h"         // easeCurve
 #include "sound.h"
 #include "event.h"
-#include "profiler.h"
+#include "nodedef.h"
 #include "util/numeric.h"
 #include "constants.h"
 #include "fontengine.h"
@@ -72,8 +72,7 @@ Camera::Camera(MapDrawControl &draw_control, Client *client):
        m_cache_fall_bobbing_amount = g_settings->getFloat("fall_bobbing_amount");
        m_cache_view_bobbing_amount = g_settings->getFloat("view_bobbing_amount");
        m_cache_fov                 = g_settings->getFloat("fov");
-       m_cache_zoom_fov            = g_settings->getFloat("zoom_fov");
-       m_arm_inertia               = g_settings->getBool("arm_inertia");
+       m_arm_inertia               = g_settings->getBool("arm_inertia");
        m_nametags.clear();
 }
 
@@ -453,12 +452,13 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r
 
        // Get FOV
        f32 fov_degrees;
-       if (player->getPlayerControl().zoom && m_client->checkLocalPrivilege("zoom")) {
-               fov_degrees = m_cache_zoom_fov;
+       // Disable zoom with zoom FOV = 0
+       if (player->getPlayerControl().zoom && player->getZoomFOV() > 0.001f) {
+               fov_degrees = player->getZoomFOV();
        } else {
                fov_degrees = m_cache_fov;
        }
-       fov_degrees = rangelim(fov_degrees, 7.0, 160.0);
+       fov_degrees = rangelim(fov_degrees, 1.0f, 160.0f);
 
        // FOV and aspect ratio
        const v2u32 &window_size = RenderingEngine::get_instance()->getWindowSize();
@@ -549,7 +549,10 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r
 void Camera::updateViewingRange()
 {
        f32 viewing_range = g_settings->getFloat("viewing_range");
-       m_draw_control.wanted_range = viewing_range;
+       f32 near_plane = g_settings->getFloat("near_plane");
+
+       m_draw_control.wanted_range = std::fmin(adjustDist(viewing_range, getFovMax()), 4000);
+       m_cameranode->setNearValue(rangelim(near_plane, 0.0f, 0.5f) * BS);
        if (m_draw_control.range_all) {
                m_cameranode->setFarValue(100000.0);
                return;
@@ -620,10 +623,11 @@ void Camera::drawNametags()
                f32 transformed_pos[4] = { pos.X, pos.Y, pos.Z, 1.0f };
                trans.multiplyWith1x4Matrix(transformed_pos);
                if (transformed_pos[3] > 0) {
-                       std::string nametag_colorless = unescape_enriched(nametag->nametag_text);
+                       std::wstring nametag_colorless =
+                               unescape_translate(utf8_to_wide(nametag->nametag_text));
                        core::dimension2d<u32> textsize =
                                g_fontengine->getFont()->getDimension(
-                               utf8_to_wide(nametag_colorless).c_str());
+                               nametag_colorless.c_str());
                        f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f :
                                core::reciprocal(transformed_pos[3]);
                        v2u32 screensize = RenderingEngine::get_video_driver()->getScreenSize();
@@ -633,8 +637,9 @@ void Camera::drawNametags()
                        screen_pos.Y = screensize.Y *
                                (0.5 - transformed_pos[1] * zDiv * 0.5) - textsize.Height / 2;
                        core::rect<s32> size(0, 0, textsize.Width, textsize.Height);
-                       g_fontengine->getFont()->draw(utf8_to_wide(nametag->nametag_text).c_str(),
-                                       size + screen_pos, nametag->nametag_color);
+                       g_fontengine->getFont()->draw(
+                               translate_string(utf8_to_wide(nametag->nametag_text)).c_str(),
+                               size + screen_pos, nametag->nametag_color);
                }
        }
 }