using UnityEngine.XR.Interaction.Toolkit;
namespace UnityEngine.XR.Content.Interaction.Analytics
{
    /// 
    /// Class that connects the Socket Interactors station scene objects with their respective analytics events.
    /// 
    [AddComponentMenu("")]
    [DisallowMultipleComponent]
    class XrcSocketInteractorsStationAnalytics : MonoBehaviour
    {
        [Header("Socket Simple Object Substation")]
        [SerializeField]
        XRSocketInteractor m_SimpleSocket;
        [Header("Perler Machine")]
        [SerializeField]
        XRSocketInteractor m_BatterySlotSocket;
        [SerializeField]
        XRSocketInteractor[] m_InfinityPegSockets;
        [SerializeField]
        Transform m_GridCenter;
        void Start()
        {
            XrcAnalyticsUtils.Register(m_SimpleSocket, new ConnectSocketSimpleObject(), new DisconnectSocketSimpleObject());
            XrcAnalyticsUtils.Register(m_BatterySlotSocket, new ConnectPerlerMachineBattery());
            var grabPerlerBeadParameter = new GrabPerlerBead();
            foreach (var socket in m_InfinityPegSockets)
            {
                foreach (var interactable in socket.interactablesSelected)
                {
                    XrcAnalyticsUtils.Register(interactable as XRBaseInteractable, grabPerlerBeadParameter);
                }
                socket.selectEntered.AddListener(args => XrcAnalyticsUtils.Register(args.interactableObject as XRBaseInteractable, grabPerlerBeadParameter));
            }
            var connectPerlerBeadParameter = new ConnectPerlerBead();
            foreach (var gridSocket in m_GridCenter.GetComponentsInChildren())
                XrcAnalyticsUtils.Register(gridSocket, connectPerlerBeadParameter);
        }
    }
}