Code cleanup and ond more extremely small speedup

This commit is contained in:
Jeija
2012-08-13 08:50:10 +02:00
parent 736f40bfb4
commit c8c2fd32da
4 changed files with 36 additions and 15 deletions

View File

@@ -288,21 +288,27 @@ end
function mesecon:connected_to_pw_src(pos, checked)
if checked == nil then
checked = {}
end
local connected
local i = 1
while checked[i] ~= nil do --find out if node has already been checked
if checked[i].x == pos.x and checked[i].y == pos.y and checked[i].z == pos.z then
return false
return false, checked
end
i = i + 1
end
checked[i] = {x=pos.x, y=pos.y, z=pos.z} --add current node to checked
local node = minetest.env:get_node_or_nil(pos)
if node == nil then return false end
if node == nil then return false, checked end
if mesecon:is_conductor_on(node.name) or mesecon:is_conductor_off(node.name) then
if mesecon:is_powered_from_receptor(pos) then --return if conductor is powered
return true
if mesecon:is_powered_by_receptor(pos) then --return if conductor is powered
return true, checked
end
local rules = mesecon:get_rules("default") --TODO: Use conductor specific rules
@@ -312,16 +318,17 @@ function mesecon:connected_to_pw_src(pos, checked)
np.x = pos.x + rules[i].x
np.y = pos.y + rules[i].y
np.z = pos.z + rules[i].z
if mesecon:connected_to_pw_src(np, checked) == true then
return true
connected, checked = mesecon:connected_to_pw_src(np, checked)
if connected then
return true
end
i=i+1
end
end
return false
return false, checked
end
function mesecon:is_powered_from_receptor(pos)
function mesecon:is_powered_by_receptor(pos)
local rcpt
local rcpt_pos = {}
local rcpt_checked = {} --using a checked array speeds this up
@@ -361,7 +368,7 @@ function mesecon:is_powered_from_receptor(pos)
return false
end
function mesecon:is_powered_from_conductor(pos)
function mesecon:is_powered_by_conductor(pos)
local k=1
rules=mesecon:get_rules("default") --TODO: use conductor specific rules
@@ -375,11 +382,11 @@ function mesecon:is_powered_from_conductor(pos)
end
function mesecon:is_powered(pos)
return mesecon:is_powered_from_conductor(pos) or mesecon:is_powered_from_receptor(pos)
return mesecon:is_powered_by_conductor(pos) or mesecon:is_powered_by_receptor(pos)
end
function mesecon:updatenode(pos)
if mesecon:connected_to_pw_src(pos, {}) then
if mesecon:connected_to_pw_src(pos) then
mesecon:turnon(pos)
else
mesecon:turnoff(pos)