You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/StompyRobot/SRF/Scripts/UI/ResponsiveEnable.cs

103 lines
2.8 KiB
C#

1 month ago
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;
}
}
}