forked from Mirrorlandia_minetest/digilines
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
|
end
|
||||||
|
|
||||||
function digiline:transmit(pos, channel, msg, checked)
|
function digiline:transmit(pos, channel, msg, checked)
|
||||||
checked = checked or {}
|
|
||||||
local checkedid = tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z)
|
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
|
checked[checkedid] = true
|
||||||
|
|
||||||
local node = minetest.env:get_node(pos)
|
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)
|
local rules = digiline:importrules(spec.wire.rules, node)
|
||||||
for _,rule in ipairs(rules) do
|
for _,rule in ipairs(rules) do
|
||||||
if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then
|
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
|
end
|
||||||
end
|
end
|
||||||
return checked
|
return
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user