#if USING_MRTK3

using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using UnityEngine.Events;
using Microsoft.MixedReality.Toolkit.UX;

namespace SimplifyXR
{
    /// <summary>
    /// Initiates a sequence based on an interactable event trigger
    /// </summary>
    [DirectiveCategory(DirectiveCategories.Initiator, DirectiveSubCategory.Experimental, prettyName = "Button Interaction", directiveLibrary = DirectiveLibrary.MRTK3, directiveInfo = "This initiator starts a sequence when a <b>MRTK Pressable Button Event</b> is <b>detected.</b>")]

    public class MRTKPressableButtonInitiator : EventInitiator
    {
        public PressableButton pressableButton;

        public override List<KnobKeywords> ReceiveKeywords()
        {
            return new List<KnobKeywords>() { };
        }

        public override List<KnobKeywords> SendKeywords()
        {
            return new List<KnobKeywords>() { };
        }

        protected new void Awake()
        {
            base.Awake();
            if (enabled) RegisterEvents(true);
        }

        protected new void OnDestroy()
        {
            base.OnDestroy();
            RegisterEvents(false);
        }

#region interactor event handlers

        void RegisterEventHandler(PressableButton button, bool register = true)
        {
            if (button != null)
            {
                if (register) button.OnClicked.AddListener(SingleTypeInitiate);
                if (!register) button.OnClicked.RemoveListener(SingleTypeInitiate);  
            }
        }
#endregion

        protected void RegisterEvents(bool register)
        {  
            RegisterEventHandler(pressableButton , register);
        }


        public void SingleTypeInitiate()
        {
            //If we are listening, go ahead and process the event
            SendData();
            base.Initiate();
        }

        void SendData()
        {
            AddPassableData(new List<string> {}, new List<object> {});
        }

    }

   
}
#endif