namespace EventsAppQuest.Core
{
    /// <summary>
    /// Estado do gaze-like aiming: se está activo, alvo actual, tempo de estabilidade e se já passou o limiar.
    /// Usado pelo QuestGazeLikeController e pela sessão para feedback visual e prioridade no targeting.
    /// </summary>
    public class QuestGazeLikeState
    {
        /// <summary>Se true, o gaze-like está a receber input (ex.: direção câmera/raycast) e a acumular estabilidade.</summary>
        public bool IsActive { get; set; }

        /// <summary>Id do alvo actualmente sob o "gaze" (centro/forward da câmera).</summary>
        public string CurrentGazeTargetId { get; set; }

        /// <summary>Tempo em segundos que o mesmo alvo permanece no centro/forward.</summary>
        public float StabilityElapsedSeconds { get; set; }

        /// <summary>Tempo em segundos necessário para considerar o gaze estável (configurável).</summary>
        public float RequiredStabilitySeconds { get; set; }

        /// <summary>Se true, o tempo de estabilidade foi atingido e o alvo pode ser usado para hover/dwell.</summary>
        public bool IsStableEnough { get; set; }

        /// <summary>Descrição breve da origem (ex.: "CameraForward", "XRRaycast").</summary>
        public string SourceDescription { get; set; }
    }
}
