public static void RemoveBindingOverrides(this InputActionMap actionMap, IEnumerable <InputBinding> overrides) { if (actionMap == null) { throw new ArgumentNullException("actionMap"); } actionMap.ThrowIfModifyingBindingsIsNotAllowed(); foreach (var binding in overrides) { RemoveBindingOverride(actionMap, binding); } }
private static void RemoveBindingOverride(this InputActionMap actionMap, InputBinding bindingOverride) { if (actionMap == null) { throw new ArgumentNullException("actionMap"); } actionMap.ThrowIfModifyingBindingsIsNotAllowed(); bindingOverride.overridePath = null; bindingOverride.overrideInteractions = null; // Simply apply but with a null binding. ApplyBindingOverride(actionMap, bindingOverride); }
public static BindingSyntax AddBinding(this InputActionMap actionMap, InputBinding binding) { if (actionMap == null) { throw new ArgumentNullException(nameof(actionMap)); } if (string.IsNullOrEmpty(binding.path)) { throw new ArgumentException("Binding path cannot be null or empty", nameof(binding)); } actionMap.ThrowIfModifyingBindingsIsNotAllowed(); var bindingIndex = AddBindingInternal(actionMap, binding); return(new BindingSyntax(actionMap, null, bindingIndex)); }
/// <summary> /// Restore all bindings in the map to their defaults. /// </summary> /// <param name="actionMap">Action map to remove overrides from. Must not have enabled actions.</param> /// <exception cref="ArgumentNullException"><paramref name="actionMap"/> is <c>null</c>.</exception> /// <exception cref="InvalidOperationException"><paramref name="actionMap"/> is currently enabled.</exception> public static void RemoveAllBindingOverrides(this InputActionMap actionMap) { if (actionMap == null) { throw new ArgumentNullException("actionMap"); } actionMap.ThrowIfModifyingBindingsIsNotAllowed(); if (actionMap.m_Bindings == null) { return; // No bindings in map. } var emptyBinding = new InputBinding(); var bindingCount = actionMap.m_Bindings.Length; for (var i = 0; i < bindingCount; ++i) { ApplyBindingOverride(actionMap, i, emptyBinding); } }
/// <summary> /// Apply the given binding override to all bindings in the map that are matched by the override. /// </summary> /// <param name="actionMap"></param> /// <param name="bindingOverride"></param> /// <returns>The number of bindings overridden in the given map.</returns> /// <exception cref="ArgumentNullException"><paramref name="actionMap"/> is <c>null</c>.</exception> /// <exception cref="InvalidOperationException"><paramref name="actionMap"/> is currently enabled.</exception> /// <remarks> /// </remarks> public static int ApplyBindingOverride(this InputActionMap actionMap, InputBinding bindingOverride) { if (actionMap == null) { throw new ArgumentNullException("actionMap"); } actionMap.ThrowIfModifyingBindingsIsNotAllowed(); var bindings = actionMap.m_Bindings; if (bindings == null) { return(0); } // Go through all bindings in the map and match them to the override. var bindingCount = bindings.Length; var matchCount = 0; for (var i = 0; i < bindingCount; ++i) { if (!bindingOverride.Matches(ref bindings[i])) { continue; } // Set overrides on binding. bindings[i].overridePath = bindingOverride.overridePath; bindings[i].overrideInteractions = bindingOverride.overrideInteractions; ++matchCount; } if (matchCount > 0) { actionMap.InvalidateResolvedData(); } return(matchCount); }