local utils = ...
local S = utils.S



if utils.mesecon_supported then



local through_wire_get_rules = function (node)
	local rules = { {x = -1, y = 0, z = 0},
						 {x =  2, y = 0, z = 0},
						 {x =  3, y = 0, z = 0} }

	if node.param2 == 2 then
		rules = mesecon.rotate_rules_left(rules)
	elseif node.param2 == 3 then
		rules = mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules))
	elseif node.param2 == 0 then
		rules = mesecon.rotate_rules_right(rules)
	end

	return rules
end



mesecon.register_node ("lwcomponents:through_wire", {
	description = S("Mesecons Through Wire"),
	drawtype = "nodebox",
	paramtype = "light",
	paramtype2 = "facedir",
	is_ground_content = false,
	sunlight_propagates = true,
	walkable = false,
	on_rotate = false,
	selection_box = {
		type = "fixed",
		fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 }
	},
	node_box = {
		type = "fixed",
		fixed = {
			{ -3/16, -3/16, 13/32        , 3/16,  3/16  , 8/16        }, -- the smaller bump
			{ -1/32, -1/32, 1/2          , 1/32,  1/32  , 3/2         }, -- the wire through the block
			{ -2/32, -1/2 , 0.5002-3/32  , 2/32,  0     , 0.5         }, -- the vertical wire bit
			{ -2/32, -1/2 , -16/32+0.001 , 2/32,  -14/32,  7/16+0.002 }  -- the horizontal wire
		}
	},
	drop = "lwcomponents:through_wire_off",}, {
	tiles = { "mesecons_wire_off.png" },
	groups = { dig_immediate = 3 },
	mesecons = {
		conductor = {
			state = mesecon.state.off,
			rules = through_wire_get_rules,
			onstate = "lwcomponents:through_wire_on"
		}
	}
}, {
	tiles = { "mesecons_wire_on.png" },
	groups = { dig_immediate = 3, not_in_creative_inventory = 1 },
	mesecons = {
		conductor = {
			state = mesecon.state.on,
			rules = through_wire_get_rules,
			offstate = "lwcomponents:through_wire_off"
		}
	}
})



end -- utils.mesecon_supported



--
