forked from Mineclonia/Mineclonia
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:
parent
00ee2d5013
commit
275f0826ed
|
@ -45,15 +45,19 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player
|
||||||
local player = minetest.get_player_by_name(playerName)
|
local player = minetest.get_player_by_name(playerName)
|
||||||
if players[playerName] then
|
if players[playerName] then
|
||||||
players[playerName].sprinting = sprinting
|
players[playerName].sprinting = sprinting
|
||||||
|
local fov_old = players[playerName].fov
|
||||||
|
local fov_new
|
||||||
if sprinting == true then
|
if sprinting == true then
|
||||||
players[playerName].fov = math.min(players[playerName].fov + 0.05, 1.2)
|
fov_new = math.min(players[playerName].fov + 0.05, 1.2)
|
||||||
player:set_fov(players[playerName].fov, true, 0.15)
|
|
||||||
playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED)
|
playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED)
|
||||||
elseif sprinting == false then
|
elseif sprinting == false then
|
||||||
players[playerName].fov = math.max(players[playerName].fov - 0.05, 1.0)
|
fov_new = math.max(players[playerName].fov - 0.05, 1.0)
|
||||||
player:set_fov(players[playerName].fov, true, 0.15)
|
|
||||||
playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint")
|
playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint")
|
||||||
end
|
end
|
||||||
|
if fov_new ~= fov_old then
|
||||||
|
players[playerName].fov = fov_new
|
||||||
|
player:set_fov(fov_new, true, 0.15)
|
||||||
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
|
Loading…
Reference in New Issue