| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 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;
- }
- }
- }
|