local u={spacing=8,image="\114\098\120\097\115\115\101\116\058\047\047\116\101\120\116\117\114\101\115\047\067\117\114\115\111\114\115\047\071\097\109\101\112\097\100\047\080\111\105\110\116\101\114\046\112\110\103";imageSize=Vector2.new(2,2)}local k=Instance.new("\077\111\100\101\108")k.Name="\080\097\116\104\068\105\115\112\108\097\121\080\111\105\110\116\115"local F=Instance.new("\080\097\114\116")F.Anchored=true F.CanCollide=false F.Transparency=1 F.Name="\080\097\116\104\068\105\115\112\108\097\121\065\100\111\114\110\101\101"F.CFrame=CFrame.new(0,0,0)F.Parent=k local c={}for k=1,30,1 do local b=Instance.new("\073\109\097\103\101\072\097\110\100\108\101\065\100\111\114\110\109\101\110\116")b.Archivable=false b.Adornee=F b.Image=u.image b.Size=u.imageSize c[k]=b end local b=30 local function e()local u=c[1]if not u then return end c[1]=c[b]c[b]=nil b=b-1 return u end local i={}function u.setCurrentPoints(u)if typeof(u)=="\116\097\098\108\101"then i=u return end i={}end local J={}local function y(u)b=b+1 c[b]=u end function u.clearRenderedPath()for u,k in ipairs(J)do k.Parent=nil y(k)end J={}k.Parent=nil end local function s(u,F)if b==0 then return end local c,i,J=workspace:FindPartOnRayWithIgnoreList(Ray.new(u+Vector3.new(0,2,0),Vector3.new(0,-8,0)),{game.Players.LocalPlayer.Character,workspace.CurrentCamera})if not c then return end local y=e()y.CFrame=CFrame.new(i,i+J)y.Parent=k return y end function u.renderPath()u.clearRenderedPath()if not i or#i==0 then return end local F=#i local c=0 J[1]=s(i[F],true)if not J[1]then return end while true do local k=i[F]if F<2 then break end local b=i[F-1]-k local e=b.magnitude if e<c then c=c-e F=F-1 else local F=s(k+b.unit*c,false)if F then J[#J+1]=F end c=c+u.spacing end end k.Parent=workspace.CurrentCamera end return u


local v1 = {
	spacing = 8, 
	image = "rbxasset://textures/Cursors/Gamepad/Pointer.png", 
	imageSize = Vector2.new(2, 2)
};
local v2 = Instance.new("Model");
v2.Name = "PathDisplayPoints";
local v3 = Instance.new("Part");
v3.Anchored = true;
v3.CanCollide = false;
v3.Transparency = 1;
v3.Name = "PathDisplayAdornee";
v3.CFrame = CFrame.new(0, 0, 0);
v3.Parent = v2;
local v4 = {};
for v5 = 1, 30 do
	local v6 = Instance.new("ImageHandleAdornment");
	v6.Archivable = false;
	v6.Adornee = v3;
	v6.Image = v1.image;
	v6.Size = v1.imageSize;
	v4[v5] = v6;
end;
local u1 = 30;
local function u2()
	local v7 = v4[1];
	if not v7 then
		return;
	end;
	v4[1] = v4[u1];
	v4[u1] = nil;
	u1 = u1 - 1;
	return v7;
end;
local u3 = {};
function v1.setCurrentPoints(p1)
	if typeof(p1) == "table" then
		u3 = p1;
		return;
	end;
	u3 = {};
end;
local u4 = {};
local function u5(p2)
	u1 = u1 + 1;
	v4[u1] = p2;
end;
function v1.clearRenderedPath()
	for v8, v9 in ipairs(u4) do
		v9.Parent = nil;
		u5(v9);
	end;
	u4 = {};
	v2.Parent = nil;
end;
local function u6(p3, p4)
	if u1 == 0 then
		return;
	end;
	local v10, v11, v12 = workspace:FindPartOnRayWithIgnoreList(Ray.new(p3 + Vector3.new(0, 2, 0), Vector3.new(0, -8, 0)), { game.Players.LocalPlayer.Character, workspace.CurrentCamera });
	if not v10 then
		return;
	end;
	local v13 = u2();
	v13.CFrame = CFrame.new(v11, v11 + v12);
	v13.Parent = v2;
	return v13;
end;
function v1.renderPath()
	v1.clearRenderedPath();
	if not u3 or #u3 == 0 then
		return;
	end;
	local v14 = #u3;
	local v15 = 0;
	u4[1] = u6(u3[v14], true);
	if not u4[1] then
		return;
	end;
	while true do
		local v16 = u3[v14];
		if v14 < 2 then
			break;
		end;
		local v17 = u3[v14 - 1] - v16;
		local l__magnitude__18 = v17.magnitude;
		if l__magnitude__18 < v15 then
			v15 = v15 - l__magnitude__18;
			v14 = v14 - 1;
		else
			local v19 = u6(v16 + v17.unit * v15, false);
			if v19 then
				u4[#u4 + 1] = v19;
			end;
			v15 = v15 + v1.spacing;
		end;	
	end;
	v2.Parent = workspace.CurrentCamera;
end;
return v1;
