Use minetest.hash_node_position for searches.

Previously, Digilines used concatenations of X/Y/Z coordinates into
strings as keys to check for repeatedly visiting the same node during a
graph search. Replace them with integer keys generated by
`minetest.hash_node_position`, which should be more efficient.
This commit is contained in:
Christopher Head
2017-02-19 15:15:00 -08:00
committed by Auke Kok
parent 25ea72270d
commit 84133a10df
2 changed files with 2 additions and 2 deletions

View File

@ -9,7 +9,7 @@ dofile(modpath .. "/wire_std.lua")
function digiline:receptor_send(pos, rules, channel, msg)
local checked = {}
checked[tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z)] = true -- exclude itself
checked[minetest.hash_node_position(pos)] = true -- exclude itself
for _,rule in ipairs(rules) do
if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then
digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked)