Merge pull request 'Reduce network activity for elytra flying rocket particles' (#3702) from optimisations_ely into master

Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/3702
This commit is contained in:
ancientmarinerdev 2023-05-11 17:33:47 +00:00
commit 0185609b01
2 changed files with 25 additions and 12 deletions

@ -34,8 +34,10 @@ function mcl_util.mcl_log(message, module, bypass_default_logger)
end
end
local player_timers = {}
-- This is a dtime timer than can be used in on_step functions so it works every x seconds
-- self - Object you want to store timer data on. E.g. mob or a minecart
-- self - Object you want to store timer data on. E.g. mob or a minecart, or player_name
-- dtime - The time since last run of on_step, should be passed in to function
-- timer_name - This is the name of the timer and also the key to store the data. No spaces + lowercase.
-- threshold - The time before it returns successful. 0.2 if you want to run it 5 times a second.
@ -43,6 +45,14 @@ function mcl_util.check_dtime_timer(self, dtime, timer_name, threshold)
if not self or not threshold or not dtime then return end
if not timer_name or timer_name == "" then return end
if type(self) == "string" then
local player_name = self
if not player_timers[player_name] then
player_timers[player_name] = {}
end
self = player_timers[player_name]
end
if not self._timers then
self._timers = {}
end

@ -272,17 +272,20 @@ minetest.register_globalstep(function(dtime)
if vector.length(player_velocity) < 40 then
-- player:add_velocity(vector.multiply(player:get_look_dir(), 4))
speed_mult = elytra_vars.rocket_speed
add_particle({
pos = fly_pos,
velocity = {x = 0, y = 0, z = 0},
acceleration = {x = 0, y = 0, z = 0},
expirationtime = math.random(0.3, 0.5),
size = math.random(1, 2),
collisiondetection = false,
vertical = false,
texture = "mcl_particles_bonemeal.png^[colorize:#bc7a57:127",
glow = 5,
})
if mcl_util.check_dtime_timer(name, dtime, "ely_rocket_particle_spawn", 0.3) then
add_particle({
pos = fly_pos,
velocity = vector.zero(),
acceleration = vector.zero(),
expirationtime = math.random(0.3, 0.5),
size = math.random(1, 2),
collisiondetection = false,
vertical = false,
texture = "mcl_particles_bonemeal.png^[colorize:#bc7a57:127",
glow = 5,
})
end
end
end