//------------------------------------------------------------------------------
// <auto-generated>
//     This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator
//     version 1.13.1
//     from Assets/Scripts/Player.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;

/// <summary>
/// Provides programmatic access to <see cref="InputActionAsset" />, <see cref="InputActionMap" />, <see cref="InputAction" /> and <see cref="InputControlScheme" /> instances defined in asset "Assets/Scripts/Player.inputactions".
/// </summary>
/// <remarks>
/// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified.
/// </remarks>
/// <example>
/// <code>
/// using namespace UnityEngine;
/// using UnityEngine.InputSystem;
///
/// // Example of using an InputActionMap named "Player" from a UnityEngine.MonoBehaviour implementing callback interface.
/// public class Example : MonoBehaviour, MyActions.IPlayerActions
/// {
///     private MyActions_Actions m_Actions;                  // Source code representation of asset.
///     private MyActions_Actions.PlayerActions m_Player;     // Source code representation of action map.
///
///     void Awake()
///     {
///         m_Actions = new MyActions_Actions();              // Create asset object.
///         m_Player = m_Actions.Player;                      // Extract action map object.
///         m_Player.AddCallbacks(this);                      // Register callback interface IPlayerActions.
///     }
///
///     void OnDestroy()
///     {
///         m_Actions.Dispose();                              // Destroy asset object.
///     }
///
///     void OnEnable()
///     {
///         m_Player.Enable();                                // Enable all actions within map.
///     }
///
///     void OnDisable()
///     {
///         m_Player.Disable();                               // Disable all actions within map.
///     }
///
///     #region Interface implementation of MyActions.IPlayerActions
///
///     // Invoked when "Move" action is either started, performed or canceled.
///     public void OnMove(InputAction.CallbackContext context)
///     {
///         Debug.Log($"OnMove: {context.ReadValue&lt;Vector2&gt;()}");
///     }
///
///     // Invoked when "Attack" action is either started, performed or canceled.
///     public void OnAttack(InputAction.CallbackContext context)
///     {
///         Debug.Log($"OnAttack: {context.ReadValue&lt;float&gt;()}");
///     }
///
///     #endregion
/// }
/// </code>
/// </example>
public partial class @Player: IInputActionCollection2, IDisposable
{
    /// <summary>
    /// Provides access to the underlying asset instance.
    /// </summary>
    public InputActionAsset asset { get; }

    /// <summary>
    /// Constructs a new instance.
    /// </summary>
    public @Player()
    {
        asset = InputActionAsset.FromJson(@"{
    ""name"": ""Player"",
    ""maps"": [
        {
            ""name"": ""inter"",
            ""id"": ""7944e92f-9f33-4c11-bdd1-0b930584937a"",
            ""actions"": [
                {
                    ""name"": ""Interact"",
                    ""type"": ""Button"",
                    ""id"": ""4fd40c6a-606d-4b41-b4e4-203a3a7e03e4"",
                    ""expectedControlType"": """",
                    ""processors"": """",
                    ""interactions"": """",
                    ""initialStateCheck"": false
                }
            ],
            ""bindings"": [
                {
                    ""name"": """",
                    ""id"": ""38c9b04b-2a05-416c-9cdd-8a602528942b"",
                    ""path"": ""<Keyboard>/f"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Interact"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": false
                }
            ]
        },
        {
            ""name"": ""Flying car"",
            ""id"": ""7c3ddac9-8f9c-4bcd-ab4a-b94406678adf"",
            ""actions"": [
                {
                    ""name"": ""Driving"",
                    ""type"": ""PassThrough"",
                    ""id"": ""f564e338-1912-4c16-989f-3a091fa8ee7b"",
                    ""expectedControlType"": ""Vector3"",
                    ""processors"": """",
                    ""interactions"": ""Press,Hold"",
                    ""initialStateCheck"": true
                },
                {
                    ""name"": ""Braking"",
                    ""type"": ""Button"",
                    ""id"": ""883fbc82-ad19-4829-b380-d68bfcb5a2d8"",
                    ""expectedControlType"": """",
                    ""processors"": """",
                    ""interactions"": """",
                    ""initialStateCheck"": true
                }
            ],
            ""bindings"": [
                {
                    ""name"": ""3D Vector"",
                    ""id"": ""6c7e4dc5-9f71-4f54-bee2-6f32440be71a"",
                    ""path"": ""3DVector"",
                    ""interactions"": """",
                    ""processors"": ""NormalizeVector3"",
                    ""groups"": """",
                    ""action"": ""Driving"",
                    ""isComposite"": true,
                    ""isPartOfComposite"": false
                },
                {
                    ""name"": ""Forward"",
                    ""id"": ""a8579c4c-2bda-41d9-9cbc-9bf2ebcb1238"",
                    ""path"": ""<Keyboard>/w"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Driving"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": true
                },
                {
                    ""name"": ""Backward"",
                    ""id"": ""cf873b31-a08f-4fd7-be94-619ac4cabd16"",
                    ""path"": ""<Keyboard>/s"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Driving"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": true
                },
                {
                    ""name"": ""left"",
                    ""id"": ""bae256dd-258a-4366-a80f-c262d5fc7fb1"",
                    ""path"": ""<Keyboard>/a"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Driving"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": true
                },
                {
                    ""name"": ""right"",
                    ""id"": ""345c6200-ffb7-41f0-8860-a6a7edd1a4f9"",
                    ""path"": ""<Keyboard>/d"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Driving"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": true
                },
                {
                    ""name"": ""Up"",
                    ""id"": ""30f3668b-2a1e-4fe2-b544-43d71ed7dc83"",
                    ""path"": ""<Keyboard>/space"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Driving"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": true
                },
                {
                    ""name"": ""Down"",
                    ""id"": ""27700f36-5b49-494c-9e4b-f7ce6d499197"",
                    ""path"": ""<Keyboard>/shift"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Driving"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": true
                },
                {
                    ""name"": """",
                    ""id"": ""37fd1c06-b88a-44cc-aba6-0aec1e12af15"",
                    ""path"": ""<Keyboard>/z"",
                    ""interactions"": """",
                    ""processors"": """",
                    ""groups"": """",
                    ""action"": ""Braking"",
                    ""isComposite"": false,
                    ""isPartOfComposite"": false
                }
            ]
        }
    ],
    ""controlSchemes"": []
}");
        // inter
        m_inter = asset.FindActionMap("inter", throwIfNotFound: true);
        m_inter_Interact = m_inter.FindAction("Interact", throwIfNotFound: true);
        // Flying car
        m_Flyingcar = asset.FindActionMap("Flying car", throwIfNotFound: true);
        m_Flyingcar_Driving = m_Flyingcar.FindAction("Driving", throwIfNotFound: true);
        m_Flyingcar_Braking = m_Flyingcar.FindAction("Braking", throwIfNotFound: true);
    }

    ~@Player()
    {
        UnityEngine.Debug.Assert(!m_inter.enabled, "This will cause a leak and performance issues, Player.inter.Disable() has not been called.");
        UnityEngine.Debug.Assert(!m_Flyingcar.enabled, "This will cause a leak and performance issues, Player.Flyingcar.Disable() has not been called.");
    }

    /// <summary>
    /// Destroys this asset and all associated <see cref="InputAction"/> instances.
    /// </summary>
    public void Dispose()
    {
        UnityEngine.Object.Destroy(asset);
    }

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.bindingMask" />
    public InputBinding? bindingMask
    {
        get => asset.bindingMask;
        set => asset.bindingMask = value;
    }

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.devices" />
    public ReadOnlyArray<InputDevice>? devices
    {
        get => asset.devices;
        set => asset.devices = value;
    }

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.controlSchemes" />
    public ReadOnlyArray<InputControlScheme> controlSchemes => asset.controlSchemes;

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.Contains(InputAction)" />
    public bool Contains(InputAction action)
    {
        return asset.Contains(action);
    }

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.GetEnumerator()" />
    public IEnumerator<InputAction> GetEnumerator()
    {
        return asset.GetEnumerator();
    }

    /// <inheritdoc cref="IEnumerable.GetEnumerator()" />
    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.Enable()" />
    public void Enable()
    {
        asset.Enable();
    }

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.Disable()" />
    public void Disable()
    {
        asset.Disable();
    }

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.bindings" />
    public IEnumerable<InputBinding> bindings => asset.bindings;

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.FindAction(string, bool)" />
    public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false)
    {
        return asset.FindAction(actionNameOrId, throwIfNotFound);
    }

    /// <inheritdoc cref="UnityEngine.InputSystem.InputActionAsset.FindBinding(InputBinding, out InputAction)" />
    public int FindBinding(InputBinding bindingMask, out InputAction action)
    {
        return asset.FindBinding(bindingMask, out action);
    }

    // inter
    private readonly InputActionMap m_inter;
    private List<IInterActions> m_InterActionsCallbackInterfaces = new List<IInterActions>();
    private readonly InputAction m_inter_Interact;
    /// <summary>
    /// Provides access to input actions defined in input action map "inter".
    /// </summary>
    public struct InterActions
    {
        private @Player m_Wrapper;

        /// <summary>
        /// Construct a new instance of the input action map wrapper class.
        /// </summary>
        public InterActions(@Player wrapper) { m_Wrapper = wrapper; }
        /// <summary>
        /// Provides access to the underlying input action "inter/Interact".
        /// </summary>
        public InputAction @Interact => m_Wrapper.m_inter_Interact;
        /// <summary>
        /// Provides access to the underlying input action map instance.
        /// </summary>
        public InputActionMap Get() { return m_Wrapper.m_inter; }
        /// <inheritdoc cref="UnityEngine.InputSystem.InputActionMap.Enable()" />
        public void Enable() { Get().Enable(); }
        /// <inheritdoc cref="UnityEngine.InputSystem.InputActionMap.Disable()" />
        public void Disable() { Get().Disable(); }
        /// <inheritdoc cref="UnityEngine.InputSystem.InputActionMap.enabled" />
        public bool enabled => Get().enabled;
        /// <summary>
        /// Implicitly converts an <see ref="InterActions" /> to an <see ref="InputActionMap" /> instance.
        /// </summary>
        public static implicit operator InputActionMap(InterActions set) { return set.Get(); }
        /// <summary>
        /// Adds <see cref="InputAction.started"/>, <see cref="InputAction.performed"/> and <see cref="InputAction.canceled"/> callbacks provided via <param cref="instance" /> on all input actions contained in this map.
        /// </summary>
        /// <param name="instance">Callback instance.</param>
        /// <remarks>
        /// If <paramref name="instance" /> is <c>null</c> or <paramref name="instance"/> have already been added this method does nothing.
        /// </remarks>
        /// <seealso cref="InterActions" />
        public void AddCallbacks(IInterActions instance)
        {
            if (instance == null || m_Wrapper.m_InterActionsCallbackInterfaces.Contains(instance)) return;
            m_Wrapper.m_InterActionsCallbackInterfaces.Add(instance);
            @Interact.started += instance.OnInteract;
            @Interact.performed += instance.OnInteract;
            @Interact.canceled += instance.OnInteract;
        }

        /// <summary>
        /// Removes <see cref="InputAction.started"/>, <see cref="InputAction.performed"/> and <see cref="InputAction.canceled"/> callbacks provided via <param cref="instance" /> on all input actions contained in this map.
        /// </summary>
        /// <remarks>
        /// Calling this method when <paramref name="instance" /> have not previously been registered has no side-effects.
        /// </remarks>
        /// <seealso cref="InterActions" />
        private void UnregisterCallbacks(IInterActions instance)
        {
            @Interact.started -= instance.OnInteract;
            @Interact.performed -= instance.OnInteract;
            @Interact.canceled -= instance.OnInteract;
        }

        /// <summary>
        /// Unregisters <param cref="instance" /> and unregisters all input action callbacks via <see cref="InterActions.UnregisterCallbacks(IInterActions)" />.
        /// </summary>
        /// <seealso cref="InterActions.UnregisterCallbacks(IInterActions)" />
        public void RemoveCallbacks(IInterActions instance)
        {
            if (m_Wrapper.m_InterActionsCallbackInterfaces.Remove(instance))
                UnregisterCallbacks(instance);
        }

        /// <summary>
        /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via <param cref="instance" />.
        /// </summary>
        /// <remarks>
        /// If <paramref name="instance" /> is <c>null</c>, calling this method will only unregister all existing callbacks but not register any new callbacks.
        /// </remarks>
        /// <seealso cref="InterActions.AddCallbacks(IInterActions)" />
        /// <seealso cref="InterActions.RemoveCallbacks(IInterActions)" />
        /// <seealso cref="InterActions.UnregisterCallbacks(IInterActions)" />
        public void SetCallbacks(IInterActions instance)
        {
            foreach (var item in m_Wrapper.m_InterActionsCallbackInterfaces)
                UnregisterCallbacks(item);
            m_Wrapper.m_InterActionsCallbackInterfaces.Clear();
            AddCallbacks(instance);
        }
    }
    /// <summary>
    /// Provides a new <see cref="InterActions" /> instance referencing this action map.
    /// </summary>
    public InterActions @inter => new InterActions(this);

    // Flying car
    private readonly InputActionMap m_Flyingcar;
    private List<IFlyingcarActions> m_FlyingcarActionsCallbackInterfaces = new List<IFlyingcarActions>();
    private readonly InputAction m_Flyingcar_Driving;
    private readonly InputAction m_Flyingcar_Braking;
    /// <summary>
    /// Provides access to input actions defined in input action map "Flying car".
    /// </summary>
    public struct FlyingcarActions
    {
        private @Player m_Wrapper;

        /// <summary>
        /// Construct a new instance of the input action map wrapper class.
        /// </summary>
        public FlyingcarActions(@Player wrapper) { m_Wrapper = wrapper; }
        /// <summary>
        /// Provides access to the underlying input action "Flyingcar/Driving".
        /// </summary>
        public InputAction @Driving => m_Wrapper.m_Flyingcar_Driving;
        /// <summary>
        /// Provides access to the underlying input action "Flyingcar/Braking".
        /// </summary>
        public InputAction @Braking => m_Wrapper.m_Flyingcar_Braking;
        /// <summary>
        /// Provides access to the underlying input action map instance.
        /// </summary>
        public InputActionMap Get() { return m_Wrapper.m_Flyingcar; }
        /// <inheritdoc cref="UnityEngine.InputSystem.InputActionMap.Enable()" />
        public void Enable() { Get().Enable(); }
        /// <inheritdoc cref="UnityEngine.InputSystem.InputActionMap.Disable()" />
        public void Disable() { Get().Disable(); }
        /// <inheritdoc cref="UnityEngine.InputSystem.InputActionMap.enabled" />
        public bool enabled => Get().enabled;
        /// <summary>
        /// Implicitly converts an <see ref="FlyingcarActions" /> to an <see ref="InputActionMap" /> instance.
        /// </summary>
        public static implicit operator InputActionMap(FlyingcarActions set) { return set.Get(); }
        /// <summary>
        /// Adds <see cref="InputAction.started"/>, <see cref="InputAction.performed"/> and <see cref="InputAction.canceled"/> callbacks provided via <param cref="instance" /> on all input actions contained in this map.
        /// </summary>
        /// <param name="instance">Callback instance.</param>
        /// <remarks>
        /// If <paramref name="instance" /> is <c>null</c> or <paramref name="instance"/> have already been added this method does nothing.
        /// </remarks>
        /// <seealso cref="FlyingcarActions" />
        public void AddCallbacks(IFlyingcarActions instance)
        {
            if (instance == null || m_Wrapper.m_FlyingcarActionsCallbackInterfaces.Contains(instance)) return;
            m_Wrapper.m_FlyingcarActionsCallbackInterfaces.Add(instance);
            @Driving.started += instance.OnDriving;
            @Driving.performed += instance.OnDriving;
            @Driving.canceled += instance.OnDriving;
            @Braking.started += instance.OnBraking;
            @Braking.performed += instance.OnBraking;
            @Braking.canceled += instance.OnBraking;
        }

        /// <summary>
        /// Removes <see cref="InputAction.started"/>, <see cref="InputAction.performed"/> and <see cref="InputAction.canceled"/> callbacks provided via <param cref="instance" /> on all input actions contained in this map.
        /// </summary>
        /// <remarks>
        /// Calling this method when <paramref name="instance" /> have not previously been registered has no side-effects.
        /// </remarks>
        /// <seealso cref="FlyingcarActions" />
        private void UnregisterCallbacks(IFlyingcarActions instance)
        {
            @Driving.started -= instance.OnDriving;
            @Driving.performed -= instance.OnDriving;
            @Driving.canceled -= instance.OnDriving;
            @Braking.started -= instance.OnBraking;
            @Braking.performed -= instance.OnBraking;
            @Braking.canceled -= instance.OnBraking;
        }

        /// <summary>
        /// Unregisters <param cref="instance" /> and unregisters all input action callbacks via <see cref="FlyingcarActions.UnregisterCallbacks(IFlyingcarActions)" />.
        /// </summary>
        /// <seealso cref="FlyingcarActions.UnregisterCallbacks(IFlyingcarActions)" />
        public void RemoveCallbacks(IFlyingcarActions instance)
        {
            if (m_Wrapper.m_FlyingcarActionsCallbackInterfaces.Remove(instance))
                UnregisterCallbacks(instance);
        }

        /// <summary>
        /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via <param cref="instance" />.
        /// </summary>
        /// <remarks>
        /// If <paramref name="instance" /> is <c>null</c>, calling this method will only unregister all existing callbacks but not register any new callbacks.
        /// </remarks>
        /// <seealso cref="FlyingcarActions.AddCallbacks(IFlyingcarActions)" />
        /// <seealso cref="FlyingcarActions.RemoveCallbacks(IFlyingcarActions)" />
        /// <seealso cref="FlyingcarActions.UnregisterCallbacks(IFlyingcarActions)" />
        public void SetCallbacks(IFlyingcarActions instance)
        {
            foreach (var item in m_Wrapper.m_FlyingcarActionsCallbackInterfaces)
                UnregisterCallbacks(item);
            m_Wrapper.m_FlyingcarActionsCallbackInterfaces.Clear();
            AddCallbacks(instance);
        }
    }
    /// <summary>
    /// Provides a new <see cref="FlyingcarActions" /> instance referencing this action map.
    /// </summary>
    public FlyingcarActions @Flyingcar => new FlyingcarActions(this);
    /// <summary>
    /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "inter" which allows adding and removing callbacks.
    /// </summary>
    /// <seealso cref="InterActions.AddCallbacks(IInterActions)" />
    /// <seealso cref="InterActions.RemoveCallbacks(IInterActions)" />
    public interface IInterActions
    {
        /// <summary>
        /// Method invoked when associated input action "Interact" is either <see cref="UnityEngine.InputSystem.InputAction.started" />, <see cref="UnityEngine.InputSystem.InputAction.performed" /> or <see cref="UnityEngine.InputSystem.InputAction.canceled" />.
        /// </summary>
        /// <seealso cref="UnityEngine.InputSystem.InputAction.started" />
        /// <seealso cref="UnityEngine.InputSystem.InputAction.performed" />
        /// <seealso cref="UnityEngine.InputSystem.InputAction.canceled" />
        void OnInteract(InputAction.CallbackContext context);
    }
    /// <summary>
    /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "Flying car" which allows adding and removing callbacks.
    /// </summary>
    /// <seealso cref="FlyingcarActions.AddCallbacks(IFlyingcarActions)" />
    /// <seealso cref="FlyingcarActions.RemoveCallbacks(IFlyingcarActions)" />
    public interface IFlyingcarActions
    {
        /// <summary>
        /// Method invoked when associated input action "Driving" is either <see cref="UnityEngine.InputSystem.InputAction.started" />, <see cref="UnityEngine.InputSystem.InputAction.performed" /> or <see cref="UnityEngine.InputSystem.InputAction.canceled" />.
        /// </summary>
        /// <seealso cref="UnityEngine.InputSystem.InputAction.started" />
        /// <seealso cref="UnityEngine.InputSystem.InputAction.performed" />
        /// <seealso cref="UnityEngine.InputSystem.InputAction.canceled" />
        void OnDriving(InputAction.CallbackContext context);
        /// <summary>
        /// Method invoked when associated input action "Braking" is either <see cref="UnityEngine.InputSystem.InputAction.started" />, <see cref="UnityEngine.InputSystem.InputAction.performed" /> or <see cref="UnityEngine.InputSystem.InputAction.canceled" />.
        /// </summary>
        /// <seealso cref="UnityEngine.InputSystem.InputAction.started" />
        /// <seealso cref="UnityEngine.InputSystem.InputAction.performed" />
        /// <seealso cref="UnityEngine.InputSystem.InputAction.canceled" />
        void OnBraking(InputAction.CallbackContext context);
    }
}
