From 809192f353af2faeb779df85104d4d7ed8d8943d Mon Sep 17 00:00:00 2001 From: Jeija Date: Sun, 14 Feb 2016 20:55:50 +0100 Subject: Use vector helper functions instead of old builtin cmpPos and addPosRule functions --- mesecons/actionqueue.lua | 2 +- mesecons/init.lua | 8 ++++---- mesecons/internal.lua | 24 ++++++++++++------------ mesecons/services.lua | 2 +- mesecons/util.lua | 14 +++----------- mesecons/wires.lua | 6 +++--- 6 files changed, 24 insertions(+), 32 deletions(-) (limited to 'mesecons') diff --git a/mesecons/actionqueue.lua b/mesecons/actionqueue.lua index fa4079f..a773008 100644 --- a/mesecons/actionqueue.lua +++ b/mesecons/actionqueue.lua @@ -23,7 +23,7 @@ function mesecon.queue:add_action(pos, func, params, time, overwritecheck, prior -- Otherwise, add the action to the queue if overwritecheck then -- check if old action has to be overwritten / removed: for i, ac in ipairs(mesecon.queue.actions) do - if(mesecon.cmpPos(pos, ac.pos) + if(vector.equals(pos, ac.pos) and mesecon.cmpAny(overwritecheck, ac.owcheck)) then toremove = i break diff --git a/mesecons/init.lua b/mesecons/init.lua index 8645f03..3ab4f4a 100644 --- a/mesecons/init.lua +++ b/mesecons/init.lua @@ -74,7 +74,7 @@ mesecon.queue:add_function("receptor_on", function (pos, rules) -- if area (any of the rule targets) is not loaded, keep trying and call this again later for _, rule in ipairs(mesecon.flattenrules(rules)) do - local np = mesecon.addPosRule(pos, rule) + local np = vector.add(pos, rule) -- if area is not loaded, keep trying if minetest.get_node_or_nil(np) == nil then mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules) @@ -84,7 +84,7 @@ mesecon.queue:add_function("receptor_on", function (pos, rules) -- execute action for _, rule in ipairs(mesecon.flattenrules(rules)) do - local np = mesecon.addPosRule(pos, rule) + local np = vector.add(pos, rule) local rulenames = mesecon.rules_link_rule_all(pos, rule) for _, rulename in ipairs(rulenames) do mesecon.turnon(np, rulename) @@ -101,7 +101,7 @@ mesecon.queue:add_function("receptor_off", function (pos, rules) -- if area (any of the rule targets) is not loaded, keep trying and call this again later for _, rule in ipairs(mesecon.flattenrules(rules)) do - local np = mesecon.addPosRule(pos, rule) + local np = vector.add(pos, rule) if minetest.get_node_or_nil(np) == nil then mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules) return @@ -109,7 +109,7 @@ mesecon.queue:add_function("receptor_off", function (pos, rules) end for _, rule in ipairs(mesecon.flattenrules(rules)) do - local np = mesecon.addPosRule(pos, rule) + local np = vector.add(pos, rule) local rulenames = mesecon.rules_link_rule_all(pos, rule) for _, rulename in ipairs(rulenames) do if not mesecon.connected_to_receptor(np, mesecon.invertRule(rule)) then diff --git a/mesecons/internal.lua b/mesecons/internal.lua index 741abf1..41c5c52 100644 --- a/mesecons/internal.lua +++ b/mesecons/internal.lua @@ -374,7 +374,7 @@ function mesecon.turnon(pos, link) -- call turnon on neighbors: normal rules for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do - local np = mesecon.addPosRule(f.pos, r) + local np = vector.add(f.pos, r) -- area not loaded, postpone action if not minetest.get_node_or_nil(np) then @@ -420,7 +420,7 @@ function mesecon.turnoff(pos, link) -- call turnoff on neighbors: normal rules for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do - local np = mesecon.addPosRule(f.pos, r) + local np = vector.add(f.pos, r) -- area not loaded, postpone action if not minetest.get_node_or_nil(np) then @@ -458,7 +458,7 @@ function mesecon.connected_to_receptor(pos, link) for _, rule in ipairs(mesecon.rule2meta(link, rules)) do local links = mesecon.rules_link_rule_all_inverted(pos, rule) for _, l in ipairs(links) do - local np = mesecon.addPosRule(pos, l) + local np = vector.add(pos, l) if mesecon.find_receptor_on(np, mesecon.invertRule(l)) then return true end @@ -485,7 +485,7 @@ function mesecon.find_receptor_on(pos, link) -- call turnoff on neighbors: normal rules for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do - local np = mesecon.addPosRule(f.pos, r) + local np = vector.add(f.pos, r) local links = mesecon.rules_link_rule_all_inverted(f.pos, r) for _, l in ipairs(links) do @@ -513,10 +513,10 @@ function mesecon.rules_link(output, input, dug_outputrules) --output/input are p for _, outputrule in ipairs(mesecon.flattenrules(outputrules)) do -- Check if output sends to input - if mesecon.cmpPos(mesecon.addPosRule(output, outputrule), input) then + if vector.equals(vector.add(output, outputrule), input) then for _, inputrule in ipairs(mesecon.flattenrules(inputrules)) do -- Check if input accepts from output - if mesecon.cmpPos(mesecon.addPosRule(input, inputrule), output) then + if vector.equals(vector.add(input, inputrule), output) then return true, inputrule end end @@ -526,7 +526,7 @@ function mesecon.rules_link(output, input, dug_outputrules) --output/input are p end function mesecon.rules_link_rule_all(output, rule) - local input = mesecon.addPosRule(output, rule) + local input = vector.add(output, rule) local inputnode = minetest.get_node(input) local inputrules = mesecon.get_any_inputrules (inputnode) if not inputrules then @@ -536,7 +536,7 @@ function mesecon.rules_link_rule_all(output, rule) for _, inputrule in ipairs(mesecon.flattenrules(inputrules)) do -- Check if input accepts from output - if mesecon.cmpPos(mesecon.addPosRule(input, inputrule), output) then + if vector.equals(vector.add(input, inputrule), output) then table.insert(rules, inputrule) end end @@ -545,7 +545,7 @@ end function mesecon.rules_link_rule_all_inverted(input, rule) --local irule = mesecon.invertRule(rule) - local output = mesecon.addPosRule(input, rule) + local output = vector.add(input, rule) local outputnode = minetest.get_node(output) local outputrules = mesecon.get_any_outputrules (outputnode) if not outputrules then @@ -554,7 +554,7 @@ function mesecon.rules_link_rule_all_inverted(input, rule) local rules = {} for _, outputrule in ipairs(mesecon.flattenrules(outputrules)) do - if mesecon.cmpPos(mesecon.addPosRule(output, outputrule), input) then + if vector.equals(vector.add(output, outputrule), input) then table.insert(rules, mesecon.invertRule(outputrule)) end end @@ -577,7 +577,7 @@ function mesecon.is_powered(pos, rule) for _, rule in ipairs(mesecon.flattenrules(rules)) do local rulenames = mesecon.rules_link_rule_all_inverted(pos, rule) for _, rname in ipairs(rulenames) do - local np = mesecon.addPosRule(pos, rname) + local np = vector.add(pos, rname) local nn = minetest.get_node(np) if (mesecon.is_conductor_on (nn, mesecon.invertRule(rname)) or mesecon.is_receptor_on (nn.name)) then @@ -588,7 +588,7 @@ function mesecon.is_powered(pos, rule) else local rulenames = mesecon.rules_link_rule_all_inverted(pos, rule) for _, rname in ipairs(rulenames) do - local np = mesecon.addPosRule(pos, rname) + local np = vector.add(pos, rname) local nn = minetest.get_node(np) if (mesecon.is_conductor_on (nn, mesecon.invertRule(rname)) or mesecon.is_receptor_on (nn.name)) then diff --git a/mesecons/services.lua b/mesecons/services.lua index 215fb31..5d0f81e 100644 --- a/mesecons/services.lua +++ b/mesecons/services.lua @@ -16,7 +16,7 @@ mesecon.on_placenode = function (pos, node) -- also call receptor_on if itself is powered already, so that neighboring -- conductors will be activated (when pushing an on-conductor with a piston) for _, s in ipairs(sources) do - local rule = {x = pos.x - s.x, y = pos.y - s.y, z = pos.z - s.z} + local rule = vector.subtract(pos, s) mesecon.turnon(pos, rule) end --mesecon.receptor_on (pos, mesecon.conductor_get_rules(node)) diff --git a/mesecons/util.lua b/mesecons/util.lua index dd33f1c..24acfcf 100644 --- a/mesecons/util.lua +++ b/mesecons/util.lua @@ -50,7 +50,7 @@ function mesecon.rule2bit(findrule, allrules) end for m,metarule in ipairs( allrules) do for _, rule in ipairs(metarule ) do - if mesecon.cmpPos(findrule, rule) then + if vector.equals(findrule, rule) then return m end end @@ -69,7 +69,7 @@ function mesecon.rule2metaindex(findrule, allrules) for m, metarule in ipairs( allrules) do for _, rule in ipairs(metarule ) do - if mesecon.cmpPos(findrule, rule) then + if vector.equals(findrule, rule) then return m end end @@ -133,15 +133,7 @@ function mesecon.set_bit(binary,bit,value) end function mesecon.invertRule(r) - return {x = -r.x, y = -r.y, z = -r.z} -end - -function mesecon.addPosRule(p, r) - return {x = p.x + r.x, y = p.y + r.y, z = p.z + r.z} -end - -function mesecon.cmpPos(p1, p2) - return (p1.x == p2.x and p1.y == p2.y and p1.z == p2.z) + return vector.multiply(r, -1) end function mesecon.tablecopy(table) -- deep table copy diff --git a/mesecons/wires.lua b/mesecons/wires.lua index 18ae8f5..d77904e 100644 --- a/mesecons/wires.lua +++ b/mesecons/wires.lua @@ -22,7 +22,7 @@ local wire_getconnect = function (from_pos, self_pos) end for _, r in ipairs(mesecon.flattenrules(rules)) do - if (mesecon.cmpPos(mesecon.addPosRule(self_pos, r), from_pos)) then + if (vector.equals(vector.add(self_pos, r), from_pos)) then return true end end @@ -35,7 +35,7 @@ local wire_updateconnect = function (pos) local connections = {} for _, r in ipairs(mesecon.rules.default) do - if wire_getconnect(pos, mesecon.addPosRule(pos, r)) then + if wire_getconnect(pos, vector.add(pos, r)) then table.insert(connections, r) end end @@ -83,7 +83,7 @@ local update_on_place_dig = function (pos, node) if (not rules) then return end for _, r in ipairs(mesecon.flattenrules(rules)) do - local np = mesecon.addPosRule(pos, r) + local np = vector.add(pos, r) if minetest.registered_nodes[minetest.get_node(np).name] and minetest.registered_nodes[minetest.get_node(np).name].mesecon_wire then wire_updateconnect(np) -- cgit v1.2.3