mirror of
https://github.com/minetest-mods/digilines.git
synced 2024-12-25 02:00:19 +01:00
Performance improvement when transmitting
The 'checked' table is passed by reference anyway, so reassigning it at every step along the network is just wasting time by creating more and more copies of it.
This commit is contained in:
parent
78d67f00a6
commit
6876aa6a4f
@ -66,9 +66,8 @@ function digiline:rules_link_anydir(output, input)
|
||||
end
|
||||
|
||||
function digiline:transmit(pos, channel, msg, checked)
|
||||
checked = checked or {}
|
||||
local checkedid = tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z)
|
||||
if checked[checkedid] then return checked end
|
||||
if checked[checkedid] then return end
|
||||
checked[checkedid] = true
|
||||
|
||||
local node = minetest.env:get_node(pos)
|
||||
@ -86,9 +85,9 @@ function digiline:transmit(pos, channel, msg, checked)
|
||||
local rules = digiline:importrules(spec.wire.rules, node)
|
||||
for _,rule in ipairs(rules) do
|
||||
if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then
|
||||
checked = digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked)
|
||||
digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked)
|
||||
end
|
||||
end
|
||||
end
|
||||
return checked
|
||||
return
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user