47 lines
1.4 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|
|
} |