/* INFINITY CODE 2013-2019 */ /* http://www.infinity-code.com */ using UnityEngine; using UnityEngine.UI; /// /// Adjusts map size to fit screen. /// [AddComponentMenu("Infinity Code/Online Maps/Plugins/Adjust to Screen")] [OnlineMapsPlugin("Adjust to Screen", typeof(OnlineMapsControlBase))] public class OnlineMapsAdjustToScreen : MonoBehaviour { [Header("Recommended for 2D Controls.")] public bool halfSize = false; private int screenWidth; private int screenHeight; private void ResizeMap() { screenWidth = Screen.width; screenHeight = Screen.height; int width = screenWidth / 256 * 256; int height = screenHeight / 256 * 256; if (halfSize) { width = width / 512 * 256; height = height / 512 * 256; } if (screenWidth % 256 != 0) width += 256; if (screenHeight % 256 != 0) height += 256; int viewWidth = width; int viewHeight = height; if (halfSize) { viewWidth *= 2; viewHeight *= 2; } if (OnlineMapsControlBase.instance.resultIsTexture) { OnlineMapsUtils.Destroy(OnlineMapsControlBase.instance.activeTexture); if (OnlineMapsUIImageControl.instance != null) { OnlineMapsUtils.Destroy(GetComponent().sprite); } else if (OnlineMapsSpriteRendererControl.instance != null) { OnlineMapsUtils.Destroy(GetComponent().sprite); } Texture2D texture = new Texture2D(width, height, TextureFormat.RGB24, false); OnlineMaps.instance.SetTexture(texture); if (OnlineMapsUIRawImageControl.instance != null) { RectTransform rt = transform as RectTransform; rt.sizeDelta = new Vector2(viewWidth, viewHeight); } else if (OnlineMapsUIImageControl.instance != null) { RectTransform rt = transform as RectTransform; rt.sizeDelta = new Vector2(viewWidth, viewHeight); } else if (OnlineMapsSpriteRendererControl.instance != null) { GetComponent().size = new Vector3(viewWidth / 100f, viewHeight / 100f, 0.2f); } OnlineMaps.instance.RedrawImmediately(); } else if (OnlineMapsTileSetControl.instance != null) { OnlineMapsTileSetControl.instance.Resize(width, height, viewWidth, viewHeight); if (OnlineMapsTileSetControl.instance.activeCamera.orthographic) { OnlineMapsTileSetControl.instance.activeCamera.orthographicSize = screenHeight / 2f; } else { OnlineMapsCameraOrbit cameraOrbit = GetComponent(); if (cameraOrbit != null) cameraOrbit.distance = screenHeight * 0.8f; } } } private void Start() { ResizeMap(); } private void Update() { if (screenWidth != Screen.width || screenHeight != Screen.height) ResizeMap(); } }