using System; using UnityEngine; public class TilesetOverlayUsingShader : 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; // Subscribe to events OnlineMapsTileSetControl.instance.OnMeshUpdated += UpdateOverlay; UpdateOverlay(); } private void Update() { if (_alpha != alpha) { _alpha = alpha; UpdateOverlay(); } } private void UpdateOverlay() { Vector3 p1 = control.GetWorldPosition(leftLongitude, topLatitude); Vector3 p2 = control.GetWorldPosition(rightLongitude, bottomLatitude); Shader.SetGlobalTexture("_OverlayTex", texture); Shader.SetGlobalFloat("_OverlayAlpha", _alpha); Shader.SetGlobalVector("_OverlayTL", p1); Shader.SetGlobalVector("_OverlayBR", p2); } }