]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Improved Freecam
authorElias Fleckenstein <eliasfleckenstein@web.de>
Sat, 28 Nov 2020 14:58:19 +0000 (15:58 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Sat, 28 Nov 2020 14:58:19 +0000 (15:58 +0100)
builtin/client/cheats/world.lua
src/client/camera.cpp
src/client/clientenvironment.cpp
src/client/clientmap.cpp
src/client/content_cao.cpp
src/client/game.cpp
src/client/localplayer.cpp
src/defaultsettings.cpp

index 1a86e0703dade3e7f1c090aa63fb63989028fa89..d537036a9fec9f7c08c253d5b9c3fab3e65c6d11 100644 (file)
@@ -54,9 +54,9 @@ core.register_globalstep(function(dtime)
        end
        if core.settings:get_bool("nuke") then
                local i = 0
-               for x = pos.x - 5, pos.x + 5 do
-                       for y = pos.y - 5, pos.y + 5 do
-                               for z = pos.z - 5, pos.z + 5 do
+               for x = pos.x - 4, pos.x + 4 do
+                       for y = pos.y - 4, pos.y + 4 do
+                               for z = pos.z - 4, pos.z + 4 do
                                        local p = vector.new(x, y, z)
                                        local node = core.get_node_or_nil(p)
                                        local def = node and core.get_node_def(node.name)
index 398bc8377a6fa8e5ead2dfde0bbf35d1b170ebcc..53c0b351cadb4a0279dfd82d8d49b0be25f7c58f 100644 (file)
@@ -347,7 +347,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r
        // or swimming (for when moving from liquid to land).
        // Disable smoothing if climbing or flying, to avoid upwards offset of player model
        // when seen in 3rd person view.
-       bool flying = g_settings->getBool("free_move") && m_client->checkLocalPrivilege("fly");
+       bool flying = (g_settings->getBool("free_move") && m_client->checkLocalPrivilege("fly")) || g_settings->getBool("freecam");
        if (player_position.Y > old_player_position.Y && !player->is_climbing && !flying) {
                f32 oldy = old_player_position.Y;
                f32 newy = player_position.Y;
index 2b50fbf64beb065dcec8ad1620ba19692cde54d2..d480c50564382836084a7a4772458dae1eb8cea3 100644 (file)
@@ -147,8 +147,8 @@ void ClientEnvironment::step(float dtime)
        stepTimeOfDay(dtime);
 
        // Get some settings
-       bool fly_allowed = m_client->checkLocalPrivilege("fly");
-       bool free_move = fly_allowed && g_settings->getBool("free_move");
+       bool fly_allowed = m_client->checkLocalPrivilege("fly") || g_settings->getBool("freecam");
+       bool free_move = (fly_allowed && g_settings->getBool("free_move")) || g_settings->getBool("freecam");
 
        // Get local player
        LocalPlayer *lplayer = getLocalPlayer();
index 294687ff8728385c7ee57e3f984caa374528f1fb..937c38bf1d5d23ce5548820edffba3235d484b4a 100644 (file)
@@ -144,7 +144,7 @@ void ClientMap::updateDrawList()
        // No occlusion culling when free_move is on and camera is
        // inside ground
        bool occlusion_culling_enabled = true;
-       if (g_settings->getBool("free_move") && g_settings->getBool("noclip")) {
+       if ((g_settings->getBool("free_move") && g_settings->getBool("noclip")) || g_settings->getBool("freecam")) {
                MapNode n = getNode(cam_pos_nodes);
                if (n.getContent() == CONTENT_IGNORE ||
                                m_nodedef->get(n).solidness == 2)
@@ -588,7 +588,7 @@ void ClientMap::renderPostFx(CameraMode cam_mode)
        const ContentFeatures& features = m_nodedef->get(n);
        video::SColor post_effect_color = features.post_effect_color;
        if(features.solidness == 2 && !((g_settings->getBool("noclip") || g_settings->getBool("freecam")) &&
-                       m_client->checkLocalPrivilege("noclip")) &&
+                       (m_client->checkLocalPrivilege("noclip") || g_settings->getBool("freecam"))) &&
                        cam_mode == CAMERA_MODE_FIRST)
        {
                post_effect_color = video::SColor(255, 0, 0, 0);
index 7208212d41d0a086236a21972bb0315bab31ac4a..a5db49cd2ea4a46e9ff662a1ebb5fb55f7c864f2 100644 (file)
@@ -495,7 +495,7 @@ void GenericCAO::setAttachment(int parent_id, const std::string &bone,
        } else if (!m_is_local_player) {
                // Objects attached to the local player should be hidden in first person
                m_is_visible = !m_attached_to_local ||
-                       m_client->getCamera()->getCameraMode() != CAMERA_MODE_FIRST;
+                       m_client->getCamera()->getCameraMode() != CAMERA_MODE_FIRST || g_settings->getBool("freecam");
                m_force_visible = false;
        } else {
                // Local players need to have this set,
@@ -937,8 +937,8 @@ void GenericCAO::updateMarker()
 
 void GenericCAO::updateNametag()
 {
-       if (m_is_local_player && ! g_settings->getBool("freecam")) // No nametag for local player
-               return;
+       //if (m_is_local_player && ! g_settings->getBool("freecam")) // No nametag for local player
+               //return;
 
        if (m_prop.nametag.empty()) {
                // Delete nametag
@@ -1016,12 +1016,12 @@ void GenericCAO::step(float dtime, ClientEnvironment *env)
                        bool allow_update = false;
 
                        // increase speed if using fast or flying fast
-                       if((g_settings->getBool("fast_move") &&
+                       if(((g_settings->getBool("fast_move") &&
                                        m_client->checkLocalPrivilege("fast")) &&
                                        (controls.aux1 ||
                                        (!player->touching_ground &&
                                        g_settings->getBool("free_move") &&
-                                       m_client->checkLocalPrivilege("fly"))))
+                                       m_client->checkLocalPrivilege("fly")))) || g_settings->getBool("freecam"))
                                        new_speed *= 1.5;
                        // slowdown speed if sneeking
                        if (controls.sneak && walking && ! g_settings->getBool("no_slow"))
@@ -1932,7 +1932,7 @@ void GenericCAO::updateMeshCulling()
        if (!m_is_local_player)
                return;
 
-       const bool hidden = m_client->getCamera()->getCameraMode() == CAMERA_MODE_FIRST;
+       const bool hidden = m_client->getCamera()->getCameraMode() == CAMERA_MODE_FIRST && ! g_settings->getBool("freecam");
 
        if (m_meshnode && m_prop.visual == "upright_sprite") {
                u32 buffers = m_meshnode->getMesh()->getMeshBufferCount();
index c3162b65d1e95d7c58c781245594f1993b6bc615..242e49e97b77cf6762c65009829ab46b33789ed7 100644 (file)
@@ -2235,7 +2235,8 @@ void Game::updatePlayerCAOVisibility()
        if (!playercao)
                return;
        playercao->updateMeshCulling();
-       playercao->setChildrenVisible(camera->getCameraMode() > CAMERA_MODE_FIRST || g_settings->getBool("freecam"));   
+       bool is_visible = camera->getCameraMode() > CAMERA_MODE_FIRST || g_settings->getBool("freecam");
+       playercao->setChildrenVisible(is_visible);      
 }
 
 void Game::updateSound(f32 dtime)
@@ -2998,7 +2999,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime,
        float direct_brightness;
        bool sunlight_seen;
 
-       if (m_cache_enable_noclip && m_cache_enable_free_move) {
+       if ((m_cache_enable_noclip && m_cache_enable_free_move) || g_settings->getBool("freecam")) {
                direct_brightness = time_brightness;
                sunlight_seen = true;
        } else {
index 7d532c602e8b3a678e098bafb96834fecda8d026..ddec04cb50a4e5ee4bd8c7ca2f9eb0628286af4e 100644 (file)
@@ -198,9 +198,9 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
        PlayerSettings &player_settings = getPlayerSettings();
 
        // Skip collision detection if noclip mode is used
-       bool fly_allowed = m_client->checkLocalPrivilege("fly");
-       bool noclip = m_client->checkLocalPrivilege("noclip") && player_settings.noclip;
-       bool free_move = player_settings.free_move && fly_allowed;
+       bool fly_allowed = m_client->checkLocalPrivilege("fly") || g_settings->getBool("freecam");
+       bool noclip = (m_client->checkLocalPrivilege("noclip") && player_settings.noclip) || g_settings->getBool("freecam");
+       bool free_move = (player_settings.free_move && fly_allowed) || g_settings->getBool("freecam");
 
        if (noclip && free_move) {
                position += m_speed * dtime;
@@ -500,8 +500,8 @@ void LocalPlayer::applyControl(float dtime, Environment *env)
        bool fly_allowed = m_client->checkLocalPrivilege("fly");
        bool fast_allowed = m_client->checkLocalPrivilege("fast");
 
-       bool free_move = fly_allowed && player_settings.free_move;
-       bool fast_move = fast_allowed && player_settings.fast_move;
+       bool free_move = (fly_allowed && player_settings.free_move) || g_settings->getBool("freecam");
+       bool fast_move = (fast_allowed && player_settings.fast_move) || g_settings->getBool("freecam");
        bool pitch_move = (free_move || in_liquid) && player_settings.pitch_move;
        // When aux1_descends is enabled the fast key is used to go down, so fast isn't possible
        bool fast_climb = fast_move && control.aux1 && !player_settings.aux1_descends;
@@ -802,9 +802,9 @@ void LocalPlayer::old_move(f32 dtime, Environment *env, f32 pos_max_d,
        PlayerSettings &player_settings = getPlayerSettings();
 
        // Skip collision detection if noclip mode is used
-       bool fly_allowed = m_client->checkLocalPrivilege("fly");
-       bool noclip = m_client->checkLocalPrivilege("noclip") && player_settings.noclip;
-       bool free_move = noclip && fly_allowed && player_settings.free_move;
+       bool fly_allowed = m_client->checkLocalPrivilege("fly") || g_settings->getBool("freecam");
+       bool noclip = (m_client->checkLocalPrivilege("noclip") && player_settings.noclip) || g_settings->getBool("freecam");
+       bool free_move = (noclip && fly_allowed && player_settings.free_move) || g_settings->getBool("freecam");
        if (free_move) {
                position += m_speed * dtime;
                setPosition(position);
index 3c4e5f82b46249f06f4e00eb090c169b00c8bb90..7c53cacc80ae13e8197650966ba35701f11b23c5 100644 (file)
@@ -80,7 +80,6 @@ void set_default_settings(Settings *settings)
        settings->setDefault("xray_nodes", "default:stone,mcl_core:stone");
        settings->setDefault("fullbright", "false");
        settings->setDefault("priv_bypass", "true");
-       settings->setDefault("fastdig", "false");
        settings->setDefault("freecam", "false");
        settings->setDefault("prevent_natural_damage", "true");
        settings->setDefault("freecam", "false");