<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Infinity Code Forum — Round Map]]></title>
		<link>https://forum.infinity-code.com/viewtopic.php?id=638</link>
		<atom:link href="https://forum.infinity-code.com/extern.php?action=feed&amp;tid=638&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent posts in Round Map.]]></description>
		<lastBuildDate>Fri, 01 Sep 2017 23:59:40 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Round Map]]></title>
			<link>https://forum.infinity-code.com/viewtopic.php?pid=2749#p2749</link>
			<description><![CDATA[<p>Hello.</p><p>Something like that:<br /></p><div class="codebox"><pre><code>using System.Collections.Generic;
using UnityEngine;

public class RoundMap:MonoBehaviour
{
    public float radius = 512;

    private OnlineMaps map;
    private OnlineMapsTileSetControl control;
    private MeshFilter meshFilter;
    private OnlineMapsBuildings buildings;
    private float sqrRadius;
    private Vector3 mapCenter;

    private void Start()
    {
        map = OnlineMaps.instance;
        control = OnlineMapsTileSetControl.instance;
        buildings = OnlineMapsBuildings.instance;
        meshFilter = control.GetComponent&lt;MeshFilter&gt;();

        sqrRadius = radius * radius;
        mapCenter = new Vector3(map.tilesetSize.x / -2, 0, map.tilesetSize.y / 2);

        map.OnMapUpdated += OnMapUpdated;
        control.OnMeshUpdated += OnMeshUpdated;
        buildings.OnShowBuilding += OnShowBuilding;
    }

    private bool OnShowBuilding(OnlineMapsBuildingBase building)
    {
        return (building.gameObject.transform.localPosition - mapCenter).sqrMagnitude &lt; sqrRadius;
    }

    private void OnMapUpdated()
    {
        foreach (KeyValuePair&lt;string, OnlineMapsBuildingBase&gt; pair in buildings.buildings)
        {
            Vector3 worldPosition = pair.Value.transform.localPosition - mapCenter;
            pair.Value.gameObject.SetActive(worldPosition.sqrMagnitude &lt; sqrRadius);
        }
    }

    private void OnMeshUpdated()
    {
        Mesh mesh = meshFilter.sharedMesh;
        Vector3[] vertices = mesh.vertices;
        Vector2[] uvs = mesh.uv;

        float halfWidth = map.tilesetSize.x / -2;
        float halfHeight = map.tilesetSize.y / 2;

        double tlx, tly, brx, bry;
        map.GetCorners(out tlx, out tly, out brx, out bry);

        float elevationScale = control.GetBestElevationYScale(tlx, tly, brx, bry);

        for (int i = 0; i &lt; vertices.Length; i++)
        {
            Vector3 v = vertices[i];
            Vector2 nv = new Vector2(v.x - halfWidth, v.z - halfHeight);
            if (nv.sqrMagnitude &gt; sqrRadius)
            {
                float m = nv.magnitude;
                Vector2 nn = nv.normalized;
                nv = nn * radius;
                nv.x += halfWidth;
                nv.y += halfHeight;
                vertices[i] = new Vector3(nv.x, control.GetElevationValue(nv.x, nv.y, elevationScale, tlx, tly, brx, bry), nv.y);
                Vector2 uv = uvs[i];
                uv.x = Mathf.Clamp01(uv.x + nn.x * (1 - radius / m));
                uv.y = Mathf.Clamp01(uv.y + nn.y * (1 - radius / m));
                uvs[i] = uv;
            }
        }

        mesh.vertices = vertices;
        mesh.uv = uvs;
    }
}</code></pre></div><p>Note:<br />This script has a bug with UV (fisheye), but when using elevations, it&#039;s not visible. If this is critical for your application, I&#039;ll try to find a way around this.</p><p>Note for other users who are reading this thread:<br />This method can only be used if you want to have a cylindrical map that should be fully visible. In other cases it is better to use Camera - Clipping Planes.</p>]]></description>
			<author><![CDATA[null@example.com (Alex Vertax)]]></author>
			<pubDate>Fri, 01 Sep 2017 23:59:40 +0000</pubDate>
			<guid>https://forum.infinity-code.com/viewtopic.php?pid=2749#p2749</guid>
		</item>
		<item>
			<title><![CDATA[Round Map]]></title>
			<link>https://forum.infinity-code.com/viewtopic.php?pid=2747#p2747</link>
			<description><![CDATA[<p>Hi all </p><p>I would like to make round map like attached image.<br />(I know Online Maps can&#039;t make building textures. <br />I want to make just round shape map)</p>]]></description>
			<author><![CDATA[null@example.com (vai.rg321mh)]]></author>
			<pubDate>Fri, 01 Sep 2017 10:26:43 +0000</pubDate>
			<guid>https://forum.infinity-code.com/viewtopic.php?pid=2747#p2747</guid>
		</item>
	</channel>
</rss>
