You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
using UnityEngine.UI;
|
|
|
|
namespace UnityEngine.Rendering.UI
|
|
{
|
|
/// <summary>Foldout in the DebugMenu</summary>
|
|
[ExecuteAlways]
|
|
public class UIFoldout : Toggle
|
|
{
|
|
/// <summary>Contents inside the toggle</summary>
|
|
public GameObject content;
|
|
/// <summary>Arror in state opened</summary>
|
|
public GameObject arrowOpened;
|
|
/// <summary>Arror in state closed</summary>
|
|
public GameObject arrowClosed;
|
|
|
|
/// <summary>Start of this GameObject lifecicle</summary>
|
|
protected override void Start()
|
|
{
|
|
base.Start();
|
|
onValueChanged.AddListener(SetState);
|
|
SetState(isOn);
|
|
}
|
|
|
|
#pragma warning disable 108,114
|
|
void OnValidate()
|
|
{
|
|
SetState(isOn, false);
|
|
}
|
|
|
|
#pragma warning restore 108,114
|
|
|
|
/// <summary>Change the state of this foldout</summary>
|
|
/// <param name="state">The new State</param>
|
|
public void SetState(bool state)
|
|
{
|
|
SetState(state, true);
|
|
}
|
|
|
|
/// <summary>Change the state of this foldout</summary>
|
|
/// <param name="state">The new State</param>
|
|
/// <param name="rebuildLayout">If True, the layout will be rebuild</param>
|
|
public void SetState(bool state, bool rebuildLayout)
|
|
{
|
|
if (arrowOpened == null || arrowClosed == null || content == null)
|
|
return;
|
|
|
|
if (arrowOpened.activeSelf != state)
|
|
arrowOpened.SetActive(state);
|
|
|
|
if (arrowClosed.activeSelf == state)
|
|
arrowClosed.SetActive(!state);
|
|
|
|
if (content.activeSelf != state)
|
|
content.SetActive(state);
|
|
|
|
if (rebuildLayout)
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(transform.parent as RectTransform);
|
|
}
|
|
}
|
|
}
|