namespace SRF.UI { using System; using Internal; using UnityEngine; [ExecuteInEditMode] [RequireComponent(typeof (RectTransform))] [AddComponentMenu(ComponentMenuPaths.ResponsiveEnable)] public class ResponsiveEnable : ResponsiveBase { public enum Modes { EnableAbove, EnableBelow } public Entry[] Entries = new Entry[0]; protected override void Refresh() { var rect = RectTransform.rect; for (var i = 0; i < Entries.Length; i++) { var e = Entries[i]; var enable = true; switch (e.Mode) { case Modes.EnableAbove: { if (e.ThresholdHeight > 0) { enable = rect.height >= e.ThresholdHeight && enable; } if (e.ThresholdWidth > 0) { enable = rect.width >= e.ThresholdWidth && enable; } break; } case Modes.EnableBelow: { if (e.ThresholdHeight > 0) { enable = rect.height <= e.ThresholdHeight && enable; } if (e.ThresholdWidth > 0) { enable = rect.width <= e.ThresholdWidth && enable; } break; } default: throw new IndexOutOfRangeException(); } if (e.GameObjects != null) { for (var j = 0; j < e.GameObjects.Length; j++) { var go = e.GameObjects[j]; if (go != null) { go.SetActive(enable); } } } if (e.Components != null) { for (var j = 0; j < e.Components.Length; j++) { var go = e.Components[j]; if (go != null) { go.enabled = enable; } } } } } [Serializable] public struct Entry { public Behaviour[] Components; public GameObject[] GameObjects; public Modes Mode; public float ThresholdHeight; public float ThresholdWidth; } } }