#if ENABLE_INPUT_SYSTEM namespace UIWidgets.InputSystem { using System; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Layouts; using UnityEngine.InputSystem.Utilities; using UnityEngine.Scripting; /// /// Button with three modifiers. /// #if UNITY_EDITOR [UnityEditor.InitializeOnLoad] // Automatically register in editor. #endif [Preserve] [DisplayStringFormat("{modifier1}+{modifier2}+{modifier3}+{button}")] public class CustomButtonWithThreeModifiers : InputBindingComposite { /// /// Modifier1. /// [InputControl(layout = "Button")] public int Modifier1; /// /// Modifier2. /// [InputControl(layout = "Button")] public int Modifier2; /// /// Modifier3. /// [InputControl(layout = "Button")] public int Modifier3; /// /// Button. /// [InputControl(layout = "Button")] public int Button; /// /// Read value. /// /// Context. /// Value. public override float ReadValue(ref InputBindingCompositeContext context) { if (context.ReadValueAsButton(Modifier1) && context.ReadValueAsButton(Modifier2) && context.ReadValueAsButton(Modifier3)) { return context.ReadValue(Button); } return 0f; } /// /// Evaluate magnitude. /// /// Context. /// Value. public override float EvaluateMagnitude(ref InputBindingCompositeContext context) { return ReadValue(ref context); } static CustomButtonWithThreeModifiers() { InputSystem.RegisterBindingComposite(); } [RuntimeInitializeOnLoadMethod] static void Init() { // do nothing, requires to call static constructor } } } #endif