forked from mtcontrib/pipeworks
new flow logic: flowable node registry: add directional flow type class
This commit is contained in:
parent
0e74978a73
commit
e41167813b
@ -17,6 +17,14 @@ pipeworks.flowables.list.all = {}
|
||||
pipeworks.flowables.list.simple = {}
|
||||
pipeworks.flowables.list.simple_nodenames = {}
|
||||
|
||||
-- directional flowables - can only flow on certain sides
|
||||
-- format per entry is a table with the following fields:
|
||||
-- neighbourfn: function(node),
|
||||
-- called to determine which nodes to consider as neighbours.
|
||||
-- can be used to e.g. inspect the node's param values for facedir etc.
|
||||
-- returns: array of vector offsets to look for possible neighbours in
|
||||
pipeworks.flowables.list.directional = {}
|
||||
|
||||
-- simple intakes - try to absorb any adjacent water nodes
|
||||
pipeworks.flowables.inputs = {}
|
||||
pipeworks.flowables.inputs.list = {}
|
||||
|
@ -20,6 +20,9 @@ local insertbase = function(nodename)
|
||||
if checkexists(nodename) then error("pipeworks.flowables duplicate registration!") end
|
||||
pipeworks.flowables.list.all[nodename] = true
|
||||
-- table.insert(pipeworks.flowables.list.nodenames, nodename)
|
||||
if pipeworks.toggles.pressure_logic then
|
||||
abmregister.flowlogic(nodename)
|
||||
end
|
||||
end
|
||||
|
||||
local regwarning = function(kind, nodename)
|
||||
@ -35,12 +38,19 @@ register.simple = function(nodename)
|
||||
insertbase(nodename)
|
||||
pipeworks.flowables.list.simple[nodename] = true
|
||||
table.insert(pipeworks.flowables.list.simple_nodenames, nodename)
|
||||
if pipeworks.toggles.pressure_logic then
|
||||
abmregister.flowlogic(nodename)
|
||||
end
|
||||
regwarning("simple", nodename)
|
||||
end
|
||||
|
||||
-- Register a node as a directional flowable:
|
||||
-- has a helper function which determines which nodes to consider valid neighbours.
|
||||
register.directional = function(nodename, neighbourfn)
|
||||
insertbase(nodename)
|
||||
pipeworks.flowables.list.directional[nodename] = { neighbourfn = neighbourfn }
|
||||
regwarning("directional", nodename)
|
||||
end
|
||||
|
||||
|
||||
|
||||
local checkbase = function(nodename)
|
||||
if not checkexists(nodename) then error("pipeworks.flowables node doesn't exist as a flowable!") end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user