//------------------------------------------------------------------------------
// <auto-generated>
//     This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator
//     version 1.7.0
//     from Assets/Controls.inputactions
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Utilities;

public partial class @Controls: IInputActionCollection2, IDisposable
{
    public InputActionAsset asset { get; }
    public @Controls()
    {
        asset = InputActionAsset.FromJson(@"{
    ""name"": ""Controls"",
    ""maps"": [
        {
            ""name"": ""LeftHand"",
            ""id"": ""9f97d65a-2cda-461b-bcf2-73fa2879bada"",
            ""actions"": [
                {
                    ""name"": ""WeaponSelect"",
                    ""type"": ""Button"",
                    ""id"": ""69a1f406-fd3d-40c8-8127-4b3acf12c958"",
                    ""expectedControlType"": ""Button"",
                    ""processors"": """",
                    ""interactions"": """",
                    ""initialStateCheck"": false
                },
                {
                    ""name"": ""Fire"",
                    ""type"": ""Button"",
                    ""id"": ""3367d514-b128-4da4-974b-ca1b26de64ed"",
                    ""expectedControlType"": ""Button"",
                    ""processors"": """",
                    ""interactions"": """",
                    ""initialStateCheck"": false
                }
            ],
            ""bindings"": [
                {
                    ""name"": """",
                    ""id"": ""7c6f7cf5-4b29-491b-90bc-31f490c3e106"",
                    ""path"": ""<XRController>{LeftHand}/{PrimaryButton}"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""WeaponSelect"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": false
                },
                {
                    ""name"": """",
                    ""id"": ""ff708dab-cbb4-4136-803d-b4c631c82504"",
                    ""path"": ""<XRController>{LeftHand}/{TriggerButton}"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Fire"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": false
                }
            ]
        },
        {
            ""name"": ""RightHand"",
            ""id"": ""69815203-3dcb-4353-83df-252f4d44f6fe"",
            ""actions"": [
                {
                    ""name"": ""WeaponSelect"",
                    ""type"": ""Button"",
                    ""id"": ""465c57c7-2353-4aaa-a724-f3aff82ee19b"",
                    ""expectedControlType"": ""Button"",
                    ""processors"": """",
                    ""interactions"": """",
                    ""initialStateCheck"": false
                },
                {
                    ""name"": ""Fire"",
                    ""type"": ""Button"",
                    ""id"": ""ffd1f211-ae53-47a3-8045-f91fb0cf578a"",
                    ""expectedControlType"": ""Button"",
                    ""processors"": """",
                    ""interactions"": """",
                    ""initialStateCheck"": false
                }
            ],
            ""bindings"": [
                {
                    ""name"": """",
                    ""id"": ""b8d8da3f-a26a-4eed-877b-d83e037604b2"",
                    ""path"": ""<XRController>{RightHand}/{PrimaryButton}"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""WeaponSelect"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": false
                },
                {
                    ""name"": """",
                    ""id"": ""800a3b7b-2fd8-4f9a-9f68-714a032d2bc4"",
                    ""path"": ""<XRController>{RightHand}/{TriggerButton}"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Fire"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": false
                }
            ]
        }
    ],
    ""controlSchemes"": []
}");
        // LeftHand
        m_LeftHand = asset.FindActionMap("LeftHand", throwIfNotFound: true);
        m_LeftHand_WeaponSelect = m_LeftHand.FindAction("WeaponSelect", throwIfNotFound: true);
        m_LeftHand_Fire = m_LeftHand.FindAction("Fire", throwIfNotFound: true);
        // RightHand
        m_RightHand = asset.FindActionMap("RightHand", throwIfNotFound: true);
        m_RightHand_WeaponSelect = m_RightHand.FindAction("WeaponSelect", throwIfNotFound: true);
        m_RightHand_Fire = m_RightHand.FindAction("Fire", throwIfNotFound: true);
    }

    public void Dispose()
    {
        UnityEngine.Object.Destroy(asset);
    }

    public InputBinding? bindingMask
    {
        get => asset.bindingMask;
        set => asset.bindingMask = value;
    }

    public ReadOnlyArray<InputDevice>? devices
    {
        get => asset.devices;
        set => asset.devices = value;
    }

    public ReadOnlyArray<InputControlScheme> controlSchemes => asset.controlSchemes;

    public bool Contains(InputAction action)
    {
        return asset.Contains(action);
    }

    public IEnumerator<InputAction> GetEnumerator()
    {
        return asset.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }

    public void Enable()
    {
        asset.Enable();
    }

    public void Disable()
    {
        asset.Disable();
    }

    public IEnumerable<InputBinding> bindings => asset.bindings;

    public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false)
    {
        return asset.FindAction(actionNameOrId, throwIfNotFound);
    }

    public int FindBinding(InputBinding bindingMask, out InputAction action)
    {
        return asset.FindBinding(bindingMask, out action);
    }

    // LeftHand
    private readonly InputActionMap m_LeftHand;
    private List<ILeftHandActions> m_LeftHandActionsCallbackInterfaces = new List<ILeftHandActions>();
    private readonly InputAction m_LeftHand_WeaponSelect;
    private readonly InputAction m_LeftHand_Fire;
    public struct LeftHandActions
    {
        private @Controls m_Wrapper;
        public LeftHandActions(@Controls wrapper) { m_Wrapper = wrapper; }
        public InputAction @WeaponSelect => m_Wrapper.m_LeftHand_WeaponSelect;
        public InputAction @Fire => m_Wrapper.m_LeftHand_Fire;
        public InputActionMap Get() { return m_Wrapper.m_LeftHand; }
        public void Enable() { Get().Enable(); }
        public void Disable() { Get().Disable(); }
        public bool enabled => Get().enabled;
        public static implicit operator InputActionMap(LeftHandActions set) { return set.Get(); }
        public void AddCallbacks(ILeftHandActions instance)
        {
            if (instance == null || m_Wrapper.m_LeftHandActionsCallbackInterfaces.Contains(instance)) return;
            m_Wrapper.m_LeftHandActionsCallbackInterfaces.Add(instance);
            @WeaponSelect.started += instance.OnWeaponSelect;
            @WeaponSelect.performed += instance.OnWeaponSelect;
            @WeaponSelect.canceled += instance.OnWeaponSelect;
            @Fire.started += instance.OnFire;
            @Fire.performed += instance.OnFire;
            @Fire.canceled += instance.OnFire;
        }

        private void UnregisterCallbacks(ILeftHandActions instance)
        {
            @WeaponSelect.started -= instance.OnWeaponSelect;
            @WeaponSelect.performed -= instance.OnWeaponSelect;
            @WeaponSelect.canceled -= instance.OnWeaponSelect;
            @Fire.started -= instance.OnFire;
            @Fire.performed -= instance.OnFire;
            @Fire.canceled -= instance.OnFire;
        }

        public void RemoveCallbacks(ILeftHandActions instance)
        {
            if (m_Wrapper.m_LeftHandActionsCallbackInterfaces.Remove(instance))
                UnregisterCallbacks(instance);
        }

        public void SetCallbacks(ILeftHandActions instance)
        {
            foreach (var item in m_Wrapper.m_LeftHandActionsCallbackInterfaces)
                UnregisterCallbacks(item);
            m_Wrapper.m_LeftHandActionsCallbackInterfaces.Clear();
            AddCallbacks(instance);
        }
    }
    public LeftHandActions @LeftHand => new LeftHandActions(this);

    // RightHand
    private readonly InputActionMap m_RightHand;
    private List<IRightHandActions> m_RightHandActionsCallbackInterfaces = new List<IRightHandActions>();
    private readonly InputAction m_RightHand_WeaponSelect;
    private readonly InputAction m_RightHand_Fire;
    public struct RightHandActions
    {
        private @Controls m_Wrapper;
        public RightHandActions(@Controls wrapper) { m_Wrapper = wrapper; }
        public InputAction @WeaponSelect => m_Wrapper.m_RightHand_WeaponSelect;
        public InputAction @Fire => m_Wrapper.m_RightHand_Fire;
        public InputActionMap Get() { return m_Wrapper.m_RightHand; }
        public void Enable() { Get().Enable(); }
        public void Disable() { Get().Disable(); }
        public bool enabled => Get().enabled;
        public static implicit operator InputActionMap(RightHandActions set) { return set.Get(); }
        public void AddCallbacks(IRightHandActions instance)
        {
            if (instance == null || m_Wrapper.m_RightHandActionsCallbackInterfaces.Contains(instance)) return;
            m_Wrapper.m_RightHandActionsCallbackInterfaces.Add(instance);
            @WeaponSelect.started += instance.OnWeaponSelect;
            @WeaponSelect.performed += instance.OnWeaponSelect;
            @WeaponSelect.canceled += instance.OnWeaponSelect;
            @Fire.started += instance.OnFire;
            @Fire.performed += instance.OnFire;
            @Fire.canceled += instance.OnFire;
        }

        private void UnregisterCallbacks(IRightHandActions instance)
        {
            @WeaponSelect.started -= instance.OnWeaponSelect;
            @WeaponSelect.performed -= instance.OnWeaponSelect;
            @WeaponSelect.canceled -= instance.OnWeaponSelect;
            @Fire.started -= instance.OnFire;
            @Fire.performed -= instance.OnFire;
            @Fire.canceled -= instance.OnFire;
        }

        public void RemoveCallbacks(IRightHandActions instance)
        {
            if (m_Wrapper.m_RightHandActionsCallbackInterfaces.Remove(instance))
                UnregisterCallbacks(instance);
        }

        public void SetCallbacks(IRightHandActions instance)
        {
            foreach (var item in m_Wrapper.m_RightHandActionsCallbackInterfaces)
                UnregisterCallbacks(item);
            m_Wrapper.m_RightHandActionsCallbackInterfaces.Clear();
            AddCallbacks(instance);
        }
    }
    public RightHandActions @RightHand => new RightHandActions(this);
    public interface ILeftHandActions
    {
        void OnWeaponSelect(InputAction.CallbackContext context);
        void OnFire(InputAction.CallbackContext context);
    }
    public interface IRightHandActions
    {
        void OnWeaponSelect(InputAction.CallbackContext context);
        void OnFire(InputAction.CallbackContext context);
    }
}
