using UnityEngine; public class TilesetOverlayUsingShader2 : MonoBehaviour { public OnlineMapsTileSetControl control; // Overlay texture in mercator projection public Texture texture; /// /// Border coordinates of the overlay /// public double leftLongitude; public double topLatitude; public double rightLongitude; public double bottomLatitude; // Overlay transparency [Range(0, 1)] public float alpha = 1; private float _alpha = 1; private void Start() { if (control == null) control = OnlineMapsTileSetControl.instance; control.OnDrawTile += OnDrawTile; } private void OnDrawTile(OnlineMapsTile tile, Material material) { Vector3 p1 = control.GetWorldPosition(leftLongitude, topLatitude); Vector3 p2 = control.GetWorldPosition(rightLongitude, bottomLatitude); material.SetTexture("_OverlayTex", texture); material.SetFloat("_OverlayAlpha", _alpha); material.SetVector("_OverlayTL", p1); material.SetVector("_OverlayBR", p2); } private void Update() { if (_alpha != alpha) { _alpha = alpha; control.map.Redraw(); } } }