using System; using UnityEngine; public class TilesetWithCircle : MonoBehaviour { public OnlineMaps map; public float radiusMeters = 100; public Color circleColor = Color.red; public float circleBorderWidth = 1; public Color circleBorderColor = Color.black; private OnlineMapsTileSetControl control; private void Start() { if (map == null) map = OnlineMaps.instance; control = map.control as OnlineMapsTileSetControl; if (control == null) throw new Exception("You must use the Tileset control."); map.OnMapUpdated += OnMapUpdated; map.control.OnMapClick += () => { map.markerManager.Create(map.control.GetCoords()); map.Redraw(); }; } private void OnMapUpdated() { double lng, lat; OnlineMapsMarkerManager markerManager = map.markerManager; Vector4[] items = new Vector4[1000]; int countItems = Mathf.Min(markerManager.Count, 1000); for (int i = 0; i < countItems; i++) { OnlineMapsMarker marker = markerManager[i]; marker.GetPosition(out lng, out lat); Vector3 position = control.GetWorldPosition(lng, lat); OnlineMapsUtils.GetCoordinateInDistance(lng, lat, radiusMeters / 1000, 90, out lng, out lat); Vector3 position2 = control.GetWorldPosition(lng, lat); Vector4 v = position; v.w = Mathf.Abs((position - position2).x); items[i] = v; } Shader.SetGlobalVectorArray("_Items", items); Shader.SetGlobalInt("_CountItems", countItems); Shader.SetGlobalColor("_CircleColor", circleColor); Shader.SetGlobalFloat("_CircleBorderWidth", circleBorderWidth); Shader.SetGlobalColor("_CircleBorderColor", circleBorderColor); } }