mirror of
https://github.com/mt-mods/pipeworks.git
synced 2024-11-08 16:33:58 +01:00
pressure logic: abms.lua: move neighbour candidates calculation to separate function
This commit is contained in:
parent
a7c171940e
commit
d68d3d5852
@ -130,17 +130,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
flowlogic.balance_pressure = function(pos, node, currentpressure)
|
local get_neighbour_positions = function(pos, node)
|
||||||
-- local dname = "flowlogic.balance_pressure()@"..formatvec(pos).." "
|
|
||||||
-- check the pressure of all nearby flowable nodes, and average it out.
|
|
||||||
|
|
||||||
-- pressure handles to average over
|
|
||||||
local connections = {}
|
|
||||||
-- unconditionally include self in nodes to average over.
|
|
||||||
-- result of averaging will be returned as new pressure for main flow logic callback
|
|
||||||
local totalv = currentpressure
|
|
||||||
local totalc = 1
|
|
||||||
|
|
||||||
-- get list of node neighbours.
|
-- get list of node neighbours.
|
||||||
-- if this node is directional and only flows on certain sides,
|
-- if this node is directional and only flows on certain sides,
|
||||||
-- invoke the callback to retrieve the set.
|
-- invoke the callback to retrieve the set.
|
||||||
@ -158,6 +148,24 @@ flowlogic.balance_pressure = function(pos, node, currentpressure)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
return candidates
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
flowlogic.balance_pressure = function(pos, node, currentpressure)
|
||||||
|
-- local dname = "flowlogic.balance_pressure()@"..formatvec(pos).." "
|
||||||
|
-- check the pressure of all nearby flowable nodes, and average it out.
|
||||||
|
|
||||||
|
-- pressure handles to average over
|
||||||
|
local connections = {}
|
||||||
|
-- unconditionally include self in nodes to average over.
|
||||||
|
-- result of averaging will be returned as new pressure for main flow logic callback
|
||||||
|
local totalv = currentpressure
|
||||||
|
local totalc = 1
|
||||||
|
|
||||||
|
local candidates = get_neighbour_positions(pos, node)
|
||||||
|
|
||||||
-- then handle neighbours, but if not a pressure node don't consider them at all
|
-- then handle neighbours, but if not a pressure node don't consider them at all
|
||||||
for _, npos in ipairs(candidates) do
|
for _, npos in ipairs(candidates) do
|
||||||
local nodename = minetest.get_node(npos).name
|
local nodename = minetest.get_node(npos).name
|
||||||
|
Loading…
Reference in New Issue
Block a user