diff options
author | emmauss <emmausssss@gmail.com> | 2020-09-29 21:32:42 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-29 23:32:42 +0200 |
commit | 26319d5ab3a4d2f93fc7acb70760d9f96575ee07 (patch) | |
tree | 797d5d828785813d141949decacd6d55f0d4dc0e /Ryujinx/Motion/Protocol/ControllerData.cs | |
parent | a6f8a0b01ed3c36d537825de4c27acdec4e7d638 (diff) |
Add Motion controls (#1363)
* Add motion controls
Apply suggestions from code review
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* cleanup
* add reference orientation and derive relative orientation from it
* cleanup
* remove unused variable and strange file
* Review_2.
* change GetInput to TryGetInput
* Review_3.
Co-authored-by: Ac_K <Acoustik666@gmail.com>
Co-authored-by: LDj3SNuD <dvitiello@gmail.com>
Diffstat (limited to 'Ryujinx/Motion/Protocol/ControllerData.cs')
-rw-r--r-- | Ryujinx/Motion/Protocol/ControllerData.cs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Ryujinx/Motion/Protocol/ControllerData.cs b/Ryujinx/Motion/Protocol/ControllerData.cs new file mode 100644 index 00000000..4b4919a1 --- /dev/null +++ b/Ryujinx/Motion/Protocol/ControllerData.cs @@ -0,0 +1,50 @@ +using System.Runtime.InteropServices; + +namespace Ryujinx.Motion +{ + [StructLayout(LayoutKind.Sequential, Pack = 1)] + struct ControllerDataRequest + { + public MessageType Type; + public SubscriberType SubscriberType; + public byte Slot; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] + public byte[] MacAddress; + } + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + 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; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] + public byte[] Touch1; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] + public byte[] Touch2; + public ulong MotionTimestamp; + public float AccelerometerX; + public float AccelerometerY; + public float AccelerometerZ; + public float GyroscopePitch; + public float GyroscopeYaw; + public float GyroscopeRoll; + } + + enum SubscriberType : byte + { + All = 0, + Slot, + Mac + } +} |