ArcadeInputPackage/Runtime/ConjureArcadeStickControl.cs
2025-09-20 00:28:00 -04:00

46 lines
2.4 KiB
C#

#if ENABLE_INPUT_SYSTEM
using UnityEngine.InputSystem.Controls;
using UnityEngine.InputSystem.Layouts;
// ReSharper disable UnusedAutoPropertyAccessor.Global
// ReSharper disable ClassNeverInstantiated.Global
// ReSharper disable MemberCanBePrivate.Global
// Reason: It's normal that some stuff is not used here because this is meant to be used as a library.
// ReSharper disable InconsistentNaming
// Reason: According to our code guidelines, property should be UpperCamelCase.
// However, to be consistent with other input controls in Unity (e.g. StickControl) we will use lowerCamelCase here.
// This class exists to allow the Conjure arcade stick input to work with the input system.
// It uses the ConjureArcadeValue processor in order to define the down/left/right/up buttons.
// It is registered in when ConjureInputSystem is initialized and is used for the stick input in the controller state.
namespace ConjureOS.Input
{
public class ConjureArcadeStickControl : Vector2Control
{
[InputControl(useStateFrom = "y", processors = "ConjureArcadeValue(min=0.0, max=1.0, invert)", synthetic = true, displayName = "Up")]
[InputControl(name = "x", minValue = -1f, maxValue = 1f, layout = "Axis", processors = "ConjureArcadeValue(min=0.0, max=1.0)", format = "BYTE", sizeInBits = 8)]
[InputControl(name = "y", minValue = -1f, maxValue = 1f, layout = "Axis", processors = "ConjureArcadeValue(min=0.0, max=1.0, invert)", format ="BYTE", sizeInBits = 8, offset = 1)]
public ButtonControl up { get; set; }
[InputControl(useStateFrom = "y" , processors = "ConjureArcadeValue(min=0.0, max=1.0)", synthetic = true, displayName = "Down")]
public ButtonControl down { get; set; }
[InputControl(useStateFrom = "x", processors = "ConjureArcadeValue(min=0.0, max=1.0, invert)", synthetic = true, displayName = "Left")]
public ButtonControl left { get; set; }
[InputControl(useStateFrom = "x", processors = "ConjureArcadeValue(min=0.0, max=1.0)", synthetic = true, displayName = "Right")]
public ButtonControl right { get; set; }
protected override void FinishSetup()
{
base.FinishSetup();
up = GetChildControl<ButtonControl>("up");
down = GetChildControl<ButtonControl>("down");
left = GetChildControl<ButtonControl>("left");
right = GetChildControl<ButtonControl>("right");
}
}
}
#endif