123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- using System;
- using UnityEditor;
- using UnityEditor.AnimatedValues;
- using UnityEngine;
- namespace EnhancedHierarchy {
- public struct GUIBackgroundColor : IDisposable {
- private readonly Color before;
- public GUIBackgroundColor(Color color) {
- before = GUI.backgroundColor;
- GUI.backgroundColor = color;
- }
- public void Dispose() {
- GUI.backgroundColor = before;
- }
- }
- public struct GUIContentColor : IDisposable {
- private readonly Color before;
- public GUIContentColor(Color color) {
- before = GUI.contentColor;
- GUI.contentColor = color;
- }
- public void Dispose() {
- GUI.contentColor = before;
- }
- }
- public struct GUIColor : IDisposable {
- private readonly Color before;
- public GUIColor(Color color) {
- before = GUI.color;
- GUI.color = color;
- }
- public GUIColor(Color color, float alpha) {
- before = GUI.color;
- color.a = alpha;
- GUI.color = color;
- }
- public void Dispose() {
- GUI.color = before;
- }
- }
- public sealed class GUIIndent : IDisposable {
- public GUIIndent() {
- EditorGUI.indentLevel++;
- }
- public GUIIndent(string label) {
- EditorGUILayout.LabelField(label);
- EditorGUI.indentLevel++;
- }
- public void Dispose() {
- EditorGUI.indentLevel--;
- EditorGUILayout.Separator();
- }
- }
- public struct GUIEnabled : IDisposable {
- private readonly bool before;
- public GUIEnabled(bool enabled) {
- before = GUI.enabled;
- GUI.enabled = before && enabled;
- }
- public void Dispose() {
- GUI.enabled = before;
- }
- }
- public sealed class GUIFade : IDisposable {
- private AnimBool anim;
- public bool Visible { get; private set; }
- public GUIFade() {
- Visible = true;
- }
- public void SetTarget(bool target) {
- if (anim == null) {
- anim = new AnimBool(target);
- anim.valueChanged.AddListener(() => {
- if (EditorWindow.focusedWindow)
- EditorWindow.focusedWindow.Repaint();
- });
- }
- anim.target = target;
- Visible = EditorGUILayout.BeginFadeGroup(anim.faded);
- }
- public void Dispose() {
- EditorGUILayout.EndFadeGroup();
- }
- }
- }
|