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 OnlineMapsMarker marker; 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; marker = map.markerManager.Create(map.position); map.control.OnMapClick += () => { marker.position = map.control.GetCoords(); map.Redraw(); }; } private void OnMapUpdated() { double lng, lat; marker.GetPosition(out lng, out lat); Vector3 position = control.GetWorldPosition(lng, lat); Shader.SetGlobalVector("_CircleCenter", position); OnlineMapsUtils.GetCoordinateInDistance(lng, lat, radiusMeters / 1000, 90, out lng, out lat); Vector3 position2 = control.GetWorldPosition(lng, lat); Shader.SetGlobalFloat("_CircleRadius", Mathf.Abs((position - position2).x)); Shader.SetGlobalColor("_CircleColor", circleColor); Shader.SetGlobalFloat("_CircleBorderWidth", circleBorderWidth); Shader.SetGlobalColor("_CircleBorderColor", circleBorderColor); } }