using UnityEngine; using System.Collections; public class LoadPanoPositions2D : MonoBehaviour { [SerializeField] private PanoClassDB panoClassDB; // ScriptableObject containing collection of Panorama classes [SerializeField] private Texture2D panoIcon; [SerializeField] private float y = 1; [SerializeField] private int defaultZoom = 15; private OnlineMapsMarker[] panoMarkers; private Transform markersTransform; private float _y; private OnlineMaps mapInstance; // Use this for initialization void Start () { // OnlineMapsMarker[] panoIcons; mapInstance = OnlineMaps.instance; panoMarkers = new OnlineMapsMarker[panoClassDB.PanoClasses.Count]; var panoClasses = panoClassDB.PanoClasses; var mapDatum = mapInstance.position; for(int i = 0; i < panoClasses.Count; i++) { panoMarkers[i] = new OnlineMapsMarker(); panoMarkers[i].texture = panoIcon; panoMarkers[i].align = OnlineMapsAlign.Center; panoMarkers[i].label = panoClasses[i].PanoName; panoMarkers[i].range = new OnlineMapsRange(15,20); panoMarkers[i].position.x = mapDatum.x + (panoClasses[i].Position.x / 1000f); panoMarkers[i].position.y = mapDatum.y + (panoClasses[i].Position.y / 1000f); } mapInstance.AddMarkers(panoMarkers); mapInstance.OnChangeZoom += OnChangeZoom; OnChangeZoom(); } private void Update() { if(markersTransform == null) { markersTransform = mapInstance.transform.FindChild("Markers"); if(markersTransform != null) UpdatePosition(); } else if (_y != y) UpdatePosition(); } private void UpdatePosition() { _y = y; Vector3 position = markersTransform.localPosition; position.y = y; markersTransform.localPosition = position; } private void OnChangeZoom() { float originalScale = 1 << defaultZoom; float currentScale = 1 << OnlineMaps.instance.zoom; for(int i = 0; i < panoMarkers.Length; i++) { panoMarkers[i].scale = currentScale / originalScale; } } }