]> git.lizzy.rs Git - minetest.git/blobdiff - src/camera.cpp
(Re)spawn players within 'mapgen_limit'
[minetest.git] / src / camera.cpp
index 7e83dadebf949ef6010a24f197df51a493e373e4..52a42a3a9e6bbb1d8c867c77de953b99d7a7c01f 100644 (file)
@@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "util/numeric.h"
 #include "constants.h"
 #include "fontengine.h"
+#include "script/scripting_client.h"
 
 #define CAMERA_OFFSET_STEP 200
 
@@ -102,7 +103,6 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
        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_cache_view_bobbing        = g_settings->getBool("view_bobbing");
        m_nametags.clear();
 }
 
@@ -126,6 +126,10 @@ bool Camera::successfullyCreated(std::string &error_message)
        } else {
                error_message.clear();
        }
+       
+       if (g_settings->getBool("enable_client_modding")) {
+               m_client->getScript()->on_camera_ready(this);
+       }
        return error_message.empty();
 }
 
@@ -280,8 +284,8 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
        v3f rel_cam_target = v3f(0,0,1);
        v3f rel_cam_up = v3f(0,1,0);
 
-       if (m_view_bobbing_anim != 0 && m_camera_mode < CAMERA_MODE_THIRD)
-       {
+       if (m_cache_view_bobbing_amount != 0.0f && m_view_bobbing_anim != 0.0f &&
+               m_camera_mode < CAMERA_MODE_THIRD) {
                f32 bobfrac = my_modf(m_view_bobbing_anim * 2);
                f32 bobdir = (m_view_bobbing_anim < 0.5) ? 1.0 : -1.0;
 
@@ -467,9 +471,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
        const bool swimming = (movement_XZ || player->swimming_vertical) && player->in_liquid;
        const bool climbing = movement_Y && player->is_climbing;
        if ((walking || swimming || climbing) &&
-                       m_cache_view_bobbing &&
-                       (!g_settings->getBool("free_move") || !m_client->checkLocalPrivilege("fly")))
-       {
+                       (!g_settings->getBool("free_move") || !m_client->checkLocalPrivilege("fly"))) {
                // Start animation
                m_view_bobbing_state = 1;
                m_view_bobbing_speed = MYMIN(speed.getLength(), 70);
@@ -556,9 +558,10 @@ 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);
                        core::dimension2d<u32> textsize =
                                g_fontengine->getFont()->getDimension(
-                               utf8_to_wide(nametag->nametag_text).c_str());
+                               utf8_to_wide(nametag_colorless).c_str());
                        f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f :
                                core::reciprocal(transformed_pos[3]);
                        v2u32 screensize = m_driver->getScreenSize();