diff --git a/src/Ryujinx.Input/Assigner/GamepadButtonAssigner.cs b/src/Ryujinx.Input/Assigner/GamepadButtonAssigner.cs index 8621b3a5..388ebcc0 100644 --- a/src/Ryujinx.Input/Assigner/GamepadButtonAssigner.cs +++ b/src/Ryujinx.Input/Assigner/GamepadButtonAssigner.cs @@ -10,15 +10,15 @@ namespace Ryujinx.Input.Assigner /// public class GamepadButtonAssigner : IButtonAssigner { - private IGamepad _gamepad; + private readonly IGamepad _gamepad; private GamepadStateSnapshot _currState; private GamepadStateSnapshot _prevState; - private JoystickButtonDetector _detector; + private readonly JoystickButtonDetector _detector; - private bool _forStick; + private readonly bool _forStick; public GamepadButtonAssigner(IGamepad gamepad, float triggerThreshold, bool forStick) { @@ -35,7 +35,7 @@ namespace Ryujinx.Input.Assigner { _currState = _gamepad.GetStateSnapshot(); _prevState = _currState; - } + } } public void ReadInput() @@ -116,7 +116,7 @@ namespace Ryujinx.Input.Assigner private class JoystickButtonDetector { - private Dictionary _stats; + private readonly Dictionary _stats; public JoystickButtonDetector() { @@ -135,9 +135,8 @@ namespace Ryujinx.Input.Assigner public void AddInput(GamepadButtonInputId button, float value) { - InputSummary inputSummary; - if (!_stats.TryGetValue(button, out inputSummary)) + if (!_stats.TryGetValue(button, out InputSummary inputSummary)) { inputSummary = new InputSummary(); _stats.Add(button, inputSummary); @@ -148,7 +147,7 @@ namespace Ryujinx.Input.Assigner public override string ToString() { - StringWriter writer = new StringWriter(); + StringWriter writer = new(); foreach (var kvp in _stats) { diff --git a/src/Ryujinx.Input/Assigner/IButtonAssigner.cs b/src/Ryujinx.Input/Assigner/IButtonAssigner.cs index 021736df..76a9fece 100644 --- a/src/Ryujinx.Input/Assigner/IButtonAssigner.cs +++ b/src/Ryujinx.Input/Assigner/IButtonAssigner.cs @@ -33,4 +33,4 @@ namespace Ryujinx.Input.Assigner /// The pressed button that was read string GetPressedButton(); } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Assigner/KeyboardKeyAssigner.cs b/src/Ryujinx.Input/Assigner/KeyboardKeyAssigner.cs index 23ae3655..e52ef4a2 100644 --- a/src/Ryujinx.Input/Assigner/KeyboardKeyAssigner.cs +++ b/src/Ryujinx.Input/Assigner/KeyboardKeyAssigner.cs @@ -5,7 +5,7 @@ namespace Ryujinx.Input.Assigner /// public class KeyboardKeyAssigner : IButtonAssigner { - private IKeyboard _keyboard; + private readonly IKeyboard _keyboard; private KeyboardStateSnapshot _keyboardState; @@ -47,4 +47,4 @@ namespace Ryujinx.Input.Assigner return !ShouldCancel() ? keyPressed : ""; } } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/GamepadButtonInputId.cs b/src/Ryujinx.Input/GamepadButtonInputId.cs index d1e4b9ac..618f8d0a 100644 --- a/src/Ryujinx.Input/GamepadButtonInputId.cs +++ b/src/Ryujinx.Input/GamepadButtonInputId.cs @@ -52,6 +52,6 @@ SingleLeftTrigger1, SingleRightTrigger1, - Count + Count, } } diff --git a/src/Ryujinx.Input/GamepadFeaturesFlag.cs b/src/Ryujinx.Input/GamepadFeaturesFlag.cs index 87310a32..206b4ea1 100644 --- a/src/Ryujinx.Input/GamepadFeaturesFlag.cs +++ b/src/Ryujinx.Input/GamepadFeaturesFlag.cs @@ -23,6 +23,6 @@ namespace Ryujinx.Input /// Motion /// Also named sixaxis /// - Motion + Motion, } } diff --git a/src/Ryujinx.Input/HLE/InputManager.cs b/src/Ryujinx.Input/HLE/InputManager.cs index bc38cf5a..6dba839b 100644 --- a/src/Ryujinx.Input/HLE/InputManager.cs +++ b/src/Ryujinx.Input/HLE/InputManager.cs @@ -25,7 +25,7 @@ namespace Ryujinx.Input.HLE { return new NpadManager(KeyboardDriver, GamepadDriver, MouseDriver); } - + public TouchScreenManager CreateTouchScreenManager() { if (MouseDriver == null) @@ -48,6 +48,7 @@ namespace Ryujinx.Input.HLE public void Dispose() { + GC.SuppressFinalize(this); Dispose(true); } } diff --git a/src/Ryujinx.Input/HLE/NpadController.cs b/src/Ryujinx.Input/HLE/NpadController.cs index 46c0fc33..c193b45c 100644 --- a/src/Ryujinx.Input/HLE/NpadController.cs +++ b/src/Ryujinx.Input/HLE/NpadController.cs @@ -8,7 +8,6 @@ using System; using System.Collections.Concurrent; using System.Numerics; using System.Runtime.CompilerServices; - using CemuHookClient = Ryujinx.Input.Motion.CemuHook.Client; using ConfigControllerType = Ryujinx.Common.Configuration.Hid.ControllerType; @@ -28,29 +27,28 @@ namespace Ryujinx.Input.HLE } } - private static readonly HLEButtonMappingEntry[] _hleButtonMapping = new HLEButtonMappingEntry[] - { - new HLEButtonMappingEntry(GamepadButtonInputId.A, ControllerKeys.A), - new HLEButtonMappingEntry(GamepadButtonInputId.B, ControllerKeys.B), - new HLEButtonMappingEntry(GamepadButtonInputId.X, ControllerKeys.X), - new HLEButtonMappingEntry(GamepadButtonInputId.Y, ControllerKeys.Y), - new HLEButtonMappingEntry(GamepadButtonInputId.LeftStick, ControllerKeys.LStick), - new HLEButtonMappingEntry(GamepadButtonInputId.RightStick, ControllerKeys.RStick), - new HLEButtonMappingEntry(GamepadButtonInputId.LeftShoulder, ControllerKeys.L), - new HLEButtonMappingEntry(GamepadButtonInputId.RightShoulder, ControllerKeys.R), - new HLEButtonMappingEntry(GamepadButtonInputId.LeftTrigger, ControllerKeys.Zl), - new HLEButtonMappingEntry(GamepadButtonInputId.RightTrigger, ControllerKeys.Zr), - new HLEButtonMappingEntry(GamepadButtonInputId.DpadUp, ControllerKeys.DpadUp), - new HLEButtonMappingEntry(GamepadButtonInputId.DpadDown, ControllerKeys.DpadDown), - new HLEButtonMappingEntry(GamepadButtonInputId.DpadLeft, ControllerKeys.DpadLeft), - new HLEButtonMappingEntry(GamepadButtonInputId.DpadRight, ControllerKeys.DpadRight), - new HLEButtonMappingEntry(GamepadButtonInputId.Minus, ControllerKeys.Minus), - new HLEButtonMappingEntry(GamepadButtonInputId.Plus, ControllerKeys.Plus), + private static readonly HLEButtonMappingEntry[] _hleButtonMapping = { + new(GamepadButtonInputId.A, ControllerKeys.A), + new(GamepadButtonInputId.B, ControllerKeys.B), + new(GamepadButtonInputId.X, ControllerKeys.X), + new(GamepadButtonInputId.Y, ControllerKeys.Y), + new(GamepadButtonInputId.LeftStick, ControllerKeys.LStick), + new(GamepadButtonInputId.RightStick, ControllerKeys.RStick), + new(GamepadButtonInputId.LeftShoulder, ControllerKeys.L), + new(GamepadButtonInputId.RightShoulder, ControllerKeys.R), + new(GamepadButtonInputId.LeftTrigger, ControllerKeys.Zl), + new(GamepadButtonInputId.RightTrigger, ControllerKeys.Zr), + new(GamepadButtonInputId.DpadUp, ControllerKeys.DpadUp), + new(GamepadButtonInputId.DpadDown, ControllerKeys.DpadDown), + new(GamepadButtonInputId.DpadLeft, ControllerKeys.DpadLeft), + new(GamepadButtonInputId.DpadRight, ControllerKeys.DpadRight), + new(GamepadButtonInputId.Minus, ControllerKeys.Minus), + new(GamepadButtonInputId.Plus, ControllerKeys.Plus), - new HLEButtonMappingEntry(GamepadButtonInputId.SingleLeftTrigger0, ControllerKeys.SlLeft), - new HLEButtonMappingEntry(GamepadButtonInputId.SingleRightTrigger0, ControllerKeys.SrLeft), - new HLEButtonMappingEntry(GamepadButtonInputId.SingleLeftTrigger1, ControllerKeys.SlRight), - new HLEButtonMappingEntry(GamepadButtonInputId.SingleRightTrigger1, ControllerKeys.SrRight), + new(GamepadButtonInputId.SingleLeftTrigger0, ControllerKeys.SlLeft), + new(GamepadButtonInputId.SingleRightTrigger0, ControllerKeys.SrLeft), + new(GamepadButtonInputId.SingleLeftTrigger1, ControllerKeys.SlRight), + new(GamepadButtonInputId.SingleRightTrigger1, ControllerKeys.SrRight), }; private class HLEKeyboardMappingEntry @@ -65,150 +63,147 @@ namespace Ryujinx.Input.HLE } } - private static readonly HLEKeyboardMappingEntry[] KeyMapping = new HLEKeyboardMappingEntry[] - { - new HLEKeyboardMappingEntry(Key.A, 0x4), - new HLEKeyboardMappingEntry(Key.B, 0x5), - new HLEKeyboardMappingEntry(Key.C, 0x6), - new HLEKeyboardMappingEntry(Key.D, 0x7), - new HLEKeyboardMappingEntry(Key.E, 0x8), - new HLEKeyboardMappingEntry(Key.F, 0x9), - new HLEKeyboardMappingEntry(Key.G, 0xA), - new HLEKeyboardMappingEntry(Key.H, 0xB), - new HLEKeyboardMappingEntry(Key.I, 0xC), - new HLEKeyboardMappingEntry(Key.J, 0xD), - new HLEKeyboardMappingEntry(Key.K, 0xE), - new HLEKeyboardMappingEntry(Key.L, 0xF), - new HLEKeyboardMappingEntry(Key.M, 0x10), - new HLEKeyboardMappingEntry(Key.N, 0x11), - new HLEKeyboardMappingEntry(Key.O, 0x12), - new HLEKeyboardMappingEntry(Key.P, 0x13), - new HLEKeyboardMappingEntry(Key.Q, 0x14), - new HLEKeyboardMappingEntry(Key.R, 0x15), - new HLEKeyboardMappingEntry(Key.S, 0x16), - new HLEKeyboardMappingEntry(Key.T, 0x17), - new HLEKeyboardMappingEntry(Key.U, 0x18), - new HLEKeyboardMappingEntry(Key.V, 0x19), - new HLEKeyboardMappingEntry(Key.W, 0x1A), - new HLEKeyboardMappingEntry(Key.X, 0x1B), - new HLEKeyboardMappingEntry(Key.Y, 0x1C), - new HLEKeyboardMappingEntry(Key.Z, 0x1D), + private static readonly HLEKeyboardMappingEntry[] _keyMapping = { + new(Key.A, 0x4), + new(Key.B, 0x5), + new(Key.C, 0x6), + new(Key.D, 0x7), + new(Key.E, 0x8), + new(Key.F, 0x9), + new(Key.G, 0xA), + new(Key.H, 0xB), + new(Key.I, 0xC), + new(Key.J, 0xD), + new(Key.K, 0xE), + new(Key.L, 0xF), + new(Key.M, 0x10), + new(Key.N, 0x11), + new(Key.O, 0x12), + new(Key.P, 0x13), + new(Key.Q, 0x14), + new(Key.R, 0x15), + new(Key.S, 0x16), + new(Key.T, 0x17), + new(Key.U, 0x18), + new(Key.V, 0x19), + new(Key.W, 0x1A), + new(Key.X, 0x1B), + new(Key.Y, 0x1C), + new(Key.Z, 0x1D), - new HLEKeyboardMappingEntry(Key.Number1, 0x1E), - new HLEKeyboardMappingEntry(Key.Number2, 0x1F), - new HLEKeyboardMappingEntry(Key.Number3, 0x20), - new HLEKeyboardMappingEntry(Key.Number4, 0x21), - new HLEKeyboardMappingEntry(Key.Number5, 0x22), - new HLEKeyboardMappingEntry(Key.Number6, 0x23), - new HLEKeyboardMappingEntry(Key.Number7, 0x24), - new HLEKeyboardMappingEntry(Key.Number8, 0x25), - new HLEKeyboardMappingEntry(Key.Number9, 0x26), - new HLEKeyboardMappingEntry(Key.Number0, 0x27), + new(Key.Number1, 0x1E), + new(Key.Number2, 0x1F), + new(Key.Number3, 0x20), + new(Key.Number4, 0x21), + new(Key.Number5, 0x22), + new(Key.Number6, 0x23), + new(Key.Number7, 0x24), + new(Key.Number8, 0x25), + new(Key.Number9, 0x26), + new(Key.Number0, 0x27), - new HLEKeyboardMappingEntry(Key.Enter, 0x28), - new HLEKeyboardMappingEntry(Key.Escape, 0x29), - new HLEKeyboardMappingEntry(Key.BackSpace, 0x2A), - new HLEKeyboardMappingEntry(Key.Tab, 0x2B), - new HLEKeyboardMappingEntry(Key.Space, 0x2C), - new HLEKeyboardMappingEntry(Key.Minus, 0x2D), - new HLEKeyboardMappingEntry(Key.Plus, 0x2E), - new HLEKeyboardMappingEntry(Key.BracketLeft, 0x2F), - new HLEKeyboardMappingEntry(Key.BracketRight, 0x30), - new HLEKeyboardMappingEntry(Key.BackSlash, 0x31), - new HLEKeyboardMappingEntry(Key.Tilde, 0x32), - new HLEKeyboardMappingEntry(Key.Semicolon, 0x33), - new HLEKeyboardMappingEntry(Key.Quote, 0x34), - new HLEKeyboardMappingEntry(Key.Grave, 0x35), - new HLEKeyboardMappingEntry(Key.Comma, 0x36), - new HLEKeyboardMappingEntry(Key.Period, 0x37), - new HLEKeyboardMappingEntry(Key.Slash, 0x38), - new HLEKeyboardMappingEntry(Key.CapsLock, 0x39), + new(Key.Enter, 0x28), + new(Key.Escape, 0x29), + new(Key.BackSpace, 0x2A), + new(Key.Tab, 0x2B), + new(Key.Space, 0x2C), + new(Key.Minus, 0x2D), + new(Key.Plus, 0x2E), + new(Key.BracketLeft, 0x2F), + new(Key.BracketRight, 0x30), + new(Key.BackSlash, 0x31), + new(Key.Tilde, 0x32), + new(Key.Semicolon, 0x33), + new(Key.Quote, 0x34), + new(Key.Grave, 0x35), + new(Key.Comma, 0x36), + new(Key.Period, 0x37), + new(Key.Slash, 0x38), + new(Key.CapsLock, 0x39), - new HLEKeyboardMappingEntry(Key.F1, 0x3a), - new HLEKeyboardMappingEntry(Key.F2, 0x3b), - new HLEKeyboardMappingEntry(Key.F3, 0x3c), - new HLEKeyboardMappingEntry(Key.F4, 0x3d), - new HLEKeyboardMappingEntry(Key.F5, 0x3e), - new HLEKeyboardMappingEntry(Key.F6, 0x3f), - new HLEKeyboardMappingEntry(Key.F7, 0x40), - new HLEKeyboardMappingEntry(Key.F8, 0x41), - new HLEKeyboardMappingEntry(Key.F9, 0x42), - new HLEKeyboardMappingEntry(Key.F10, 0x43), - new HLEKeyboardMappingEntry(Key.F11, 0x44), - new HLEKeyboardMappingEntry(Key.F12, 0x45), + new(Key.F1, 0x3a), + new(Key.F2, 0x3b), + new(Key.F3, 0x3c), + new(Key.F4, 0x3d), + new(Key.F5, 0x3e), + new(Key.F6, 0x3f), + new(Key.F7, 0x40), + new(Key.F8, 0x41), + new(Key.F9, 0x42), + new(Key.F10, 0x43), + new(Key.F11, 0x44), + new(Key.F12, 0x45), - new HLEKeyboardMappingEntry(Key.PrintScreen, 0x46), - new HLEKeyboardMappingEntry(Key.ScrollLock, 0x47), - new HLEKeyboardMappingEntry(Key.Pause, 0x48), - new HLEKeyboardMappingEntry(Key.Insert, 0x49), - new HLEKeyboardMappingEntry(Key.Home, 0x4A), - new HLEKeyboardMappingEntry(Key.PageUp, 0x4B), - new HLEKeyboardMappingEntry(Key.Delete, 0x4C), - new HLEKeyboardMappingEntry(Key.End, 0x4D), - new HLEKeyboardMappingEntry(Key.PageDown, 0x4E), - new HLEKeyboardMappingEntry(Key.Right, 0x4F), - new HLEKeyboardMappingEntry(Key.Left, 0x50), - new HLEKeyboardMappingEntry(Key.Down, 0x51), - new HLEKeyboardMappingEntry(Key.Up, 0x52), + new(Key.PrintScreen, 0x46), + new(Key.ScrollLock, 0x47), + new(Key.Pause, 0x48), + new(Key.Insert, 0x49), + new(Key.Home, 0x4A), + new(Key.PageUp, 0x4B), + new(Key.Delete, 0x4C), + new(Key.End, 0x4D), + new(Key.PageDown, 0x4E), + new(Key.Right, 0x4F), + new(Key.Left, 0x50), + new(Key.Down, 0x51), + new(Key.Up, 0x52), - new HLEKeyboardMappingEntry(Key.NumLock, 0x53), - new HLEKeyboardMappingEntry(Key.KeypadDivide, 0x54), - new HLEKeyboardMappingEntry(Key.KeypadMultiply, 0x55), - new HLEKeyboardMappingEntry(Key.KeypadSubtract, 0x56), - new HLEKeyboardMappingEntry(Key.KeypadAdd, 0x57), - new HLEKeyboardMappingEntry(Key.KeypadEnter, 0x58), - new HLEKeyboardMappingEntry(Key.Keypad1, 0x59), - new HLEKeyboardMappingEntry(Key.Keypad2, 0x5A), - new HLEKeyboardMappingEntry(Key.Keypad3, 0x5B), - new HLEKeyboardMappingEntry(Key.Keypad4, 0x5C), - new HLEKeyboardMappingEntry(Key.Keypad5, 0x5D), - new HLEKeyboardMappingEntry(Key.Keypad6, 0x5E), - new HLEKeyboardMappingEntry(Key.Keypad7, 0x5F), - new HLEKeyboardMappingEntry(Key.Keypad8, 0x60), - new HLEKeyboardMappingEntry(Key.Keypad9, 0x61), - new HLEKeyboardMappingEntry(Key.Keypad0, 0x62), - new HLEKeyboardMappingEntry(Key.KeypadDecimal, 0x63), + new(Key.NumLock, 0x53), + new(Key.KeypadDivide, 0x54), + new(Key.KeypadMultiply, 0x55), + new(Key.KeypadSubtract, 0x56), + new(Key.KeypadAdd, 0x57), + new(Key.KeypadEnter, 0x58), + new(Key.Keypad1, 0x59), + new(Key.Keypad2, 0x5A), + new(Key.Keypad3, 0x5B), + new(Key.Keypad4, 0x5C), + new(Key.Keypad5, 0x5D), + new(Key.Keypad6, 0x5E), + new(Key.Keypad7, 0x5F), + new(Key.Keypad8, 0x60), + new(Key.Keypad9, 0x61), + new(Key.Keypad0, 0x62), + new(Key.KeypadDecimal, 0x63), - new HLEKeyboardMappingEntry(Key.F13, 0x68), - new HLEKeyboardMappingEntry(Key.F14, 0x69), - new HLEKeyboardMappingEntry(Key.F15, 0x6A), - new HLEKeyboardMappingEntry(Key.F16, 0x6B), - new HLEKeyboardMappingEntry(Key.F17, 0x6C), - new HLEKeyboardMappingEntry(Key.F18, 0x6D), - new HLEKeyboardMappingEntry(Key.F19, 0x6E), - new HLEKeyboardMappingEntry(Key.F20, 0x6F), - new HLEKeyboardMappingEntry(Key.F21, 0x70), - new HLEKeyboardMappingEntry(Key.F22, 0x71), - new HLEKeyboardMappingEntry(Key.F23, 0x72), - new HLEKeyboardMappingEntry(Key.F24, 0x73), + new(Key.F13, 0x68), + new(Key.F14, 0x69), + new(Key.F15, 0x6A), + new(Key.F16, 0x6B), + new(Key.F17, 0x6C), + new(Key.F18, 0x6D), + new(Key.F19, 0x6E), + new(Key.F20, 0x6F), + new(Key.F21, 0x70), + new(Key.F22, 0x71), + new(Key.F23, 0x72), + new(Key.F24, 0x73), - new HLEKeyboardMappingEntry(Key.ControlLeft, 0xE0), - new HLEKeyboardMappingEntry(Key.ShiftLeft, 0xE1), - new HLEKeyboardMappingEntry(Key.AltLeft, 0xE2), - new HLEKeyboardMappingEntry(Key.WinLeft, 0xE3), - new HLEKeyboardMappingEntry(Key.ControlRight, 0xE4), - new HLEKeyboardMappingEntry(Key.ShiftRight, 0xE5), - new HLEKeyboardMappingEntry(Key.AltRight, 0xE6), - new HLEKeyboardMappingEntry(Key.WinRight, 0xE7), + new(Key.ControlLeft, 0xE0), + new(Key.ShiftLeft, 0xE1), + new(Key.AltLeft, 0xE2), + new(Key.WinLeft, 0xE3), + new(Key.ControlRight, 0xE4), + new(Key.ShiftRight, 0xE5), + new(Key.AltRight, 0xE6), + new(Key.WinRight, 0xE7), }; - private static readonly HLEKeyboardMappingEntry[] KeyModifierMapping = new HLEKeyboardMappingEntry[] - { - new HLEKeyboardMappingEntry(Key.ControlLeft, 0), - new HLEKeyboardMappingEntry(Key.ShiftLeft, 1), - new HLEKeyboardMappingEntry(Key.AltLeft, 2), - new HLEKeyboardMappingEntry(Key.WinLeft, 3), - new HLEKeyboardMappingEntry(Key.ControlRight, 4), - new HLEKeyboardMappingEntry(Key.ShiftRight, 5), - new HLEKeyboardMappingEntry(Key.AltRight, 6), - new HLEKeyboardMappingEntry(Key.WinRight, 7), - new HLEKeyboardMappingEntry(Key.CapsLock, 8), - new HLEKeyboardMappingEntry(Key.ScrollLock, 9), - new HLEKeyboardMappingEntry(Key.NumLock, 10), + private static readonly HLEKeyboardMappingEntry[] _keyModifierMapping = { + new(Key.ControlLeft, 0), + new(Key.ShiftLeft, 1), + new(Key.AltLeft, 2), + new(Key.WinLeft, 3), + new(Key.ControlRight, 4), + new(Key.ShiftRight, 5), + new(Key.AltRight, 6), + new(Key.WinRight, 7), + new(Key.CapsLock, 8), + new(Key.ScrollLock, 9), + new(Key.NumLock, 10), }; private bool _isValid; - private string _id; private MotionInput _leftMotionInput; private MotionInput _rightMotionInput; @@ -219,14 +214,14 @@ namespace Ryujinx.Input.HLE public IGamepadDriver GamepadDriver { get; private set; } public GamepadStateSnapshot State { get; private set; } - public string Id => _id; + public string Id { get; private set; } - private CemuHookClient _cemuHookClient; + private readonly CemuHookClient _cemuHookClient; public NpadController(CemuHookClient cemuHookClient) { State = default; - _id = null; + Id = null; _isValid = false; _cemuHookClient = cemuHookClient; } @@ -237,8 +232,8 @@ namespace Ryujinx.Input.HLE _gamepad?.Dispose(); - _id = config.Id; - _gamepad = GamepadDriver.GetGamepad(_id); + Id = config.Id; + _gamepad = GamepadDriver.GetGamepad(Id); _isValid = _gamepad != null; UpdateUserConfiguration(config); @@ -278,7 +273,7 @@ namespace Ryujinx.Input.HLE if (motionConfig.MotionBackend != MotionInputBackendType.CemuHook) { _leftMotionInput = new MotionInput(); - } + } else { _leftMotionInput = null; @@ -347,7 +342,7 @@ namespace Ryujinx.Input.HLE public GamepadInput GetHLEInputState() { - GamepadInput state = new GamepadInput(); + GamepadInput state = new(); // First update all buttons foreach (HLEButtonMappingEntry entry in _hleButtonMapping) @@ -366,13 +361,13 @@ namespace Ryujinx.Input.HLE state.LStick = new JoystickPosition { Dx = ClampAxis(leftAxisX), - Dy = ClampAxis(leftAxisY) + Dy = ClampAxis(leftAxisY), }; state.RStick = new JoystickPosition { Dx = ClampAxis(rightAxisX), - Dy = ClampAxis(rightAxisY) + Dy = ClampAxis(rightAxisY), }; } else if (_config is StandardControllerInputConfig controllerConfig) @@ -391,16 +386,16 @@ namespace Ryujinx.Input.HLE private static JoystickPosition ApplyDeadzone(float x, float y, float deadzone) { float magnitudeClamped = Math.Min(MathF.Sqrt(x * x + y * y), 1f); - + if (magnitudeClamped <= deadzone) { - return new JoystickPosition() {Dx = 0, Dy = 0}; + return new JoystickPosition { Dx = 0, Dy = 0 }; } - - return new JoystickPosition() + + return new JoystickPosition { Dx = ClampAxis((x / magnitudeClamped) * ((magnitudeClamped - deadzone) / (1 - deadzone))), - Dy = ClampAxis((y / magnitudeClamped) * ((magnitudeClamped - deadzone) / (1 - deadzone))) + Dy = ClampAxis((y / magnitudeClamped) * ((magnitudeClamped - deadzone) / (1 - deadzone))), }; } @@ -428,7 +423,7 @@ namespace Ryujinx.Input.HLE return new JoystickPosition { Dx = (int)point.X, - Dy = (int)point.Y + Dy = (int)point.Y, }; } @@ -476,12 +471,12 @@ namespace Ryujinx.Input.HLE rotation = new Vector3(); } - return new SixAxisInput() + return new SixAxisInput { Accelerometer = accelerometer, - Gyroscope = gyroscope, - Rotation = rotation, - Orientation = orientationForHLE + Gyroscope = gyroscope, + Rotation = rotation, + Orientation = orientationForHLE, }; } @@ -502,20 +497,20 @@ namespace Ryujinx.Input.HLE { KeyboardStateSnapshot keyboardState = keyboard.GetKeyboardStateSnapshot(); - KeyboardInput hidKeyboard = new KeyboardInput + KeyboardInput hidKeyboard = new() { Modifier = 0, - Keys = new ulong[0x4] + Keys = new ulong[0x4], }; - foreach (HLEKeyboardMappingEntry entry in KeyMapping) + foreach (HLEKeyboardMappingEntry entry in _keyMapping) { ulong value = keyboardState.IsPressed(entry.TargetKey) ? 1UL : 0UL; hidKeyboard.Keys[entry.Target / 0x40] |= (value << (entry.Target % 0x40)); } - foreach (HLEKeyboardMappingEntry entry in KeyModifierMapping) + foreach (HLEKeyboardMappingEntry entry in _keyModifierMapping) { int value = keyboardState.IsPressed(entry.TargetKey) ? 1 : 0; @@ -539,6 +534,7 @@ namespace Ryujinx.Input.HLE public void Dispose() { + GC.SuppressFinalize(this); Dispose(true); } diff --git a/src/Ryujinx.Input/HLE/NpadManager.cs b/src/Ryujinx.Input/HLE/NpadManager.cs index 89a2f585..25887748 100644 --- a/src/Ryujinx.Input/HLE/NpadManager.cs +++ b/src/Ryujinx.Input/HLE/NpadManager.cs @@ -7,13 +7,15 @@ using System.Collections.Generic; using System.Diagnostics; using System.Runtime.CompilerServices; using CemuHookClient = Ryujinx.Input.Motion.CemuHook.Client; +using ControllerType = Ryujinx.Common.Configuration.Hid.ControllerType; +using PlayerIndex = Ryujinx.HLE.HOS.Services.Hid.PlayerIndex; using Switch = Ryujinx.HLE.Switch; namespace Ryujinx.Input.HLE { public class NpadManager : IDisposable { - private CemuHookClient _cemuHookClient; + private readonly CemuHookClient _cemuHookClient; private readonly object _lock = new(); @@ -21,7 +23,7 @@ namespace Ryujinx.Input.HLE private const int MaxControllers = 9; - private NpadController[] _controllers; + private readonly NpadController[] _controllers; private readonly IGamepadDriver _keyboardDriver; private readonly IGamepadDriver _gamepadDriver; @@ -51,7 +53,7 @@ namespace Ryujinx.Input.HLE { lock (_lock) { - List validInputs = new List(); + List validInputs = new(); foreach (var inputConfigEntry in _inputConfig) { if (_controllers[(int)inputConfigEntry.PlayerIndex] != null) @@ -96,10 +98,8 @@ namespace Ryujinx.Input.HLE { return controller.UpdateDriverConfiguration(targetDriver, config); } - else - { - return controller.GamepadDriver != null; - } + + return controller.GamepadDriver != null; } public void ReloadConfiguration(List inputConfig, bool enableKeyboard, bool enableMouse) @@ -112,11 +112,11 @@ namespace Ryujinx.Input.HLE _controllers[i] = null; } - List validInputs = new List(); + List validInputs = new(); foreach (InputConfig inputConfigEntry in inputConfig) { - NpadController controller = new NpadController(_cemuHookClient); + NpadController controller = new(_cemuHookClient); bool isValid = DriverConfigurationUpdate(ref controller, inputConfigEntry); @@ -131,9 +131,9 @@ namespace Ryujinx.Input.HLE } } - _inputConfig = inputConfig; + _inputConfig = inputConfig; _enableKeyboard = enableKeyboard; - _enableMouse = enableMouse; + _enableMouse = enableMouse; _device.Hid.RefreshInputConfig(validInputs); } @@ -167,8 +167,8 @@ namespace Ryujinx.Input.HLE { lock (_lock) { - List hleInputStates = new List(); - List hleMotionStates = new List(NpadDevices.MaxControllers); + List hleInputStates = new(); + List hleMotionStates = new(NpadDevices.MaxControllers); KeyboardInput? hleKeyboardInput = null; @@ -178,7 +178,7 @@ namespace Ryujinx.Input.HLE (SixAxisInput, SixAxisInput) motionState = default; NpadController controller = _controllers[(int)inputConfig.PlayerIndex]; - Ryujinx.HLE.HOS.Services.Hid.PlayerIndex playerIndex = (Ryujinx.HLE.HOS.Services.Hid.PlayerIndex)inputConfig.PlayerIndex; + PlayerIndex playerIndex = (PlayerIndex)inputConfig.PlayerIndex; bool isJoyconPair = false; @@ -195,7 +195,7 @@ namespace Ryujinx.Input.HLE inputState.Buttons |= _device.Hid.UpdateStickButtons(inputState.LStick, inputState.RStick); - isJoyconPair = inputConfig.ControllerType == Common.Configuration.Hid.ControllerType.JoyconPair; + isJoyconPair = inputConfig.ControllerType == ControllerType.JoyconPair; var altMotionState = isJoyconPair ? controller.GetHLEMotionState(true) : default; @@ -284,7 +284,7 @@ namespace Ryujinx.Input.HLE { lock (_lock) { - return _inputConfig.Find(x => x.PlayerIndex == (Ryujinx.Common.Configuration.Hid.PlayerIndex)index); + return _inputConfig.Find(x => x.PlayerIndex == (Common.Configuration.Hid.PlayerIndex)index); } } @@ -314,6 +314,7 @@ namespace Ryujinx.Input.HLE public void Dispose() { + GC.SuppressFinalize(this); Dispose(true); } } diff --git a/src/Ryujinx.Input/HLE/TouchScreenManager.cs b/src/Ryujinx.Input/HLE/TouchScreenManager.cs index e4b0f8fc..c613f928 100644 --- a/src/Ryujinx.Input/HLE/TouchScreenManager.cs +++ b/src/Ryujinx.Input/HLE/TouchScreenManager.cs @@ -31,7 +31,7 @@ namespace Ryujinx.Input.HLE MouseStateSnapshot snapshot = IMouse.GetMouseStateSnapshot(_mouse); var touchPosition = IMouse.GetScreenPosition(snapshot.Position, _mouse.ClientSize, aspectRatio); - TouchPoint currentPoint = new TouchPoint + TouchPoint currentPoint = new() { Attribute = TouchAttribute.End, @@ -41,7 +41,7 @@ namespace Ryujinx.Input.HLE // Placeholder values till more data is acquired DiameterX = 10, DiameterY = 10, - Angle = 90 + Angle = 90, }; _device.Hid.Touchscreen.Update(currentPoint); @@ -71,7 +71,7 @@ namespace Ryujinx.Input.HLE attribute = TouchAttribute.End; } - TouchPoint currentPoint = new TouchPoint + TouchPoint currentPoint = new() { Attribute = attribute, @@ -81,7 +81,7 @@ namespace Ryujinx.Input.HLE // Placeholder values till more data is acquired DiameterX = 10, DiameterY = 10, - Angle = 90 + Angle = 90, }; _device.Hid.Touchscreen.Update(currentPoint); @@ -94,6 +94,9 @@ namespace Ryujinx.Input.HLE return false; } - public void Dispose() { } + public void Dispose() + { + GC.SuppressFinalize(this); + } } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/IMouse.cs b/src/Ryujinx.Input/IMouse.cs index fde150fc..e20e7798 100644 --- a/src/Ryujinx.Input/IMouse.cs +++ b/src/Ryujinx.Input/IMouse.cs @@ -8,7 +8,9 @@ namespace Ryujinx.Input /// public interface IMouse : IGamepad { +#pragma warning disable IDE0051 // Remove unused private member private const int SwitchPanelWidth = 1280; +#pragma warning restore IDE0051 private const int SwitchPanelHeight = 720; /// @@ -101,4 +103,4 @@ namespace Ryujinx.Input return new Vector2(); } } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Key.cs b/src/Ryujinx.Input/Key.cs index 5fa04484..b4229e05 100644 --- a/src/Ryujinx.Input/Key.cs +++ b/src/Ryujinx.Input/Key.cs @@ -137,6 +137,6 @@ BackSlash, Unbound, - Count + Count, } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/KeyboardStateSnapshot.cs b/src/Ryujinx.Input/KeyboardStateSnapshot.cs index da77a461..abf85666 100644 --- a/src/Ryujinx.Input/KeyboardStateSnapshot.cs +++ b/src/Ryujinx.Input/KeyboardStateSnapshot.cs @@ -7,7 +7,7 @@ namespace Ryujinx.Input /// public class KeyboardStateSnapshot { - private bool[] _keysState; + private readonly bool[] _keysState; /// /// Create a new . diff --git a/src/Ryujinx.Input/Motion/CemuHook/Client.cs b/src/Ryujinx.Input/Motion/CemuHook/Client.cs index a79412a1..b8b936c1 100644 --- a/src/Ryujinx.Input/Motion/CemuHook/Client.cs +++ b/src/Ryujinx.Input/Motion/CemuHook/Client.cs @@ -19,7 +19,7 @@ namespace Ryujinx.Input.Motion.CemuHook { public class Client : IDisposable { - public const uint Magic = 0x43555344; // DSUC + public const uint Magic = 0x43555344; // DSUC public const ushort Version = 1001; private bool _active; @@ -29,15 +29,15 @@ namespace Ryujinx.Input.Motion.CemuHook private readonly Dictionary _clients; private readonly bool[] _clientErrorStatus = new bool[Enum.GetValues().Length]; - private readonly long[] _clientRetryTimer = new long[Enum.GetValues().Length]; - private NpadManager _npadManager; + private readonly long[] _clientRetryTimer = new long[Enum.GetValues().Length]; + private readonly NpadManager _npadManager; public Client(NpadManager npadManager) { _npadManager = npadManager; - _hosts = new Dictionary(); - _motionData = new Dictionary>(); - _clients = new Dictionary(); + _hosts = new Dictionary(); + _motionData = new Dictionary>(); + _clients = new Dictionary(); CloseClients(); } @@ -84,7 +84,7 @@ namespace Ryujinx.Input.Motion.CemuHook try { - IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(host), port); + IPEndPoint endPoint = new(IPAddress.Parse(host), port); client = new UdpClient(host, port); @@ -141,9 +141,9 @@ namespace Ryujinx.Input.Motion.CemuHook { lock (_motionData) { - if (_motionData.ContainsKey(player)) + if (_motionData.TryGetValue(player, out Dictionary value)) { - if (_motionData[player].TryGetValue(slot, out input)) + if (value.TryGetValue(slot, out input)) { return true; } @@ -164,26 +164,26 @@ namespace Ryujinx.Input.Motion.CemuHook private void Send(byte[] data, int clientId) { - if (_clients.TryGetValue(clientId, out UdpClient _client)) + if (_clients.TryGetValue(clientId, out UdpClient client)) { - if (_client != null && _client.Client != null && _client.Client.Connected) + if (client != null && client.Client != null && client.Client.Connected) { try { - _client?.Send(data, data.Length); + client?.Send(data, data.Length); } catch (SocketException socketException) { if (!_clientErrorStatus[clientId]) { - Logger.Warning?.PrintMsg(LogClass.Hid, $"Unable to send data request to motion source at {_client.Client.RemoteEndPoint}. Error: {socketException.ErrorCode}"); + Logger.Warning?.PrintMsg(LogClass.Hid, $"Unable to send data request to motion source at {client.Client.RemoteEndPoint}. Error: {socketException.ErrorCode}"); } _clientErrorStatus[clientId] = true; RemoveClient(clientId); - _client?.Dispose(); + client?.Dispose(); SetRetryTimer(clientId); } @@ -193,7 +193,7 @@ namespace Ryujinx.Input.Motion.CemuHook RemoveClient(clientId); - _client?.Dispose(); + client?.Dispose(); SetRetryTimer(clientId); } @@ -203,13 +203,13 @@ namespace Ryujinx.Input.Motion.CemuHook private byte[] Receive(int clientId, int timeout = 0) { - if (_hosts.TryGetValue(clientId, out IPEndPoint endPoint) && _clients.TryGetValue(clientId, out UdpClient _client)) + if (_hosts.TryGetValue(clientId, out IPEndPoint endPoint) && _clients.TryGetValue(clientId, out UdpClient client)) { - if (_client != null && _client.Client != null && _client.Client.Connected) + if (client != null && client.Client != null && client.Client.Connected) { - _client.Client.ReceiveTimeout = timeout; + client.Client.ReceiveTimeout = timeout; - var result = _client?.Receive(ref endPoint); + var result = client?.Receive(ref endPoint); if (result.Length > 0) { @@ -242,9 +242,9 @@ namespace Ryujinx.Input.Motion.CemuHook public void ReceiveLoop(int clientId) { - if (_hosts.TryGetValue(clientId, out IPEndPoint endPoint) && _clients.TryGetValue(clientId, out UdpClient _client)) + if (_hosts.TryGetValue(clientId, out IPEndPoint endPoint) && _clients.TryGetValue(clientId, out UdpClient client)) { - if (_client != null && _client.Client != null && _client.Client.Connected) + if (client != null && client.Client != null && client.Client.Connected) { try { @@ -271,7 +271,7 @@ namespace Ryujinx.Input.Motion.CemuHook RemoveClient(clientId); - _client?.Dispose(); + client?.Dispose(); SetRetryTimer(clientId); } @@ -281,7 +281,7 @@ namespace Ryujinx.Input.Motion.CemuHook RemoveClient(clientId); - _client?.Dispose(); + client?.Dispose(); SetRetryTimer(clientId); } @@ -297,8 +297,8 @@ namespace Ryujinx.Input.Motion.CemuHook data = data.AsSpan()[16..].ToArray(); - using MemoryStream stream = new MemoryStream(data); - using BinaryReader reader = new BinaryReader(stream); + using MemoryStream stream = new(data); + using BinaryReader reader = new(stream); switch (type) { @@ -310,18 +310,18 @@ namespace Ryujinx.Input.Motion.CemuHook case MessageType.Data: ControllerDataResponse inputData = reader.ReadStruct(); - Vector3 accelerometer = new Vector3() + Vector3 accelerometer = new() { X = -inputData.AccelerometerX, Y = inputData.AccelerometerZ, - Z = -inputData.AccelerometerY + Z = -inputData.AccelerometerY, }; - Vector3 gyroscrope = new Vector3() + Vector3 gyroscrope = new() { X = inputData.GyroscopePitch, Y = inputData.GyroscopeRoll, - Z = -inputData.GyroscopeYaw + Z = -inputData.GyroscopeYaw, }; ulong timestamp = inputData.MotionTimestamp; @@ -346,7 +346,7 @@ namespace Ryujinx.Input.Motion.CemuHook } else { - MotionInput input = new MotionInput(); + MotionInput input = new(); input.Update(accelerometer, gyroscrope, timestamp, cemuHookConfig.Sensitivity, (float)cemuHookConfig.GyroDeadzone); @@ -355,11 +355,11 @@ namespace Ryujinx.Input.Motion.CemuHook } else { - MotionInput input = new MotionInput(); + MotionInput input = new(); input.Update(accelerometer, gyroscrope, timestamp, cemuHookConfig.Sensitivity, (float)cemuHookConfig.GyroDeadzone); - _motionData.Add(clientId, new Dictionary() { { slot, input } }); + _motionData.Add(clientId, new Dictionary { { slot, input } }); } } else @@ -380,38 +380,37 @@ namespace Ryujinx.Input.Motion.CemuHook Header header = GenerateHeader(clientId); - using (MemoryStream stream = MemoryStreamManager.Shared.GetStream()) - using (BinaryWriter writer = new BinaryWriter(stream)) + using MemoryStream stream = MemoryStreamManager.Shared.GetStream(); + using BinaryWriter writer = new(stream); + + writer.WriteStruct(header); + + ControllerInfoRequest request = new() { - writer.WriteStruct(header); + Type = MessageType.Info, + PortsCount = 4, + }; - ControllerInfoRequest request = new ControllerInfoRequest() - { - Type = MessageType.Info, - PortsCount = 4 - }; + request.PortIndices[0] = (byte)slot; - request.PortIndices[0] = (byte)slot; + writer.WriteStruct(request); - writer.WriteStruct(request); + header.Length = (ushort)(stream.Length - 16); - header.Length = (ushort)(stream.Length - 16); + writer.Seek(6, SeekOrigin.Begin); + writer.Write(header.Length); - writer.Seek(6, SeekOrigin.Begin); - writer.Write(header.Length); + Crc32.Hash(stream.ToArray(), header.Crc32.AsSpan()); - Crc32.Hash(stream.ToArray(), header.Crc32.AsSpan()); + writer.Seek(8, SeekOrigin.Begin); + writer.Write(header.Crc32.AsSpan()); - writer.Seek(8, SeekOrigin.Begin); - writer.Write(header.Crc32.AsSpan()); + byte[] data = stream.ToArray(); - byte[] data = stream.ToArray(); - - Send(data, clientId); - } + Send(data, clientId); } - public unsafe void RequestData(int clientId, int slot) + public void RequestData(int clientId, int slot) { if (!_active) { @@ -420,44 +419,43 @@ namespace Ryujinx.Input.Motion.CemuHook Header header = GenerateHeader(clientId); - using (MemoryStream stream = MemoryStreamManager.Shared.GetStream()) - using (BinaryWriter writer = new BinaryWriter(stream)) + using MemoryStream stream = MemoryStreamManager.Shared.GetStream(); + using BinaryWriter writer = new(stream); + + writer.WriteStruct(header); + + ControllerDataRequest request = new() { - writer.WriteStruct(header); + Type = MessageType.Data, + Slot = (byte)slot, + SubscriberType = SubscriberType.Slot, + }; - ControllerDataRequest request = new ControllerDataRequest() - { - Type = MessageType.Data, - Slot = (byte)slot, - SubscriberType = SubscriberType.Slot - }; + writer.WriteStruct(request); - writer.WriteStruct(request); + header.Length = (ushort)(stream.Length - 16); - header.Length = (ushort)(stream.Length - 16); + writer.Seek(6, SeekOrigin.Begin); + writer.Write(header.Length); - writer.Seek(6, SeekOrigin.Begin); - writer.Write(header.Length); + Crc32.Hash(stream.ToArray(), header.Crc32.AsSpan()); - Crc32.Hash(stream.ToArray(), header.Crc32.AsSpan()); + writer.Seek(8, SeekOrigin.Begin); + writer.Write(header.Crc32.AsSpan()); - writer.Seek(8, SeekOrigin.Begin); - writer.Write(header.Crc32.AsSpan()); + byte[] data = stream.ToArray(); - byte[] data = stream.ToArray(); - - Send(data, clientId); - } + Send(data, clientId); } - private Header GenerateHeader(int clientId) + private static Header GenerateHeader(int clientId) { - Header header = new Header() + Header header = new() { - Id = (uint)clientId, + Id = (uint)clientId, MagicString = Magic, - Version = Version, - Length = 0 + Version = Version, + Length = 0, }; return header; @@ -465,9 +463,10 @@ namespace Ryujinx.Input.Motion.CemuHook public void Dispose() { + GC.SuppressFinalize(this); _active = false; CloseClients(); } } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs index 7fb72344..4eee2e8e 100644 --- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs +++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs @@ -16,15 +16,15 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol public struct ControllerDataResponse { public SharedResponse Shared; - public byte Connected; - public uint PacketId; - public byte ExtraButtons; - public byte MainButtons; - public ushort PSExtraInput; - public ushort LeftStickXY; - public ushort RightStickXY; - public uint DPadAnalog; - public ulong MainButtonsAnalog; + public byte Connected; + public uint PacketId; + public byte ExtraButtons; + public byte MainButtons; + public ushort PSExtraInput; + public ushort LeftStickXY; + public ushort RightStickXY; + public uint DPadAnalog; + public ulong MainButtonsAnalog; public Array6 Touch1; public Array6 Touch2; @@ -42,6 +42,6 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol { All, Slot, - Mac + Mac, } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs index 63d4524a..3e51c291 100644 --- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs +++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs @@ -7,7 +7,7 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol public struct ControllerInfoResponse { public SharedResponse Shared; - private byte _zero; + private readonly byte _zero; } [StructLayout(LayoutKind.Sequential, Pack = 1)] @@ -17,4 +17,4 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol public int PortsCount; public Array4 PortIndices; } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs index 57f58ff0..142006d1 100644 --- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs +++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs @@ -12,4 +12,4 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol public Array4 Crc32; public uint Id; } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/MessageType.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/MessageType.cs index de1e5e90..5ef15a7a 100644 --- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/MessageType.cs +++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/MessageType.cs @@ -4,6 +4,6 @@ { Protocol = 0x100000, Info, - Data + Data, } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs b/src/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs index e2e1ee9b..be37f53b 100644 --- a/src/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs +++ b/src/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs @@ -6,11 +6,11 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct SharedResponse { - public MessageType Type; - public byte Slot; - public SlotState State; + public MessageType Type; + public byte Slot; + public SlotState State; public DeviceModelType ModelType; - public ConnectionType ConnectionType; + public ConnectionType ConnectionType; public Array6 MacAddress; public BatteryStatus BatteryStatus; @@ -20,21 +20,21 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol { Disconnected, Reserved, - Connected + Connected, } public enum DeviceModelType : byte { None, PartialGyro, - FullGyro + FullGyro, } public enum ConnectionType : byte { None, USB, - Bluetooth + Bluetooth, } public enum BatteryStatus : byte @@ -46,6 +46,6 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol High, Full, Charging, - Charged + Charged, } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Motion/MotionInput.cs b/src/Ryujinx.Input/Motion/MotionInput.cs index 1923d9cb..2c7af58f 100644 --- a/src/Ryujinx.Input/Motion/MotionInput.cs +++ b/src/Ryujinx.Input/Motion/MotionInput.cs @@ -6,19 +6,19 @@ namespace Ryujinx.Input { public class MotionInput { - public ulong TimeStamp { get; set; } + public ulong TimeStamp { get; set; } public Vector3 Accelerometer { get; set; } - public Vector3 Gyroscrope { get; set; } - public Vector3 Rotation { get; set; } + public Vector3 Gyroscrope { get; set; } + public Vector3 Rotation { get; set; } private readonly MotionSensorFilter _filter; public MotionInput() { - TimeStamp = 0; + TimeStamp = 0; Accelerometer = new Vector3(); - Gyroscrope = new Vector3(); - Rotation = new Vector3(); + Gyroscrope = new Vector3(); + Rotation = new Vector3(); // TODO: RE the correct filter. _filter = new MotionSensorFilter(0f); @@ -62,4 +62,4 @@ namespace Ryujinx.Input return degree * (MathF.PI / 180); } } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/Motion/MotionSensorFilter.cs b/src/Ryujinx.Input/Motion/MotionSensorFilter.cs index 440fa7ac..1a974968 100644 --- a/src/Ryujinx.Input/Motion/MotionSensorFilter.cs +++ b/src/Ryujinx.Input/Motion/MotionSensorFilter.cs @@ -106,19 +106,19 @@ namespace Ryujinx.Input.Motion float q1 = Quaternion.W; // Estimated direction of gravity. - Vector3 gravity = new Vector3() + Vector3 gravity = new() { X = 2f * (q2 * q4 - q1 * q3), Y = 2f * (q1 * q2 + q3 * q4), - Z = q1 * q1 - q2 * q2 - q3 * q3 + q4 * q4 + Z = q1 * q1 - q2 * q2 - q3 * q3 + q4 * q4, }; // Error is cross product between estimated direction and measured direction of gravity. - Vector3 error = new Vector3() + Vector3 error = new() { X = accel.Y * gravity.Z - accel.Z * gravity.Y, Y = accel.Z * gravity.X - accel.X * gravity.Z, - Z = accel.X * gravity.Y - accel.Y * gravity.X + Z = accel.X * gravity.Y - accel.Y * gravity.X, }; if (Ki > 0f) @@ -134,7 +134,7 @@ namespace Ryujinx.Input.Motion gyro += (Kp * error) + (Ki * _intergralError); // Integrate rate of change of quaternion. - Vector3 delta = new Vector3(q2, q3, q4); + Vector3 delta = new(q2, q3, q4); q1 += (-q2 * gyro.X - q3 * gyro.Y - q4 * gyro.Z) * (SampleRateCoefficient * SamplePeriod); q2 += (q1 * gyro.X + delta.Y * gyro.Z - delta.Z * gyro.Y) * (SampleRateCoefficient * SamplePeriod); @@ -142,7 +142,7 @@ namespace Ryujinx.Input.Motion q4 += (q1 * gyro.Z + delta.X * gyro.Y - delta.Y * gyro.X) * (SampleRateCoefficient * SamplePeriod); // Normalise quaternion. - Quaternion quaternion = new Quaternion(q2, q3, q4, q1); + Quaternion quaternion = new(q2, q3, q4, q1); norm = 1f / quaternion.Length(); @@ -159,4 +159,4 @@ namespace Ryujinx.Input.Motion Quaternion = Quaternion.Identity; } } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/MotionInputId.cs b/src/Ryujinx.Input/MotionInputId.cs index 3176a987..61c7d305 100644 --- a/src/Ryujinx.Input/MotionInputId.cs +++ b/src/Ryujinx.Input/MotionInputId.cs @@ -20,6 +20,6 @@ /// Gyroscope. /// /// Values are in degrees - Gyroscope + Gyroscope, } } diff --git a/src/Ryujinx.Input/MouseButton.cs b/src/Ryujinx.Input/MouseButton.cs index ab764216..a2991002 100644 --- a/src/Ryujinx.Input/MouseButton.cs +++ b/src/Ryujinx.Input/MouseButton.cs @@ -11,6 +11,6 @@ namespace Ryujinx.Input Button7, Button8, Button9, - Count + Count, } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/MouseStateSnapshot.cs b/src/Ryujinx.Input/MouseStateSnapshot.cs index ddfdebc6..9efc9f9c 100644 --- a/src/Ryujinx.Input/MouseStateSnapshot.cs +++ b/src/Ryujinx.Input/MouseStateSnapshot.cs @@ -8,7 +8,7 @@ namespace Ryujinx.Input /// public class MouseStateSnapshot { - private bool[] _buttonState; + private readonly bool[] _buttonState; /// /// The position of the mouse cursor @@ -31,7 +31,7 @@ namespace Ryujinx.Input _buttonState = buttonState; Position = position; - Scroll = scroll; + Scroll = scroll; } /// @@ -42,4 +42,4 @@ namespace Ryujinx.Input [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool IsPressed(MouseButton button) => _buttonState[(int)button]; } -} \ No newline at end of file +} diff --git a/src/Ryujinx.Input/StickInputId.cs b/src/Ryujinx.Input/StickInputId.cs index fc9d8043..94c0f25e 100644 --- a/src/Ryujinx.Input/StickInputId.cs +++ b/src/Ryujinx.Input/StickInputId.cs @@ -9,6 +9,6 @@ Left, Right, - Count + Count, } }