#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