mirror of
https://github.com/ayufan/steam-deck-tools.git
synced 2026-01-20 15:30:28 +01:00
Simplify DeltaValueMode
This commit is contained in:
parent
4c016b33b9
commit
6da5a9796c
|
|
@ -262,6 +262,14 @@ namespace SteamController.Devices
|
|||
}
|
||||
}
|
||||
|
||||
public enum DeltaValueMode
|
||||
{
|
||||
Absolute,
|
||||
AbsoluteTime,
|
||||
Delta,
|
||||
DeltaTime
|
||||
}
|
||||
|
||||
public class SteamAxis : SteamAction
|
||||
{
|
||||
public const short VirtualLeftThreshold = short.MinValue / 2;
|
||||
|
|
@ -275,6 +283,7 @@ namespace SteamController.Devices
|
|||
public SteamButton? VirtualRight { get; internal set; }
|
||||
public short Deadzone { get; internal set; }
|
||||
public short MinChange { get; internal set; }
|
||||
public DeltaValueMode DeltaValueMode { get; internal set; } = DeltaValueMode.Absolute;
|
||||
|
||||
public short Value
|
||||
{
|
||||
|
|
@ -298,45 +307,39 @@ namespace SteamController.Devices
|
|||
|
||||
public bool Active
|
||||
{
|
||||
get
|
||||
{
|
||||
return ActiveButton?.Value ?? true;
|
||||
}
|
||||
get { return ActiveButton?.Value ?? true; }
|
||||
}
|
||||
|
||||
public enum ScaledMode
|
||||
public double DeltaValue
|
||||
{
|
||||
Absolute,
|
||||
AbsoluteTime,
|
||||
Delta,
|
||||
DeltaTime
|
||||
get { return GetDeltaValue(-1, 1, DeltaValueMode); }
|
||||
}
|
||||
|
||||
public double Scaled(double min, double max, ScaledMode mode)
|
||||
public double GetDeltaValue(double min, double max, DeltaValueMode mode)
|
||||
{
|
||||
int value = 0;
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case ScaledMode.Absolute:
|
||||
case DeltaValueMode.Absolute:
|
||||
if (Math.Abs(Value) < Deadzone)
|
||||
return 0.0;
|
||||
value = Value;
|
||||
break;
|
||||
|
||||
case ScaledMode.AbsoluteTime:
|
||||
case DeltaValueMode.AbsoluteTime:
|
||||
if (Math.Abs(Value) < Deadzone)
|
||||
return 0.0;
|
||||
value = (int)(Value * DeltaTime);
|
||||
break;
|
||||
|
||||
case ScaledMode.Delta:
|
||||
case DeltaValueMode.Delta:
|
||||
value = Value - LastValue;
|
||||
if (Math.Abs(Value) < MinChange)
|
||||
return 0.0;
|
||||
break;
|
||||
|
||||
case ScaledMode.DeltaTime:
|
||||
case DeltaValueMode.DeltaTime:
|
||||
value = Value - LastValue;
|
||||
if (Math.Abs(Value) < MinChange)
|
||||
return 0.0;
|
||||
|
|
@ -351,21 +354,6 @@ namespace SteamController.Devices
|
|||
return factor * (max - min) + min;
|
||||
}
|
||||
|
||||
public double Scaled(double range, ScaledMode mode)
|
||||
{
|
||||
return Scaled(-range, range, mode);
|
||||
}
|
||||
|
||||
public int Scaled(int min, int max, ScaledMode mode)
|
||||
{
|
||||
return (int)Scaled((double)min, (double)max, mode);
|
||||
}
|
||||
|
||||
public int Scaled(int range, ScaledMode mode)
|
||||
{
|
||||
return Scaled(-range, range, mode);
|
||||
}
|
||||
|
||||
internal override void Reset()
|
||||
{
|
||||
rawLastValue = rawValue;
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@ namespace SteamController.Devices
|
|||
public readonly SteamButton BtnVirtualLeftThumbLeft = new SteamButton();
|
||||
public readonly SteamButton BtnVirtualLeftThumbRight = new SteamButton();
|
||||
|
||||
public readonly SteamAxis LPadX = new SteamAxis(0x10);
|
||||
public readonly SteamAxis LPadY = new SteamAxis(0x12);
|
||||
public readonly SteamAxis RPadX = new SteamAxis(0x14) { LizardMouse = true };
|
||||
public readonly SteamAxis RPadY = new SteamAxis(0x16) { LizardMouse = true };
|
||||
public readonly SteamAxis LPadX = new SteamAxis(0x10) { DeltaValueMode = Devices.DeltaValueMode.Delta };
|
||||
public readonly SteamAxis LPadY = new SteamAxis(0x12) { DeltaValueMode = Devices.DeltaValueMode.Delta };
|
||||
public readonly SteamAxis RPadX = new SteamAxis(0x14) { LizardMouse = true, DeltaValueMode = Devices.DeltaValueMode.Delta };
|
||||
public readonly SteamAxis RPadY = new SteamAxis(0x16) { LizardMouse = true, DeltaValueMode = Devices.DeltaValueMode.Delta };
|
||||
public readonly SteamAxis AccelX = new SteamAxis(0x18);
|
||||
public readonly SteamAxis AccelY = new SteamAxis(0x1A);
|
||||
public readonly SteamAxis AccelZ = new SteamAxis(0x1C);
|
||||
|
|
@ -52,10 +52,10 @@ namespace SteamController.Devices
|
|||
public readonly SteamAxis GyroRoll = new SteamAxis(0x22);
|
||||
public readonly SteamAxis LeftTrigger = new SteamAxis(0x2C);
|
||||
public readonly SteamAxis RightTrigger = new SteamAxis(0x2E);
|
||||
public readonly SteamAxis LeftThumbX = new SteamAxis(0x30) { Deadzone = 5000, MinChange = 10 };
|
||||
public readonly SteamAxis LeftThumbY = new SteamAxis(0x32) { Deadzone = 5000, MinChange = 10 };
|
||||
public readonly SteamAxis RightThumbX = new SteamAxis(0x34) { Deadzone = 5000, MinChange = 10 };
|
||||
public readonly SteamAxis RightThumbY = new SteamAxis(0x36) { Deadzone = 5000, MinChange = 10 };
|
||||
public readonly SteamAxis LeftThumbX = new SteamAxis(0x30) { Deadzone = 5000, MinChange = 10, DeltaValueMode = Devices.DeltaValueMode.AbsoluteTime };
|
||||
public readonly SteamAxis LeftThumbY = new SteamAxis(0x32) { Deadzone = 5000, MinChange = 10, DeltaValueMode = Devices.DeltaValueMode.AbsoluteTime };
|
||||
public readonly SteamAxis RightThumbX = new SteamAxis(0x34) { Deadzone = 5000, MinChange = 10, DeltaValueMode = Devices.DeltaValueMode.AbsoluteTime };
|
||||
public readonly SteamAxis RightThumbY = new SteamAxis(0x36) { Deadzone = 5000, MinChange = 10, DeltaValueMode = Devices.DeltaValueMode.AbsoluteTime };
|
||||
public readonly SteamAxis LPadPressure = new SteamAxis(0x38);
|
||||
public readonly SteamAxis RPadPressure = new SteamAxis(0x38);
|
||||
|
||||
|
|
|
|||
|
|
@ -115,11 +115,11 @@ namespace SteamController.Profiles
|
|||
{
|
||||
if (c.Steam.LPadX)
|
||||
{
|
||||
c.Mouse.HorizontalScroll(c.Steam.LPadX.Scaled(Context.PadToWhellSensitivity, Devices.SteamAxis.ScaledMode.Delta));
|
||||
c.Mouse.HorizontalScroll(c.Steam.LPadX.DeltaValue * Context.PadToWhellSensitivity);
|
||||
}
|
||||
if (c.Steam.LPadY)
|
||||
{
|
||||
c.Mouse.VerticalScroll(c.Steam.LPadY.Scaled(Context.PadToWhellSensitivity, Devices.SteamAxis.ScaledMode.Delta));
|
||||
c.Mouse.VerticalScroll(c.Steam.LPadY.DeltaValue * Context.PadToWhellSensitivity);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -128,8 +128,8 @@ namespace SteamController.Profiles
|
|||
if (c.Steam.RightThumbX || c.Steam.RightThumbY)
|
||||
{
|
||||
c.Mouse.MoveBy(
|
||||
c.Steam.RightThumbX.Scaled(Context.JoystickToMouseSensitivity, Devices.SteamAxis.ScaledMode.AbsoluteTime),
|
||||
-c.Steam.RightThumbY.Scaled(Context.JoystickToMouseSensitivity, Devices.SteamAxis.ScaledMode.AbsoluteTime)
|
||||
c.Steam.RightThumbX.DeltaValue * Context.JoystickToMouseSensitivity,
|
||||
-c.Steam.RightThumbY.DeltaValue * Context.JoystickToMouseSensitivity
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -150,8 +150,8 @@ namespace SteamController.Profiles
|
|||
if (c.Steam.RPadX || c.Steam.RPadY)
|
||||
{
|
||||
c.Mouse.MoveBy(
|
||||
c.Steam.RPadX.Scaled(Context.PadToMouseSensitivity, Devices.SteamAxis.ScaledMode.Delta),
|
||||
-c.Steam.RPadY.Scaled(Context.PadToMouseSensitivity, Devices.SteamAxis.ScaledMode.Delta)
|
||||
c.Steam.RPadX.DeltaValue * Context.PadToMouseSensitivity,
|
||||
-c.Steam.RPadY.DeltaValue * Context.PadToMouseSensitivity
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue