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 = {}
|
||||||
pipeworks.flowables.list.simple_nodenames = {}
|
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
|
-- simple intakes - try to absorb any adjacent water nodes
|
||||||
pipeworks.flowables.inputs = {}
|
pipeworks.flowables.inputs = {}
|
||||||
pipeworks.flowables.inputs.list = {}
|
pipeworks.flowables.inputs.list = {}
|
||||||
|
|
|
@ -20,6 +20,9 @@ local insertbase = function(nodename)
|
||||||
if checkexists(nodename) then error("pipeworks.flowables duplicate registration!") end
|
if checkexists(nodename) then error("pipeworks.flowables duplicate registration!") end
|
||||||
pipeworks.flowables.list.all[nodename] = true
|
pipeworks.flowables.list.all[nodename] = true
|
||||||
-- table.insert(pipeworks.flowables.list.nodenames, nodename)
|
-- table.insert(pipeworks.flowables.list.nodenames, nodename)
|
||||||
|
if pipeworks.toggles.pressure_logic then
|
||||||
|
abmregister.flowlogic(nodename)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local regwarning = function(kind, nodename)
|
local regwarning = function(kind, nodename)
|
||||||
|
@ -35,12 +38,19 @@ register.simple = function(nodename)
|
||||||
insertbase(nodename)
|
insertbase(nodename)
|
||||||
pipeworks.flowables.list.simple[nodename] = true
|
pipeworks.flowables.list.simple[nodename] = true
|
||||||
table.insert(pipeworks.flowables.list.simple_nodenames, nodename)
|
table.insert(pipeworks.flowables.list.simple_nodenames, nodename)
|
||||||
if pipeworks.toggles.pressure_logic then
|
|
||||||
abmregister.flowlogic(nodename)
|
|
||||||
end
|
|
||||||
regwarning("simple", nodename)
|
regwarning("simple", nodename)
|
||||||
end
|
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)
|
local checkbase = function(nodename)
|
||||||
if not checkexists(nodename) then error("pipeworks.flowables node doesn't exist as a flowable!") end
|
if not checkexists(nodename) then error("pipeworks.flowables node doesn't exist as a flowable!") end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user