From 275f0826edda9316182d065222b4a0b1762f8673 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sun, 4 Jul 2021 03:25:05 +0200 Subject: [PATCH] Send FOV packets only when necessary Before this change, about 10 to 30 FOV packets were sent from the server to each connected client each second. This patch only sends FOV packets when the FOV actually needs to be changed, i.e. when the player starts or stops sprinting. --- mods/PLAYER/mcl_sprint/init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 2ef5be68..0cc2ff89 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -45,15 +45,19 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player local player = minetest.get_player_by_name(playerName) if players[playerName] then players[playerName].sprinting = sprinting + local fov_old = players[playerName].fov + local fov_new if sprinting == true then - players[playerName].fov = math.min(players[playerName].fov + 0.05, 1.2) - player:set_fov(players[playerName].fov, true, 0.15) + fov_new = math.min(players[playerName].fov + 0.05, 1.2) playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED) elseif sprinting == false then - players[playerName].fov = math.max(players[playerName].fov - 0.05, 1.0) - player:set_fov(players[playerName].fov, true, 0.15) + fov_new = math.max(players[playerName].fov - 0.05, 1.0) playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint") end + if fov_new ~= fov_old then + players[playerName].fov = fov_new + player:set_fov(fov_new, true, 0.15) + end return true end return false