forked from Mirrorlandia_minetest/digilines
84133a10df
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.
45 lines
1.4 KiB
Lua
45 lines
1.4 KiB
Lua
digiline = {}
|
|
|
|
local modpath = minetest.get_modpath("digilines")
|
|
dofile(modpath .. "/presetrules.lua")
|
|
dofile(modpath .. "/util.lua")
|
|
dofile(modpath .. "/internal.lua")
|
|
dofile(modpath .. "/wires_common.lua")
|
|
dofile(modpath .. "/wire_std.lua")
|
|
|
|
function digiline:receptor_send(pos, rules, channel, msg)
|
|
local checked = {}
|
|
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)
|
|
end
|
|
end
|
|
end
|
|
|
|
minetest.register_craft({
|
|
output = 'digilines:wire_std_00000000 2',
|
|
recipe = {
|
|
{'mesecons_materials:fiber', 'mesecons_materials:fiber', 'mesecons_materials:fiber'},
|
|
{'mesecons_insulated:insulated_off', 'mesecons_insulated:insulated_off', 'default:gold_ingot'},
|
|
{'mesecons_materials:fiber', 'mesecons_materials:fiber', 'mesecons_materials:fiber'},
|
|
}
|
|
})
|
|
|
|
-- former submods
|
|
if minetest.is_yes(minetest.setting_get("digilines_enable_inventory") or true) then
|
|
dofile(modpath .. "/inventory.lua")
|
|
end
|
|
|
|
if minetest.is_yes(minetest.setting_get("digilines_enable_lcd") or true) then
|
|
dofile(modpath .. "/lcd.lua")
|
|
end
|
|
|
|
if minetest.is_yes(minetest.setting_get("digilines_enable_lightsensor") or true) then
|
|
dofile(modpath .. "/lightsensor.lua")
|
|
end
|
|
|
|
if minetest.is_yes(minetest.setting_get("digilines_enable_rtc") or true) then
|
|
dofile(modpath .. "/rtc.lua")
|
|
end
|