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.
This commit is contained in:
Nils Dagsson Moskopp 2021-07-04 03:25:05 +02:00
parent 00ee2d5013
commit 275f0826ed
No known key found for this signature in database
GPG Key ID: A3BC671C35191080
1 changed files with 8 additions and 4 deletions

View File

@ -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