function ClickToMove.SetShowPath(Z,j)ShowPath=j end function ClickToMove.GetShowPath(j)return ShowPath end function ClickToMove.SetWaypointTexture(Z,j)ClickToMoveDisplay.SetWaypointTexture(j)end function ClickToMove.GetWaypointTexture(j)return ClickToMoveDisplay.GetWaypointTexture()end function ClickToMove.SetWaypointRadius(Z,j)ClickToMoveDisplay.SetWaypointRadius(j)end function ClickToMove.GetWaypointRadius(j)return ClickToMoveDisplay.GetWaypointRadius()end function ClickToMove.SetEndWaypointTexture(Z,j)ClickToMoveDisplay.SetEndWaypointTexture(j)end function ClickToMove.GetEndWaypointTexture(j)return ClickToMoveDisplay.GetEndWaypointTexture()end function ClickToMove.SetWaypointsAlwaysOnTop(Z,j)ClickToMoveDisplay.SetWaypointsAlwaysOnTop(j)end function ClickToMove.GetWaypointsAlwaysOnTop(j)return ClickToMoveDisplay.GetWaypointsAlwaysOnTop()end function ClickToMove.SetFailureAnimationEnabled(Z,j)PlayFailureAnimation=j end function ClickToMove.GetFailureAnimationEnabled(j)return PlayFailureAnimation end function ClickToMove.SetIgnoredPartsTag(Z,j)UpdateIgnoreTag(j)end function ClickToMove.GetIgnoredPartsTag(j)return CurrentIgnoreTag end function ClickToMove.SetUseDirectPath(Z,j)UseDirectPath=j end function ClickToMove.GetUseDirectPath(j)return UseDirectPath end function ClickToMove.SetAgentSizeIncreaseFactor(Z,j)AgentSizeIncreaseFactor=1.0+j/100.0 end function ClickToMove.GetAgentSizeIncreaseFactor(j)return(AgentSizeIncreaseFactor-1.0)*100.0 end function ClickToMove.SetUnreachableWaypointTimeout(Z,j)UnreachableWaypointTimeout=j end function ClickToMove.GetUnreachableWaypointTimeout(j)return UnreachableWaypointTimeout end function ClickToMove.SetUserJumpEnabled(Z,j)Z.jumpEnabled=j if Z.touchJumpController then Z.touchJumpController:Enable(j)end end function ClickToMove.GetUserJumpEnabled(j)return j.jumpEnabled end function ClickToMove.MoveTo(n,j,Z,h)local W=Player.Character if W==nil then return false end local S=Pather(j,Vector3.new(0,1,0),h)if S and S:IsValidPath()then if FFlagUserClickToMoveFollowPathRefactor then CleanupPath()end HandleMoveTo(S,j,nil,W,Z)return true end return false end return ClickToMove
--Public developer facing functions
function ClickToMove:SetShowPath(value)
	ShowPath = value
end

function ClickToMove:GetShowPath()
	return ShowPath
end

function ClickToMove:SetWaypointTexture(texture)
	ClickToMoveDisplay.SetWaypointTexture(texture)
end

function ClickToMove:GetWaypointTexture()
	return ClickToMoveDisplay.GetWaypointTexture()
end

function ClickToMove:SetWaypointRadius(radius)
	ClickToMoveDisplay.SetWaypointRadius(radius)
end

function ClickToMove:GetWaypointRadius()
	return ClickToMoveDisplay.GetWaypointRadius()
end

function ClickToMove:SetEndWaypointTexture(texture)
	ClickToMoveDisplay.SetEndWaypointTexture(texture)
end

function ClickToMove:GetEndWaypointTexture()
	return ClickToMoveDisplay.GetEndWaypointTexture()
end

function ClickToMove:SetWaypointsAlwaysOnTop(alwaysOnTop)
	ClickToMoveDisplay.SetWaypointsAlwaysOnTop(alwaysOnTop)
end

function ClickToMove:GetWaypointsAlwaysOnTop()
	return ClickToMoveDisplay.GetWaypointsAlwaysOnTop()
end

function ClickToMove:SetFailureAnimationEnabled(enabled)
	PlayFailureAnimation = enabled
end

function ClickToMove:GetFailureAnimationEnabled()
	return PlayFailureAnimation
end

function ClickToMove:SetIgnoredPartsTag(tag)
	UpdateIgnoreTag(tag)
end

function ClickToMove:GetIgnoredPartsTag()
	return CurrentIgnoreTag
end

function ClickToMove:SetUseDirectPath(directPath)
	UseDirectPath = directPath
end

function ClickToMove:GetUseDirectPath()
	return UseDirectPath
end

function ClickToMove:SetAgentSizeIncreaseFactor(increaseFactorPercent)
	AgentSizeIncreaseFactor = 1.0 + (increaseFactorPercent / 100.0)
end

function ClickToMove:GetAgentSizeIncreaseFactor()
	return (AgentSizeIncreaseFactor - 1.0) * 100.0
end

function ClickToMove:SetUnreachableWaypointTimeout(timeoutInSec)
	UnreachableWaypointTimeout = timeoutInSec
end

function ClickToMove:GetUnreachableWaypointTimeout()
	return UnreachableWaypointTimeout
end

function ClickToMove:SetUserJumpEnabled(jumpEnabled)
	self.jumpEnabled = jumpEnabled
	if self.touchJumpController then
		self.touchJumpController:Enable(jumpEnabled)
	end
end

function ClickToMove:GetUserJumpEnabled()
	return self.jumpEnabled
end

function ClickToMove:MoveTo(position, showPath, useDirectPath)
	local character = Player.Character
	if character == nil then
		return false
	end
	local thisPather = Pather(position, Vector3.new(0, 1, 0), useDirectPath)
	if thisPather and thisPather:IsValidPath() then
		if FFlagUserClickToMoveFollowPathRefactor then
			-- Clean up previous path
			CleanupPath()
		end
		HandleMoveTo(thisPather, position, nil, character, showPath)
		return true
	end
	return false
end

return ClickToMove
