using System; using UnityEngine; public class OverlayLink : MonoBehaviour { public RectTransform OverlayParent { get { return this._overlays; } set { this._overlays = value; } } private void OnDestroy() { if (this._overlays != null) { UnityEngine.Object.Destroy(this._overlays.gameObject); } } private void Update() { if (this.CachedTransform.hasChanged) { this.UpdateOverlayPosition(); this.CachedTransform.hasChanged = false; } } private void OnEnable() { if (this._overlays != null && !this._overlays.gameObject.activeSelf) { this._overlays.gameObject.SetActive(true); } this.UpdateOverlayPosition(); } private void OnDisable() { if (this._overlays != null && this._overlays.gameObject.activeSelf) { this._overlays.gameObject.SetActive(false); } } public void UpdateOverlayPosition() { if (this._overlays != null) { Bounds bounds; if (this.CachedRenderer != null) { bounds = this.CachedRenderer.bounds; } else { if (!(this.CachedCollider != null)) { UnityEngine.Debug.LogError("Was unable to update overlay position becuase the object it is linked to has not Renderer or Collider2D."); return; } bounds = this.CachedCollider.bounds; } this._overlays.position = bounds.center; this._overlays.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, bounds.extents.x * 2f); this._overlays.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, bounds.extents.y * 2f); } } private Transform CachedTransform { get { if (this._transform == null) { this._transform = base.GetComponent(); } return this._transform; } } private Renderer CachedRenderer { get { if (this._renderer == null) { this._renderer = base.gameObject.GetComponent(); } return this._renderer; } } private Collider2D CachedCollider { get { if (this._collider == null) { this._collider = base.gameObject.GetComponent(); } return this._collider; } } private RectTransform _overlays; private Transform _transform; private Renderer _renderer; private Collider2D _collider; }