diff --git a/mods/lzr_laser/physics.lua b/mods/lzr_laser/physics.lua index 930faf9..b0a3319 100644 --- a/mods/lzr_laser/physics.lua +++ b/mods/lzr_laser/physics.lua @@ -111,3 +111,9 @@ function lzr_laser.emit_lasers_in_area(pos1, pos2) end end end + +-- Completely recalculate all lasers +function lzr_laser.full_laser_update(pos1, pos2) + lzr_laser.clear_lasers_in_area(pos1, pos2) + lzr_laser.emit_lasers_in_area(pos1, pos2) +end diff --git a/mods/lzr_laser/tools.lua b/mods/lzr_laser/tools.lua index 1ffb591..0b2c084 100644 --- a/mods/lzr_laser/tools.lua +++ b/mods/lzr_laser/tools.lua @@ -18,13 +18,11 @@ minetest.register_tool("lzr_laser:emit_toggler", { -- Deactivate emitter if def._lzr_inactive then minetest.swap_node(pos, {name=def._lzr_inactive, param2=node.param2}) - lzr_laser.clear_lasers_in_area(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) - lzr_laser.emit_lasers_in_area(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) + lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) -- Activate emitter elseif def._lzr_active then minetest.swap_node(pos, {name=def._lzr_active, param2=node.param2}) - lzr_laser.clear_lasers_in_area(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) - lzr_laser.emit_lasers_in_area(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) + lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) end return itemstack end,