mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-22 18:41:09 +01:00
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:
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local player_timers = {}
|
||||||
|
|
||||||
-- This is a dtime timer than can be used in on_step functions so it works every x seconds
|
-- 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
|
-- 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.
|
-- 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.
|
-- 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 self or not threshold or not dtime then return end
|
||||||
if not timer_name or timer_name == "" 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
|
if not self._timers then
|
||||||
self._timers = {}
|
self._timers = {}
|
||||||
end
|
end
|
||||||
|
|
|
@ -272,17 +272,20 @@ minetest.register_globalstep(function(dtime)
|
||||||
if vector.length(player_velocity) < 40 then
|
if vector.length(player_velocity) < 40 then
|
||||||
-- player:add_velocity(vector.multiply(player:get_look_dir(), 4))
|
-- player:add_velocity(vector.multiply(player:get_look_dir(), 4))
|
||||||
speed_mult = elytra_vars.rocket_speed
|
speed_mult = elytra_vars.rocket_speed
|
||||||
add_particle({
|
|
||||||
pos = fly_pos,
|
if mcl_util.check_dtime_timer(name, dtime, "ely_rocket_particle_spawn", 0.3) then
|
||||||
velocity = {x = 0, y = 0, z = 0},
|
add_particle({
|
||||||
acceleration = {x = 0, y = 0, z = 0},
|
pos = fly_pos,
|
||||||
expirationtime = math.random(0.3, 0.5),
|
velocity = vector.zero(),
|
||||||
size = math.random(1, 2),
|
acceleration = vector.zero(),
|
||||||
collisiondetection = false,
|
expirationtime = math.random(0.3, 0.5),
|
||||||
vertical = false,
|
size = math.random(1, 2),
|
||||||
texture = "mcl_particles_bonemeal.png^[colorize:#bc7a57:127",
|
collisiondetection = false,
|
||||||
glow = 5,
|
vertical = false,
|
||||||
})
|
texture = "mcl_particles_bonemeal.png^[colorize:#bc7a57:127",
|
||||||
|
glow = 5,
|
||||||
|
})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue