forked from mtcontrib/pipeworks
		
	pressure logic: add horizontally-rotating directional flowable helper
This commit is contained in:
		@@ -66,6 +66,43 @@ register.directional_vertical_fixed = function(nodename, topside)
 | 
			
		||||
	register.directional(nodename, neighbourfn, directionfn)
 | 
			
		||||
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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user