using Microsoft.MixedReality.Toolkit.Input;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class Envelopes : MonoBehaviour, IMixedRealityTouchHandler
{
    public List<GameObject> uiElements; // Liste f�r alle �bergeordneten UI-Elemente (TextMeshPro und Buttons)

    void Start()
    {
        SetElementsVisibility(false); // Initial unsichtbar
    }

    public void OnTouchStarted(HandTrackingInputEventData eventData)
    {
        SetElementsVisibility(true); // Sichtbar machen
    }

    public void OnTouchCompleted(HandTrackingInputEventData eventData)
    {
        SetElementsVisibility(false); // Wieder unsichtbar machen
    }

    public void OnTouchUpdated(HandTrackingInputEventData eventData) { }

    void SetElementsVisibility(bool isVisible)
    {
        foreach (var element in uiElements)
        {
            SetVisibilityRecursive(element, isVisible);
        }
    }

    void SetVisibilityRecursive(GameObject obj, bool isVisible)
    {
        // TextMeshPro-Komponente
        TextMeshPro textMeshPro = obj.GetComponent<TextMeshPro>();
        if (textMeshPro != null)
        {
            textMeshPro.color = new Color(textMeshPro.color.r, textMeshPro.color.g, textMeshPro.color.b, isVisible ? 1.0f : 0.0f);
        }

        // Renderer-Komponente (f�r andere visuelle Elemente)
        Renderer renderer = obj.GetComponent<Renderer>();
        if (renderer != null)
        {
            renderer.enabled = isVisible;
        }

        // Weitere UI-Komponenten
        var graphic = obj.GetComponent<UnityEngine.UI.Graphic>();
        if (graphic != null)
        {
            graphic.color = new Color(graphic.color.r, graphic.color.g, graphic.color.b, isVisible ? 1.0f : 0.0f);
        }

        // Rekursiv f�r alle Kinderobjekte
        foreach (Transform child in obj.transform)
        {
            SetVisibilityRecursive(child.gameObject, isVisible);
        }
    }
}