-- functions


local function Raycast(position, direction, ignore)
	local ray		= Ray.new(position, direction)
	local success	= false
	local h, p, n, humanoid
	
	table.insert(ignore, Workspace.Effects)
	table.insert(ignore, Workspace.Drops)
	
	repeat
		h, p, n	= Workspace:FindPartOnRayWithIgnoreList(ray, ignore)
		
		if h then
			local humanoid	= h.Parent:FindFirstChildOfClass("Humanoid")
			if humanoid then
				table.insert(ignore, humanoid.Parent)
				success	= false
			elseif h.CanCollide and h.Transparency < 1 then
				success	= true
			else
				table.insert(ignore, h)
				success	= false
			end
		else
			success	= true
		end
	until success
	
	return h, p, n
end
