forked from minetest-mods/mesecons
Compare commits
6 Commits
1963bfcc0d
...
5ad1e6bc4d
Author | SHA1 | Date | |
---|---|---|---|
5ad1e6bc4d | |||
9323445182 | |||
b91fe92d13 | |||
e15c55c066 | |||
6a87290ead | |||
db5879706d |
@ -384,9 +384,10 @@ function mesecon.turnon(pos, link)
|
|||||||
if not node then
|
if not node then
|
||||||
-- Area does not exist; do nothing
|
-- Area does not exist; do nothing
|
||||||
pos_can_be_skipped[minetest.hash_node_position(f.pos)] = true
|
pos_can_be_skipped[minetest.hash_node_position(f.pos)] = true
|
||||||
elseif mesecon.is_conductor_off(node, f.link) then
|
elseif mesecon.is_conductor(node.name) then
|
||||||
local rules = mesecon.conductor_get_rules(node)
|
local rules = mesecon.conductor_get_rules(node)
|
||||||
|
|
||||||
|
if mesecon.is_conductor_off(node, f.link) then
|
||||||
-- Call turnon on neighbors
|
-- Call turnon on neighbors
|
||||||
for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do
|
for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do
|
||||||
local np = vector.add(f.pos, r)
|
local np = vector.add(f.pos, r)
|
||||||
@ -398,7 +399,12 @@ function mesecon.turnon(pos, link)
|
|||||||
end
|
end
|
||||||
|
|
||||||
mesecon.swap_node_force(f.pos, mesecon.get_conductor_on(node, f.link))
|
mesecon.swap_node_force(f.pos, mesecon.get_conductor_on(node, f.link))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Only conductors with flat rules can be reliably skipped later
|
||||||
|
if not rules[1] or rules[1].x then
|
||||||
pos_can_be_skipped[minetest.hash_node_position(f.pos)] = true
|
pos_can_be_skipped[minetest.hash_node_position(f.pos)] = true
|
||||||
|
end
|
||||||
elseif mesecon.is_effector(node.name) then
|
elseif mesecon.is_effector(node.name) then
|
||||||
mesecon.changesignal(f.pos, node, f.link, mesecon.state.on, depth)
|
mesecon.changesignal(f.pos, node, f.link, mesecon.state.on, depth)
|
||||||
if mesecon.is_effector_off(node.name) then
|
if mesecon.is_effector_off(node.name) then
|
||||||
@ -440,8 +446,10 @@ function mesecon.turnoff(pos, link)
|
|||||||
if not node then
|
if not node then
|
||||||
-- Area does not exist; do nothing
|
-- Area does not exist; do nothing
|
||||||
pos_can_be_skipped[minetest.hash_node_position(f.pos)] = true
|
pos_can_be_skipped[minetest.hash_node_position(f.pos)] = true
|
||||||
elseif mesecon.is_conductor_on(node, f.link) then
|
elseif mesecon.is_conductor(node.name) then
|
||||||
local rules = mesecon.conductor_get_rules(node)
|
local rules = mesecon.conductor_get_rules(node)
|
||||||
|
|
||||||
|
if mesecon.is_conductor_on(node, f.link) then
|
||||||
for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do
|
for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do
|
||||||
local np = vector.add(f.pos, r)
|
local np = vector.add(f.pos, r)
|
||||||
|
|
||||||
@ -463,7 +471,12 @@ function mesecon.turnoff(pos, link)
|
|||||||
end
|
end
|
||||||
|
|
||||||
mesecon.swap_node_force(f.pos, mesecon.get_conductor_off(node, f.link))
|
mesecon.swap_node_force(f.pos, mesecon.get_conductor_off(node, f.link))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Only conductors with flat rules can be reliably skipped later
|
||||||
|
if not rules[1] or rules[1].x then
|
||||||
pos_can_be_skipped[minetest.hash_node_position(f.pos)] = true
|
pos_can_be_skipped[minetest.hash_node_position(f.pos)] = true
|
||||||
|
end
|
||||||
elseif mesecon.is_effector(node.name) then
|
elseif mesecon.is_effector(node.name) then
|
||||||
table.insert(signals, {
|
table.insert(signals, {
|
||||||
pos = f.pos,
|
pos = f.pos,
|
||||||
|
@ -16,7 +16,7 @@ mesecon.on_placenode = function(pos, node)
|
|||||||
-- also call receptor_on if itself is powered already, so that neighboring
|
-- also call receptor_on if itself is powered already, so that neighboring
|
||||||
-- conductors will be activated (when pushing an on-conductor with a piston)
|
-- conductors will be activated (when pushing an on-conductor with a piston)
|
||||||
for _, s in ipairs(sources) do
|
for _, s in ipairs(sources) do
|
||||||
local rule = vector.subtract(pos, s)
|
local rule = vector.subtract(s, pos)
|
||||||
mesecon.turnon(pos, rule)
|
mesecon.turnon(pos, rule)
|
||||||
end
|
end
|
||||||
--mesecon.receptor_on (pos, mesecon.conductor_get_rules(node))
|
--mesecon.receptor_on (pos, mesecon.conductor_get_rules(node))
|
||||||
|
@ -164,7 +164,9 @@ end
|
|||||||
|
|
||||||
function mesecon.get_bit(binary,bit)
|
function mesecon.get_bit(binary,bit)
|
||||||
bit = bit or 1
|
bit = bit or 1
|
||||||
local c = binary:len()-(bit-1)
|
local len = binary:len()
|
||||||
|
if bit > len then return false end
|
||||||
|
local c = len-(bit-1)
|
||||||
return binary:sub(c,c) == "1"
|
return binary:sub(c,c) == "1"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user