using UnityEngine;
using UnityEngine.XR;

namespace EventsAppQuest.Presentation
{
    /// <summary>
    /// Driver simples de pose para o HMD usando InputTracking.
    /// É útil quando a cena não tem um XR Origin/rig completo ainda configurado no Unity.
    /// 
    /// Em fallback/editor, não faz nada.
    /// </summary>
    public class QuestHMDPoseDriver : MonoBehaviour
    {
        [Tooltip("Quando true, só aplica pose se runtime estiver em RealXR.")]
        [SerializeField] private bool _onlyWhenRealXR = true;

        private Transform _t;

        private void Awake()
        {
            _t = transform;
        }

        private void Update()
        {
            if (_t == null) return;

            if (_onlyWhenRealXR)
            {
                var mode = QuestXRRuntimeBootstrap.CachedStatus?.RuntimeMode ?? QuestPresentationRuntimeMode.EditorFallback;
                if (mode != QuestPresentationRuntimeMode.RealXR)
                    return;
            }

            try
            {
                // Local pose do nó Head.
                var localPos = InputTracking.GetLocalPosition(XRNode.Head);
                var localRot = InputTracking.GetLocalRotation(XRNode.Head);
                _t.localPosition = localPos;
                _t.localRotation = localRot;
            }
            catch
            {
                // ignore
            }
        }
    }
}

