Files
beyond/Assets/Scripts/UI/SubmenuElementsContainer.cs
2024-11-20 15:21:28 +01:00

47 lines
1.4 KiB
C#

using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using System.Linq;
namespace Beyond
{
public class SubmenuElementsContainer : MonoBehaviour
{
public GameObject parentObject;
public List<CanvasGroup> interactableCanvas = new List<CanvasGroup>();
[Button]
public void StoreCanvasGroup(int maxDepth)
{
interactableCanvas = new List<CanvasGroup>();
AddCanvasGroupFromChildren(transform, maxDepth);
}
private void AddCanvasGroupFromChildren(Transform parentTransform, int maxDepth)
{
List<Transform> childTransforms = new List<Transform>();
CanvasGroup canvaToAdd = new CanvasGroup();
for (int i = 0; i < parentTransform.childCount; i++)
{
Transform childTransform = parentTransform.GetChild(i);
childTransforms.Add(childTransform);
canvaToAdd = null;
canvaToAdd = childTransform.gameObject.GetComponent<CanvasGroup>();
if (canvaToAdd)
{
interactableCanvas.Add(canvaToAdd);
}
}
if (maxDepth > 0)
{
maxDepth--;
childTransforms.ForEach(child => AddCanvasGroupFromChildren(child, maxDepth));
}
}
}
}