forked from mtcontrib/pipeworks
pressure logic: add horizontally-rotating directional flowable helper
This commit is contained in:
parent
efcec7bdce
commit
0913098a9d
@ -66,6 +66,43 @@ register.directional_vertical_fixed = function(nodename, topside)
|
|||||||
register.directional(nodename, neighbourfn, directionfn)
|
register.directional(nodename, neighbourfn, directionfn)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- register a node as a directional flowable whose accepting sides depends upon param2 rotation.
|
||||||
|
-- used for entry panels, valves, flow sensors and spigots,
|
||||||
|
-- whose facing axis is always upwards and can only rotate horizontally.
|
||||||
|
local iseastwest = function(node)
|
||||||
|
local data = node.param2
|
||||||
|
local rotation = data % 4
|
||||||
|
-- rotation 0 and 2 is the same axis, as is 1 and 3.
|
||||||
|
-- 0-3 starts at north and proceeds clockwise.
|
||||||
|
local axis = rotation % 2
|
||||||
|
--pipeworks.logger("iseastwest() rotation="..tostring(rotation).." axis="..tostring(axis))
|
||||||
|
return (axis == 1)
|
||||||
|
end
|
||||||
|
register.directional_horizonal_rotate = function(nodename)
|
||||||
|
local north = {x= 0,y= 0,z= 1}
|
||||||
|
local south = {x= 0,y= 0,z=-1}
|
||||||
|
local east = {x= 1,y= 0,z= 0}
|
||||||
|
local west = {x=-1,y= 0,z= 0}
|
||||||
|
local neighbourfn = function(node)
|
||||||
|
if iseastwest(node) then
|
||||||
|
return { east, west }
|
||||||
|
else
|
||||||
|
return { north, south }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local directionfn = function(node, direction)
|
||||||
|
local result = false
|
||||||
|
if iseastwest(node) then
|
||||||
|
--pipeworks.logger("horizontal rotate directionfn() eastwest=true")
|
||||||
|
result = vector.equals(direction, east) or vector.equals(direction, west)
|
||||||
|
else
|
||||||
|
result = vector.equals(direction, north) or vector.equals(direction, south)
|
||||||
|
end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
register.directional(nodename, neighbourfn, directionfn)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local checkbase = function(nodename)
|
local checkbase = function(nodename)
|
||||||
|
Loading…
Reference in New Issue
Block a user