From fbe33534033038aada1a32ddfcaf8754b69937d6 Mon Sep 17 00:00:00 2001 From: ATG-Simulator <16223109+ATG-Simulator@users.noreply.github.com> Date: Wed, 25 Dec 2024 00:50:50 +0100 Subject: [PATCH 01/13] Added custom force feedback & fix periodic effects - Add DIPERIODIC structure support for Sine/Square/Triangle/Sawtooth effects - Implement proper effect creation and parameter handling - Add effect cleanup and release in DestroyFFBEffect - Fix memory management for periodic effects - Add debug logging for effect lifecycle tracking - Fix effect persistence after device reattachment - Set correct periodic effect parameters (magnitude, period, phase) - Integrate with existing FFB effect management system - Fixed periodic effects initialization and updates - Added debug logging system for FFB effect creation and updates - Implemented proper force data array management - Added sample period handling based on device capabilities - Corrected effect parameter initialization sequence - Added proper cleanup for custom force resources - Improved error handling and debug reporting Technical details: - Implemented DICUSTOMFORCE structure with proper initialization - Added support for 10 magnitude inputs and sample period control - Fixed effect parameter synchronization between C++ and C# - Added proper memory management for force data arrays - Fixed E_INVALIDARG (0x80070057) error debugging - Added comprehensive debug logging system - Added proper cleanup in DestroyFFBEffect Known issues: - Custom force effect creation still returns E_INVALIDARG despite correct parameters - Device reports custom force support but rejects effect creation Note: Custom force implementation needs further investigation as the device reports support but rejects creation with proper parameters. A debug log will be created once it tested every time. --- .../DirectInputExplorer/Form1.Designer.cs | 2754 +++++++++++------ .../DirectInputExplorer/Form1.cs | 665 ++-- .../DirectInputExplorer/Form1.resx | 62 +- .../DirectInputExplorer.deps.json | 23 - .../net5.0-windows/DirectInputExplorer.dll | Bin 49152 -> 0 bytes .../net5.0-windows/DirectInputExplorer.exe | Bin 125952 -> 0 bytes ...DirectInputExplorer.runtimeconfig.dev.json | 8 - .../DirectInputExplorer.runtimeconfig.json | 9 - .../DirectInputForceFeedbackDemoApp.deps.json | 23 - .../DirectInputForceFeedbackDemoApp.dll | Bin 16384 -> 0 bytes .../DirectInputForceFeedbackDemoApp.exe | Bin 128000 -> 0 bytes ...orceFeedbackDemoApp.runtimeconfig.dev.json | 8 - ...putForceFeedbackDemoApp.runtimeconfig.json | 9 - .../ref/DirectInputExplorer.dll | Bin 13824 -> 0 bytes .../ref/DirectInputForceFeedbackDemoApp.dll | Bin 9216 -> 0 bytes .../DirectInputExplorer.AssemblyInfo.cs | 25 - .../DirectInputExplorer.Form1.resources | Bin 180 -> 0 bytes ....GeneratedMSBuildEditorConfig.editorconfig | 17 - .../net5.0-windows/DirectInputExplorer.dll | Bin 49152 -> 0 bytes .../obj/Debug/net5.0-windows/apphost.exe | Bin 125952 -> 126464 bytes .../ref/DirectInputExplorer.dll | Bin 14848 -> 0 bytes .../refint/DirectInputExplorer.dll | Bin 14848 -> 0 bytes .../DirectInputForceFeedback.cpp | 1380 +++++---- .../DirectInputForceFeedback.vcxproj | 4 + .../x64/Debug/vc143.idb | Bin 912384 -> 0 bytes .../x64/Debug/DirectInputForceFeedback.dll | Bin 436224 -> 0 bytes .../x64/Debug/DirectInputForceFeedback.exp | Bin 2979 -> 0 bytes .../x64/Debug/DirectInputForceFeedback.lib | Bin 5780 -> 0 bytes .../x64/Release/DirectInputForceFeedback.dll | Bin 60928 -> 64000 bytes .../x64/Release/DirectInputForceFeedback.exp | Bin 2981 -> 3391 bytes .../x64/Release/DirectInputForceFeedback.lib | Bin 5780 -> 6558 bytes Plugin/DLL/DirectInputForceFeedback.dll | Bin 60928 -> 428032 bytes Plugin/DirectInputManager.cs | 1724 ++++++----- Plugin/DirectInputTypes.cs | 21 +- 34 files changed, 4182 insertions(+), 2550 deletions(-) delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.deps.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.exe delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.dev.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.deps.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.exe delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.runtimeconfig.dev.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.runtimeconfig.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/ref/DirectInputExplorer.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/ref/DirectInputForceFeedbackDemoApp.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.AssemblyInfo.cs delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.Form1.resources delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.GeneratedMSBuildEditorConfig.editorconfig delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/ref/DirectInputExplorer.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/refint/DirectInputExplorer.dll delete mode 100644 DirectInputForceFeedback~/DirectInputForceFeedback/x64/Debug/vc143.idb delete mode 100644 DirectInputForceFeedback~/x64/Debug/DirectInputForceFeedback.dll delete mode 100644 DirectInputForceFeedback~/x64/Debug/DirectInputForceFeedback.exp delete mode 100644 DirectInputForceFeedback~/x64/Debug/DirectInputForceFeedback.lib diff --git a/DirectInputExplorer~/DirectInputExplorer/Form1.Designer.cs b/DirectInputExplorer~/DirectInputExplorer/Form1.Designer.cs index 23c9147..5501835 100644 --- a/DirectInputExplorer~/DirectInputExplorer/Form1.Designer.cs +++ b/DirectInputExplorer~/DirectInputExplorer/Form1.Designer.cs @@ -21,868 +21,1834 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.ComboBoxDevices = new System.Windows.Forms.ComboBox(); - this.ButtonEnumerateDevices = new System.Windows.Forms.Button(); - this.LabelDeviceInfo = new System.Windows.Forms.Label(); - this.TimerPoll = new System.Windows.Forms.Timer(this.components); - this.ButtonAttach = new System.Windows.Forms.Button(); - this.ButtonRemove = new System.Windows.Forms.Button(); - this.TabController = new System.Windows.Forms.TabControl(); - this.TabDeviceInfo = new System.Windows.Forms.TabPage(); - this.LabelFFBCapabilities = new System.Windows.Forms.Label(); - this.LabelCapabilities = new System.Windows.Forms.Label(); - this.TabInput = new System.Windows.Forms.TabPage(); - this.LabelInput = new System.Windows.Forms.Label(); - this.TabFFB = new System.Windows.Forms.TabPage(); - this.GBSpring = new System.Windows.Forms.GroupBox(); - this.CBSpring = new System.Windows.Forms.CheckBox(); - this.UDSpringDeadband = new System.Windows.Forms.NumericUpDown(); - this.UDSpringSaturation = new System.Windows.Forms.NumericUpDown(); - this.UDSpringCoefficient = new System.Windows.Forms.NumericUpDown(); - this.UDSpringOffset = new System.Windows.Forms.NumericUpDown(); - this.SliderSpringDeadband = new System.Windows.Forms.TrackBar(); - this.LabelSpringDeadband = new System.Windows.Forms.Label(); - this.SliderSpringSaturation = new System.Windows.Forms.TrackBar(); - this.LabelSpringSaturation = new System.Windows.Forms.Label(); - this.SliderSpringCoefficient = new System.Windows.Forms.TrackBar(); - this.LabelSpringCoefficient = new System.Windows.Forms.Label(); - this.SliderSpringOffset = new System.Windows.Forms.TrackBar(); - this.LabelSpringOffset = new System.Windows.Forms.Label(); - this.GBInertia = new System.Windows.Forms.GroupBox(); - this.CBInertia = new System.Windows.Forms.CheckBox(); - this.UDInertiaMagnitude = new System.Windows.Forms.NumericUpDown(); - this.LabelInertiaMagnitude = new System.Windows.Forms.Label(); - this.SliderInertiaMagnitude = new System.Windows.Forms.TrackBar(); - this.GBFriction = new System.Windows.Forms.GroupBox(); - this.UDFrictionMagnitude = new System.Windows.Forms.NumericUpDown(); - this.CBFriction = new System.Windows.Forms.CheckBox(); - this.LabelFrictionMagnitude = new System.Windows.Forms.Label(); - this.SliderFrictionMagnitude = new System.Windows.Forms.TrackBar(); - this.GBDamper = new System.Windows.Forms.GroupBox(); - this.UDDamperMagnitude = new System.Windows.Forms.NumericUpDown(); - this.LabelDamperMagnitude = new System.Windows.Forms.Label(); - this.CBDamper = new System.Windows.Forms.CheckBox(); - this.SliderDamperMagnitude = new System.Windows.Forms.TrackBar(); - this.GBConstantForce = new System.Windows.Forms.GroupBox(); - this.CBConstantForce = new System.Windows.Forms.CheckBox(); - this.UDConstantForceMagnitude = new System.Windows.Forms.NumericUpDown(); - this.LabelConstantForceMagnitude = new System.Windows.Forms.Label(); - this.SliderConstantForceMagnitude = new System.Windows.Forms.TrackBar(); - this.TabMisc = new System.Windows.Forms.TabPage(); - this.LabelDebug = new System.Windows.Forms.Label(); - this.ButtonDebug = new System.Windows.Forms.Button(); - this.TabController.SuspendLayout(); - this.TabDeviceInfo.SuspendLayout(); - this.TabInput.SuspendLayout(); - this.TabFFB.SuspendLayout(); - this.GBSpring.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDSpringDeadband)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.UDSpringSaturation)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.UDSpringCoefficient)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.UDSpringOffset)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderSpringDeadband)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderSpringSaturation)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderSpringCoefficient)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderSpringOffset)).BeginInit(); - this.GBInertia.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDInertiaMagnitude)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderInertiaMagnitude)).BeginInit(); - this.GBFriction.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDFrictionMagnitude)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderFrictionMagnitude)).BeginInit(); - this.GBDamper.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDDamperMagnitude)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderDamperMagnitude)).BeginInit(); - this.GBConstantForce.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDConstantForceMagnitude)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderConstantForceMagnitude)).BeginInit(); - this.TabMisc.SuspendLayout(); - this.SuspendLayout(); - // - // ComboBoxDevices - // - this.ComboBoxDevices.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.ComboBoxDevices.FormattingEnabled = true; - this.ComboBoxDevices.Location = new System.Drawing.Point(12, 12); - this.ComboBoxDevices.Name = "ComboBoxDevices"; - this.ComboBoxDevices.Size = new System.Drawing.Size(976, 23); - this.ComboBoxDevices.TabIndex = 1; - this.ComboBoxDevices.SelectedIndexChanged += new System.EventHandler(this.ComboBoxDevices_SelectedIndexChanged); - // - // ButtonEnumerateDevices - // - this.ButtonEnumerateDevices.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.ButtonEnumerateDevices.Location = new System.Drawing.Point(994, 12); - this.ButtonEnumerateDevices.Name = "ButtonEnumerateDevices"; - this.ButtonEnumerateDevices.Size = new System.Drawing.Size(40, 23); - this.ButtonEnumerateDevices.TabIndex = 2; - this.ButtonEnumerateDevices.Text = "🔄"; - this.ButtonEnumerateDevices.UseVisualStyleBackColor = true; - this.ButtonEnumerateDevices.Click += new System.EventHandler(this.ButtonEnumerateDevices_Click); - // - // LabelDeviceInfo - // - this.LabelDeviceInfo.AutoSize = true; - this.LabelDeviceInfo.Location = new System.Drawing.Point(5, 5); - this.LabelDeviceInfo.Name = "LabelDeviceInfo"; - this.LabelDeviceInfo.Size = new System.Drawing.Size(69, 15); - this.LabelDeviceInfo.TabIndex = 3; - this.LabelDeviceInfo.Text = "Device Info:"; - // - // TimerPoll - // - this.TimerPoll.Enabled = true; - this.TimerPoll.Interval = 20; - this.TimerPoll.Tick += new System.EventHandler(this.TimerPoll_Tick_1); - // - // ButtonAttach - // - this.ButtonAttach.Location = new System.Drawing.Point(1040, 12); - this.ButtonAttach.Name = "ButtonAttach"; - this.ButtonAttach.Size = new System.Drawing.Size(100, 23); - this.ButtonAttach.TabIndex = 5; - this.ButtonAttach.Text = "Attach"; - this.ButtonAttach.UseVisualStyleBackColor = true; - this.ButtonAttach.Click += new System.EventHandler(this.ButtonAttach_Click); - // - // ButtonRemove - // - this.ButtonRemove.Location = new System.Drawing.Point(1146, 12); - this.ButtonRemove.Name = "ButtonRemove"; - this.ButtonRemove.Size = new System.Drawing.Size(100, 23); - this.ButtonRemove.TabIndex = 6; - this.ButtonRemove.Text = "Remove"; - this.ButtonRemove.UseVisualStyleBackColor = true; - this.ButtonRemove.Click += new System.EventHandler(this.ButtonRemove_Click); - // - // TabController - // - this.TabController.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.TabController.Controls.Add(this.TabDeviceInfo); - this.TabController.Controls.Add(this.TabInput); - this.TabController.Controls.Add(this.TabFFB); - this.TabController.Controls.Add(this.TabMisc); - this.TabController.Location = new System.Drawing.Point(12, 41); - this.TabController.Name = "TabController"; - this.TabController.SelectedIndex = 0; - this.TabController.Size = new System.Drawing.Size(1234, 665); - this.TabController.TabIndex = 7; - // - // TabDeviceInfo - // - this.TabDeviceInfo.Controls.Add(this.LabelDeviceInfo); - this.TabDeviceInfo.Controls.Add(this.LabelFFBCapabilities); - this.TabDeviceInfo.Controls.Add(this.LabelCapabilities); - this.TabDeviceInfo.Location = new System.Drawing.Point(4, 24); - this.TabDeviceInfo.Name = "TabDeviceInfo"; - this.TabDeviceInfo.Size = new System.Drawing.Size(1226, 637); - this.TabDeviceInfo.TabIndex = 3; - this.TabDeviceInfo.Text = "Info"; - this.TabDeviceInfo.UseVisualStyleBackColor = true; - // - // LabelFFBCapabilities - // - this.LabelFFBCapabilities.AutoSize = true; - this.LabelFFBCapabilities.Location = new System.Drawing.Point(5, 408); - this.LabelFFBCapabilities.MaximumSize = new System.Drawing.Size(1226, 0); - this.LabelFFBCapabilities.Name = "LabelFFBCapabilities"; - this.LabelFFBCapabilities.Size = new System.Drawing.Size(157, 15); - this.LabelFFBCapabilities.TabIndex = 4; - this.LabelFFBCapabilities.Text = "FFBCapabilities: Attatch First"; - // - // LabelCapabilities - // - this.LabelCapabilities.AutoSize = true; - this.LabelCapabilities.Location = new System.Drawing.Point(5, 165); - this.LabelCapabilities.MaximumSize = new System.Drawing.Size(1226, 0); - this.LabelCapabilities.Name = "LabelCapabilities"; - this.LabelCapabilities.Size = new System.Drawing.Size(138, 15); - this.LabelCapabilities.TabIndex = 4; - this.LabelCapabilities.Text = "Capabilities: Attatch First"; - // - // TabInput - // - this.TabInput.Controls.Add(this.LabelInput); - this.TabInput.Location = new System.Drawing.Point(4, 24); - this.TabInput.Name = "TabInput"; - this.TabInput.Padding = new System.Windows.Forms.Padding(3); - this.TabInput.Size = new System.Drawing.Size(1226, 637); - this.TabInput.TabIndex = 0; - this.TabInput.Text = "Input"; - this.TabInput.UseVisualStyleBackColor = true; - // - // LabelInput - // - this.LabelInput.AutoSize = true; - this.LabelInput.Location = new System.Drawing.Point(5, 5); - this.LabelInput.Name = "LabelInput"; - this.LabelInput.Size = new System.Drawing.Size(101, 15); - this.LabelInput.TabIndex = 4; - this.LabelInput.Text = "Input: Attach First"; - // - // TabFFB - // - this.TabFFB.Controls.Add(this.GBSpring); - this.TabFFB.Controls.Add(this.GBInertia); - this.TabFFB.Controls.Add(this.GBFriction); - this.TabFFB.Controls.Add(this.GBDamper); - this.TabFFB.Controls.Add(this.GBConstantForce); - this.TabFFB.Location = new System.Drawing.Point(4, 24); - this.TabFFB.Name = "TabFFB"; - this.TabFFB.Padding = new System.Windows.Forms.Padding(3); - this.TabFFB.Size = new System.Drawing.Size(1226, 637); - this.TabFFB.TabIndex = 1; - this.TabFFB.Text = "FFB"; - this.TabFFB.UseVisualStyleBackColor = true; - // - // GBSpring - // - this.GBSpring.Controls.Add(this.CBSpring); - this.GBSpring.Controls.Add(this.UDSpringDeadband); - this.GBSpring.Controls.Add(this.UDSpringSaturation); - this.GBSpring.Controls.Add(this.UDSpringCoefficient); - this.GBSpring.Controls.Add(this.UDSpringOffset); - this.GBSpring.Controls.Add(this.SliderSpringDeadband); - this.GBSpring.Controls.Add(this.LabelSpringDeadband); - this.GBSpring.Controls.Add(this.SliderSpringSaturation); - this.GBSpring.Controls.Add(this.LabelSpringSaturation); - this.GBSpring.Controls.Add(this.SliderSpringCoefficient); - this.GBSpring.Controls.Add(this.LabelSpringCoefficient); - this.GBSpring.Controls.Add(this.SliderSpringOffset); - this.GBSpring.Controls.Add(this.LabelSpringOffset); - this.GBSpring.Location = new System.Drawing.Point(6, 80); - this.GBSpring.Name = "GBSpring"; - this.GBSpring.Size = new System.Drawing.Size(1214, 180); - this.GBSpring.TabIndex = 0; - this.GBSpring.TabStop = false; - this.GBSpring.Tag = "Spring"; - this.GBSpring.Text = " Spring Force"; - this.GBSpring.Click += new System.EventHandler(this.FFB_GroupBox_Click); - // - // CBSpring - // - this.CBSpring.AutoSize = true; - this.CBSpring.Location = new System.Drawing.Point(0, 3); - this.CBSpring.Name = "CBSpring"; - this.CBSpring.Size = new System.Drawing.Size(15, 14); - this.CBSpring.TabIndex = 1; - this.CBSpring.Tag = "Spring"; - this.CBSpring.UseVisualStyleBackColor = true; - this.CBSpring.CheckedChanged += new System.EventHandler(this.FFB_CheckBox_CheckedChanged); - // - // UDSpringDeadband - // - this.UDSpringDeadband.Enabled = false; - this.UDSpringDeadband.Increment = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.UDSpringDeadband.Location = new System.Drawing.Point(1112, 141); - this.UDSpringDeadband.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.UDSpringDeadband.Minimum = new decimal(new int[] { - 10000, - 0, - 0, - -2147483648}); - this.UDSpringDeadband.Name = "UDSpringDeadband"; - this.UDSpringDeadband.Size = new System.Drawing.Size(96, 23); - this.UDSpringDeadband.TabIndex = 2; - this.UDSpringDeadband.Tag = "SpringDeadband"; - this.UDSpringDeadband.ValueChanged += new System.EventHandler(this.FFB_UpDown_ValueChanged); - // - // UDSpringSaturation - // - this.UDSpringSaturation.Enabled = false; - this.UDSpringSaturation.Increment = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.UDSpringSaturation.Location = new System.Drawing.Point(1112, 104); - this.UDSpringSaturation.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.UDSpringSaturation.Name = "UDSpringSaturation"; - this.UDSpringSaturation.Size = new System.Drawing.Size(96, 23); - this.UDSpringSaturation.TabIndex = 2; - this.UDSpringSaturation.Tag = "SpringSaturation"; - this.UDSpringSaturation.Value = new decimal(new int[] { - 5000, - 0, - 0, - 0}); - this.UDSpringSaturation.ValueChanged += new System.EventHandler(this.FFB_UpDown_ValueChanged); - // - // UDSpringCoefficient - // - this.UDSpringCoefficient.Enabled = false; - this.UDSpringCoefficient.Increment = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.UDSpringCoefficient.Location = new System.Drawing.Point(1112, 67); - this.UDSpringCoefficient.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.UDSpringCoefficient.Minimum = new decimal(new int[] { - 10000, - 0, - 0, - -2147483648}); - this.UDSpringCoefficient.Name = "UDSpringCoefficient"; - this.UDSpringCoefficient.Size = new System.Drawing.Size(96, 23); - this.UDSpringCoefficient.TabIndex = 2; - this.UDSpringCoefficient.Tag = "SpringCoefficient"; - this.UDSpringCoefficient.ValueChanged += new System.EventHandler(this.FFB_UpDown_ValueChanged); - // - // UDSpringOffset - // - this.UDSpringOffset.Enabled = false; - this.UDSpringOffset.Increment = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.UDSpringOffset.Location = new System.Drawing.Point(1112, 30); - this.UDSpringOffset.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.UDSpringOffset.Minimum = new decimal(new int[] { - 10000, - 0, - 0, - -2147483648}); - this.UDSpringOffset.Name = "UDSpringOffset"; - this.UDSpringOffset.Size = new System.Drawing.Size(96, 23); - this.UDSpringOffset.TabIndex = 2; - this.UDSpringOffset.Tag = "SpringOffset"; - this.UDSpringOffset.ValueChanged += new System.EventHandler(this.FFB_UpDown_ValueChanged); - // - // SliderSpringDeadband - // - this.SliderSpringDeadband.AutoSize = false; - this.SliderSpringDeadband.BackColor = System.Drawing.SystemColors.Control; - this.SliderSpringDeadband.Enabled = false; - this.SliderSpringDeadband.LargeChange = 50; - this.SliderSpringDeadband.Location = new System.Drawing.Point(108, 141); - this.SliderSpringDeadband.Maximum = 10000; - this.SliderSpringDeadband.Name = "SliderSpringDeadband"; - this.SliderSpringDeadband.Size = new System.Drawing.Size(998, 31); - this.SliderSpringDeadband.TabIndex = 0; - this.SliderSpringDeadband.Tag = "SpringDeadband"; - this.SliderSpringDeadband.TickStyle = System.Windows.Forms.TickStyle.None; - this.SliderSpringDeadband.Scroll += new System.EventHandler(this.FFB_Slider_Scroll); - // - // LabelSpringDeadband - // - this.LabelSpringDeadband.AutoSize = true; - this.LabelSpringDeadband.Location = new System.Drawing.Point(6, 143); - this.LabelSpringDeadband.Name = "LabelSpringDeadband"; - this.LabelSpringDeadband.Size = new System.Drawing.Size(64, 15); - this.LabelSpringDeadband.TabIndex = 3; - this.LabelSpringDeadband.Tag = "SpringDeadband"; - this.LabelSpringDeadband.Text = "Deadband:"; - this.LabelSpringDeadband.Click += new System.EventHandler(this.FFB_Label_Click); - // - // SliderSpringSaturation - // - this.SliderSpringSaturation.AutoSize = false; - this.SliderSpringSaturation.BackColor = System.Drawing.SystemColors.Control; - this.SliderSpringSaturation.Enabled = false; - this.SliderSpringSaturation.LargeChange = 50; - this.SliderSpringSaturation.Location = new System.Drawing.Point(108, 104); - this.SliderSpringSaturation.Maximum = 10000; - this.SliderSpringSaturation.Name = "SliderSpringSaturation"; - this.SliderSpringSaturation.Size = new System.Drawing.Size(998, 31); - this.SliderSpringSaturation.TabIndex = 0; - this.SliderSpringSaturation.Tag = "SpringSaturation"; - this.SliderSpringSaturation.TickStyle = System.Windows.Forms.TickStyle.None; - this.SliderSpringSaturation.Value = 5000; - this.SliderSpringSaturation.Scroll += new System.EventHandler(this.FFB_Slider_Scroll); - // - // LabelSpringSaturation - // - this.LabelSpringSaturation.AutoSize = true; - this.LabelSpringSaturation.Location = new System.Drawing.Point(6, 106); - this.LabelSpringSaturation.Name = "LabelSpringSaturation"; - this.LabelSpringSaturation.Size = new System.Drawing.Size(64, 15); - this.LabelSpringSaturation.TabIndex = 3; - this.LabelSpringSaturation.Tag = "SpringSaturation"; - this.LabelSpringSaturation.Text = "Saturation:"; - this.LabelSpringSaturation.Click += new System.EventHandler(this.FFB_Label_Click); - // - // SliderSpringCoefficient - // - this.SliderSpringCoefficient.AutoSize = false; - this.SliderSpringCoefficient.BackColor = System.Drawing.SystemColors.Control; - this.SliderSpringCoefficient.Enabled = false; - this.SliderSpringCoefficient.LargeChange = 50; - this.SliderSpringCoefficient.Location = new System.Drawing.Point(108, 67); - this.SliderSpringCoefficient.Maximum = 10000; - this.SliderSpringCoefficient.Minimum = -10000; - this.SliderSpringCoefficient.Name = "SliderSpringCoefficient"; - this.SliderSpringCoefficient.Size = new System.Drawing.Size(998, 31); - this.SliderSpringCoefficient.TabIndex = 0; - this.SliderSpringCoefficient.Tag = "SpringCoefficient"; - this.SliderSpringCoefficient.TickStyle = System.Windows.Forms.TickStyle.None; - this.SliderSpringCoefficient.Scroll += new System.EventHandler(this.FFB_Slider_Scroll); - // - // LabelSpringCoefficient - // - this.LabelSpringCoefficient.AutoSize = true; - this.LabelSpringCoefficient.Location = new System.Drawing.Point(6, 69); - this.LabelSpringCoefficient.Name = "LabelSpringCoefficient"; - this.LabelSpringCoefficient.Size = new System.Drawing.Size(68, 15); - this.LabelSpringCoefficient.TabIndex = 3; - this.LabelSpringCoefficient.Tag = "SpringCoefficient"; - this.LabelSpringCoefficient.Text = "Coefficient:"; - this.LabelSpringCoefficient.Click += new System.EventHandler(this.FFB_Label_Click); - // - // SliderSpringOffset - // - this.SliderSpringOffset.AutoSize = false; - this.SliderSpringOffset.BackColor = System.Drawing.SystemColors.Control; - this.SliderSpringOffset.Enabled = false; - this.SliderSpringOffset.LargeChange = 50; - this.SliderSpringOffset.Location = new System.Drawing.Point(108, 30); - this.SliderSpringOffset.Maximum = 10000; - this.SliderSpringOffset.Minimum = -10000; - this.SliderSpringOffset.Name = "SliderSpringOffset"; - this.SliderSpringOffset.Size = new System.Drawing.Size(998, 31); - this.SliderSpringOffset.TabIndex = 0; - this.SliderSpringOffset.Tag = "SpringOffset"; - this.SliderSpringOffset.TickStyle = System.Windows.Forms.TickStyle.None; - this.SliderSpringOffset.Scroll += new System.EventHandler(this.FFB_Slider_Scroll); - // - // LabelSpringOffset - // - this.LabelSpringOffset.AutoSize = true; - this.LabelSpringOffset.Location = new System.Drawing.Point(6, 32); - this.LabelSpringOffset.Name = "LabelSpringOffset"; - this.LabelSpringOffset.Size = new System.Drawing.Size(42, 15); - this.LabelSpringOffset.TabIndex = 3; - this.LabelSpringOffset.Tag = "SpringOffset"; - this.LabelSpringOffset.Text = "Offset:"; - this.LabelSpringOffset.Click += new System.EventHandler(this.FFB_Label_Click); - // - // GBInertia - // - this.GBInertia.Controls.Add(this.CBInertia); - this.GBInertia.Controls.Add(this.UDInertiaMagnitude); - this.GBInertia.Controls.Add(this.LabelInertiaMagnitude); - this.GBInertia.Controls.Add(this.SliderInertiaMagnitude); - this.GBInertia.Location = new System.Drawing.Point(6, 414); - this.GBInertia.Name = "GBInertia"; - this.GBInertia.Size = new System.Drawing.Size(1214, 68); - this.GBInertia.TabIndex = 0; - this.GBInertia.TabStop = false; - this.GBInertia.Tag = "Inertia"; - this.GBInertia.Text = " Inertia"; - this.GBInertia.Click += new System.EventHandler(this.FFB_GroupBox_Click); - // - // CBInertia - // - this.CBInertia.AutoSize = true; - this.CBInertia.Location = new System.Drawing.Point(0, 3); - this.CBInertia.Name = "CBInertia"; - this.CBInertia.Size = new System.Drawing.Size(15, 14); - this.CBInertia.TabIndex = 1; - this.CBInertia.Tag = "Inertia"; - this.CBInertia.UseVisualStyleBackColor = true; - this.CBInertia.CheckedChanged += new System.EventHandler(this.FFB_CheckBox_CheckedChanged); - // - // UDInertiaMagnitude - // - this.UDInertiaMagnitude.Enabled = false; - this.UDInertiaMagnitude.Increment = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.UDInertiaMagnitude.Location = new System.Drawing.Point(1112, 30); - this.UDInertiaMagnitude.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.UDInertiaMagnitude.Minimum = new decimal(new int[] { - 10000, - 0, - 0, - -2147483648}); - this.UDInertiaMagnitude.Name = "UDInertiaMagnitude"; - this.UDInertiaMagnitude.Size = new System.Drawing.Size(96, 23); - this.UDInertiaMagnitude.TabIndex = 2; - this.UDInertiaMagnitude.Tag = "InertiaMagnitude"; - this.UDInertiaMagnitude.ValueChanged += new System.EventHandler(this.FFB_UpDown_ValueChanged); - // - // LabelInertiaMagnitude - // - this.LabelInertiaMagnitude.AutoSize = true; - this.LabelInertiaMagnitude.Location = new System.Drawing.Point(6, 32); - this.LabelInertiaMagnitude.Name = "LabelInertiaMagnitude"; - this.LabelInertiaMagnitude.Size = new System.Drawing.Size(68, 15); - this.LabelInertiaMagnitude.TabIndex = 3; - this.LabelInertiaMagnitude.Tag = "InertiaMagnitude"; - this.LabelInertiaMagnitude.Text = "Magnitude:"; - this.LabelInertiaMagnitude.Click += new System.EventHandler(this.FFB_Label_Click); - // - // SliderInertiaMagnitude - // - this.SliderInertiaMagnitude.AutoSize = false; - this.SliderInertiaMagnitude.BackColor = System.Drawing.SystemColors.Control; - this.SliderInertiaMagnitude.Enabled = false; - this.SliderInertiaMagnitude.LargeChange = 50; - this.SliderInertiaMagnitude.Location = new System.Drawing.Point(108, 30); - this.SliderInertiaMagnitude.Maximum = 10000; - this.SliderInertiaMagnitude.Minimum = -10000; - this.SliderInertiaMagnitude.Name = "SliderInertiaMagnitude"; - this.SliderInertiaMagnitude.Size = new System.Drawing.Size(998, 31); - this.SliderInertiaMagnitude.TabIndex = 0; - this.SliderInertiaMagnitude.Tag = "InertiaMagnitude"; - this.SliderInertiaMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; - this.SliderInertiaMagnitude.Scroll += new System.EventHandler(this.FFB_Slider_Scroll); - // - // GBFriction - // - this.GBFriction.Controls.Add(this.UDFrictionMagnitude); - this.GBFriction.Controls.Add(this.CBFriction); - this.GBFriction.Controls.Add(this.LabelFrictionMagnitude); - this.GBFriction.Controls.Add(this.SliderFrictionMagnitude); - this.GBFriction.Location = new System.Drawing.Point(6, 340); - this.GBFriction.Name = "GBFriction"; - this.GBFriction.Size = new System.Drawing.Size(1214, 68); - this.GBFriction.TabIndex = 0; - this.GBFriction.TabStop = false; - this.GBFriction.Tag = "Friction"; - this.GBFriction.Text = " Friction"; - this.GBFriction.Click += new System.EventHandler(this.FFB_GroupBox_Click); - // - // UDFrictionMagnitude - // - this.UDFrictionMagnitude.Enabled = false; - this.UDFrictionMagnitude.Increment = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.UDFrictionMagnitude.Location = new System.Drawing.Point(1112, 30); - this.UDFrictionMagnitude.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.UDFrictionMagnitude.Minimum = new decimal(new int[] { - 10000, - 0, - 0, - -2147483648}); - this.UDFrictionMagnitude.Name = "UDFrictionMagnitude"; - this.UDFrictionMagnitude.Size = new System.Drawing.Size(96, 23); - this.UDFrictionMagnitude.TabIndex = 2; - this.UDFrictionMagnitude.Tag = "FrictionMagnitude"; - this.UDFrictionMagnitude.ValueChanged += new System.EventHandler(this.FFB_UpDown_ValueChanged); - // - // CBFriction - // - this.CBFriction.AutoSize = true; - this.CBFriction.Location = new System.Drawing.Point(0, 3); - this.CBFriction.Name = "CBFriction"; - this.CBFriction.Size = new System.Drawing.Size(15, 14); - this.CBFriction.TabIndex = 1; - this.CBFriction.Tag = "Friction"; - this.CBFriction.UseVisualStyleBackColor = true; - this.CBFriction.CheckedChanged += new System.EventHandler(this.FFB_CheckBox_CheckedChanged); - // - // LabelFrictionMagnitude - // - this.LabelFrictionMagnitude.AutoSize = true; - this.LabelFrictionMagnitude.Location = new System.Drawing.Point(6, 32); - this.LabelFrictionMagnitude.Name = "LabelFrictionMagnitude"; - this.LabelFrictionMagnitude.Size = new System.Drawing.Size(68, 15); - this.LabelFrictionMagnitude.TabIndex = 3; - this.LabelFrictionMagnitude.Tag = "FrictionMagnitude"; - this.LabelFrictionMagnitude.Text = "Magnitude:"; - this.LabelFrictionMagnitude.Click += new System.EventHandler(this.FFB_Label_Click); - // - // SliderFrictionMagnitude - // - this.SliderFrictionMagnitude.AutoSize = false; - this.SliderFrictionMagnitude.BackColor = System.Drawing.SystemColors.Control; - this.SliderFrictionMagnitude.Enabled = false; - this.SliderFrictionMagnitude.LargeChange = 50; - this.SliderFrictionMagnitude.Location = new System.Drawing.Point(108, 30); - this.SliderFrictionMagnitude.Maximum = 10000; - this.SliderFrictionMagnitude.Minimum = -10000; - this.SliderFrictionMagnitude.Name = "SliderFrictionMagnitude"; - this.SliderFrictionMagnitude.Size = new System.Drawing.Size(998, 31); - this.SliderFrictionMagnitude.TabIndex = 0; - this.SliderFrictionMagnitude.Tag = "FrictionMagnitude"; - this.SliderFrictionMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; - this.SliderFrictionMagnitude.Scroll += new System.EventHandler(this.FFB_Slider_Scroll); - // - // GBDamper - // - this.GBDamper.Controls.Add(this.UDDamperMagnitude); - this.GBDamper.Controls.Add(this.LabelDamperMagnitude); - this.GBDamper.Controls.Add(this.CBDamper); - this.GBDamper.Controls.Add(this.SliderDamperMagnitude); - this.GBDamper.Location = new System.Drawing.Point(6, 266); - this.GBDamper.Name = "GBDamper"; - this.GBDamper.Size = new System.Drawing.Size(1214, 68); - this.GBDamper.TabIndex = 0; - this.GBDamper.TabStop = false; - this.GBDamper.Tag = "Damper"; - this.GBDamper.Text = " Damper"; - this.GBDamper.Click += new System.EventHandler(this.FFB_GroupBox_Click); - // - // UDDamperMagnitude - // - this.UDDamperMagnitude.Enabled = false; - this.UDDamperMagnitude.Increment = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.UDDamperMagnitude.Location = new System.Drawing.Point(1112, 30); - this.UDDamperMagnitude.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.UDDamperMagnitude.Minimum = new decimal(new int[] { - 10000, - 0, - 0, - -2147483648}); - this.UDDamperMagnitude.Name = "UDDamperMagnitude"; - this.UDDamperMagnitude.Size = new System.Drawing.Size(96, 23); - this.UDDamperMagnitude.TabIndex = 2; - this.UDDamperMagnitude.Tag = "DamperMagnitude"; - this.UDDamperMagnitude.ValueChanged += new System.EventHandler(this.FFB_UpDown_ValueChanged); - // - // LabelDamperMagnitude - // - this.LabelDamperMagnitude.AutoSize = true; - this.LabelDamperMagnitude.Location = new System.Drawing.Point(6, 32); - this.LabelDamperMagnitude.Name = "LabelDamperMagnitude"; - this.LabelDamperMagnitude.Size = new System.Drawing.Size(68, 15); - this.LabelDamperMagnitude.TabIndex = 3; - this.LabelDamperMagnitude.Tag = "DamperMagnitude"; - this.LabelDamperMagnitude.Text = "Magnitude:"; - this.LabelDamperMagnitude.Click += new System.EventHandler(this.FFB_Label_Click); - // - // CBDamper - // - this.CBDamper.AutoSize = true; - this.CBDamper.Location = new System.Drawing.Point(0, 3); - this.CBDamper.Name = "CBDamper"; - this.CBDamper.Size = new System.Drawing.Size(15, 14); - this.CBDamper.TabIndex = 1; - this.CBDamper.Tag = "Damper"; - this.CBDamper.UseVisualStyleBackColor = true; - this.CBDamper.CheckedChanged += new System.EventHandler(this.FFB_CheckBox_CheckedChanged); - // - // SliderDamperMagnitude - // - this.SliderDamperMagnitude.AutoSize = false; - this.SliderDamperMagnitude.BackColor = System.Drawing.SystemColors.Control; - this.SliderDamperMagnitude.Enabled = false; - this.SliderDamperMagnitude.LargeChange = 50; - this.SliderDamperMagnitude.Location = new System.Drawing.Point(108, 30); - this.SliderDamperMagnitude.Maximum = 10000; - this.SliderDamperMagnitude.Minimum = -10000; - this.SliderDamperMagnitude.Name = "SliderDamperMagnitude"; - this.SliderDamperMagnitude.Size = new System.Drawing.Size(998, 31); - this.SliderDamperMagnitude.TabIndex = 0; - this.SliderDamperMagnitude.Tag = "DamperMagnitude"; - this.SliderDamperMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; - this.SliderDamperMagnitude.Scroll += new System.EventHandler(this.FFB_Slider_Scroll); - // - // GBConstantForce - // - this.GBConstantForce.Controls.Add(this.CBConstantForce); - this.GBConstantForce.Controls.Add(this.UDConstantForceMagnitude); - this.GBConstantForce.Controls.Add(this.LabelConstantForceMagnitude); - this.GBConstantForce.Controls.Add(this.SliderConstantForceMagnitude); - this.GBConstantForce.Location = new System.Drawing.Point(6, 6); - this.GBConstantForce.Name = "GBConstantForce"; - this.GBConstantForce.Size = new System.Drawing.Size(1214, 68); - this.GBConstantForce.TabIndex = 0; - this.GBConstantForce.TabStop = false; - this.GBConstantForce.Tag = "ConstantForce"; - this.GBConstantForce.Text = " Constant Force"; - this.GBConstantForce.Click += new System.EventHandler(this.FFB_GroupBox_Click); - // - // CBConstantForce - // - this.CBConstantForce.AutoSize = true; - this.CBConstantForce.Location = new System.Drawing.Point(0, 3); - this.CBConstantForce.Name = "CBConstantForce"; - this.CBConstantForce.Size = new System.Drawing.Size(15, 14); - this.CBConstantForce.TabIndex = 1; - this.CBConstantForce.Tag = "ConstantForce"; - this.CBConstantForce.UseVisualStyleBackColor = true; - this.CBConstantForce.CheckedChanged += new System.EventHandler(this.FFB_CheckBox_CheckedChanged); - // - // UDConstantForceMagnitude - // - this.UDConstantForceMagnitude.Enabled = false; - this.UDConstantForceMagnitude.Increment = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.UDConstantForceMagnitude.Location = new System.Drawing.Point(1112, 30); - this.UDConstantForceMagnitude.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.UDConstantForceMagnitude.Minimum = new decimal(new int[] { - 10000, - 0, - 0, - -2147483648}); - this.UDConstantForceMagnitude.Name = "UDConstantForceMagnitude"; - this.UDConstantForceMagnitude.Size = new System.Drawing.Size(96, 23); - this.UDConstantForceMagnitude.TabIndex = 2; - this.UDConstantForceMagnitude.Tag = "ConstantForceMagnitude"; - this.UDConstantForceMagnitude.ValueChanged += new System.EventHandler(this.FFB_UpDown_ValueChanged); - // - // LabelConstantForceMagnitude - // - this.LabelConstantForceMagnitude.AutoSize = true; - this.LabelConstantForceMagnitude.Location = new System.Drawing.Point(6, 32); - this.LabelConstantForceMagnitude.Name = "LabelConstantForceMagnitude"; - this.LabelConstantForceMagnitude.Size = new System.Drawing.Size(68, 15); - this.LabelConstantForceMagnitude.TabIndex = 3; - this.LabelConstantForceMagnitude.Tag = "ConstantForceMagnitude"; - this.LabelConstantForceMagnitude.Text = "Magnitude:"; - this.LabelConstantForceMagnitude.Click += new System.EventHandler(this.FFB_Label_Click); - // - // SliderConstantForceMagnitude - // - this.SliderConstantForceMagnitude.AutoSize = false; - this.SliderConstantForceMagnitude.BackColor = System.Drawing.SystemColors.Control; - this.SliderConstantForceMagnitude.Enabled = false; - this.SliderConstantForceMagnitude.LargeChange = 50; - this.SliderConstantForceMagnitude.Location = new System.Drawing.Point(108, 30); - this.SliderConstantForceMagnitude.Maximum = 10000; - this.SliderConstantForceMagnitude.Minimum = -10000; - this.SliderConstantForceMagnitude.Name = "SliderConstantForceMagnitude"; - this.SliderConstantForceMagnitude.Size = new System.Drawing.Size(998, 31); - this.SliderConstantForceMagnitude.TabIndex = 0; - this.SliderConstantForceMagnitude.Tag = "ConstantForceMagnitude"; - this.SliderConstantForceMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; - this.SliderConstantForceMagnitude.Scroll += new System.EventHandler(this.FFB_Slider_Scroll); - // - // TabMisc - // - this.TabMisc.Controls.Add(this.LabelDebug); - this.TabMisc.Controls.Add(this.ButtonDebug); - this.TabMisc.Location = new System.Drawing.Point(4, 24); - this.TabMisc.Name = "TabMisc"; - this.TabMisc.Padding = new System.Windows.Forms.Padding(3); - this.TabMisc.Size = new System.Drawing.Size(1226, 637); - this.TabMisc.TabIndex = 4; - this.TabMisc.Text = "Misc"; - this.TabMisc.UseVisualStyleBackColor = true; - // - // LabelDebug - // - this.LabelDebug.AutoSize = true; - this.LabelDebug.Location = new System.Drawing.Point(6, 3); - this.LabelDebug.Name = "LabelDebug"; - this.LabelDebug.Size = new System.Drawing.Size(73, 15); - this.LabelDebug.TabIndex = 1; - this.LabelDebug.Text = "Debug Stuff:"; - // - // ButtonDebug - // - this.ButtonDebug.Location = new System.Drawing.Point(1077, 6); - this.ButtonDebug.Name = "ButtonDebug"; - this.ButtonDebug.Size = new System.Drawing.Size(143, 55); - this.ButtonDebug.TabIndex = 0; - this.ButtonDebug.Text = "Debug"; - this.ButtonDebug.UseVisualStyleBackColor = true; - this.ButtonDebug.Click += new System.EventHandler(this.ButtonDebug_Click); - // - // Form1 - // - this.ClientSize = new System.Drawing.Size(1258, 718); - this.Controls.Add(this.TabController); - this.Controls.Add(this.ButtonRemove); - this.Controls.Add(this.ButtonAttach); - this.Controls.Add(this.ButtonEnumerateDevices); - this.Controls.Add(this.ComboBoxDevices); - this.Name = "Form1"; - this.Text = "Direct Input Explorer"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); - this.Load += new System.EventHandler(this.Form1_Load); - this.TabController.ResumeLayout(false); - this.TabDeviceInfo.ResumeLayout(false); - this.TabDeviceInfo.PerformLayout(); - this.TabInput.ResumeLayout(false); - this.TabInput.PerformLayout(); - this.TabFFB.ResumeLayout(false); - this.GBSpring.ResumeLayout(false); - this.GBSpring.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDSpringDeadband)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.UDSpringSaturation)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.UDSpringCoefficient)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.UDSpringOffset)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderSpringDeadband)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderSpringSaturation)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderSpringCoefficient)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderSpringOffset)).EndInit(); - this.GBInertia.ResumeLayout(false); - this.GBInertia.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDInertiaMagnitude)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderInertiaMagnitude)).EndInit(); - this.GBFriction.ResumeLayout(false); - this.GBFriction.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDFrictionMagnitude)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderFrictionMagnitude)).EndInit(); - this.GBDamper.ResumeLayout(false); - this.GBDamper.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDDamperMagnitude)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderDamperMagnitude)).EndInit(); - this.GBConstantForce.ResumeLayout(false); - this.GBConstantForce.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.UDConstantForceMagnitude)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.SliderConstantForceMagnitude)).EndInit(); - this.TabMisc.ResumeLayout(false); - this.TabMisc.PerformLayout(); - this.ResumeLayout(false); + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + ComboBoxDevices = new System.Windows.Forms.ComboBox(); + ButtonEnumerateDevices = new System.Windows.Forms.Button(); + LabelDeviceInfo = new System.Windows.Forms.Label(); + TimerPoll = new System.Windows.Forms.Timer(components); + ButtonAttach = new System.Windows.Forms.Button(); + ButtonRemove = new System.Windows.Forms.Button(); + TabController = new System.Windows.Forms.TabControl(); + TabDeviceInfo = new System.Windows.Forms.TabPage(); + LabelFFBCapabilities = new System.Windows.Forms.Label(); + LabelCapabilities = new System.Windows.Forms.Label(); + TabInput = new System.Windows.Forms.TabPage(); + LabelInput = new System.Windows.Forms.Label(); + TabFFB = new System.Windows.Forms.TabPage(); + GBSine = new System.Windows.Forms.GroupBox(); + checkBox6 = new System.Windows.Forms.CheckBox(); + UDSineMagnitude = new System.Windows.Forms.NumericUpDown(); + label6 = new System.Windows.Forms.Label(); + SliderSineMagnitude = new System.Windows.Forms.TrackBar(); + GBSquare = new System.Windows.Forms.GroupBox(); + checkBox5 = new System.Windows.Forms.CheckBox(); + UDSquareMagnitude = new System.Windows.Forms.NumericUpDown(); + label5 = new System.Windows.Forms.Label(); + SliderSquareMagnitude = new System.Windows.Forms.TrackBar(); + GBTriangle = new System.Windows.Forms.GroupBox(); + checkBox4 = new System.Windows.Forms.CheckBox(); + UDTriangleMagnitude = new System.Windows.Forms.NumericUpDown(); + label4 = new System.Windows.Forms.Label(); + SliderTriangleMagnitude = new System.Windows.Forms.TrackBar(); + GBRampForce = new System.Windows.Forms.GroupBox(); + checkBox3 = new System.Windows.Forms.CheckBox(); + UDRampForceMagnitude = new System.Windows.Forms.NumericUpDown(); + label3 = new System.Windows.Forms.Label(); + SliderRampForceMagnitude = new System.Windows.Forms.TrackBar(); + GBSawtoothUp = new System.Windows.Forms.GroupBox(); + checkBox2 = new System.Windows.Forms.CheckBox(); + UDSawtoothUpMagnitude = new System.Windows.Forms.NumericUpDown(); + label2 = new System.Windows.Forms.Label(); + SliderSawtoothUpMagnitude = new System.Windows.Forms.TrackBar(); + GBSawtoothDown = new System.Windows.Forms.GroupBox(); + checkBox1 = new System.Windows.Forms.CheckBox(); + UDSawtoothDownMagnitude = new System.Windows.Forms.NumericUpDown(); + label1 = new System.Windows.Forms.Label(); + SliderSawtoothDownMagnitude = new System.Windows.Forms.TrackBar(); + GBSpring = new System.Windows.Forms.GroupBox(); + CBSpring = new System.Windows.Forms.CheckBox(); + UDSpringDeadband = new System.Windows.Forms.NumericUpDown(); + UDSpringSaturation = new System.Windows.Forms.NumericUpDown(); + UDSpringCoefficient = new System.Windows.Forms.NumericUpDown(); + UDSpringOffset = new System.Windows.Forms.NumericUpDown(); + SliderSpringDeadband = new System.Windows.Forms.TrackBar(); + LabelSpringDeadband = new System.Windows.Forms.Label(); + SliderSpringSaturation = new System.Windows.Forms.TrackBar(); + LabelSpringSaturation = new System.Windows.Forms.Label(); + SliderSpringCoefficient = new System.Windows.Forms.TrackBar(); + LabelSpringCoefficient = new System.Windows.Forms.Label(); + SliderSpringOffset = new System.Windows.Forms.TrackBar(); + LabelSpringOffset = new System.Windows.Forms.Label(); + GBInertia = new System.Windows.Forms.GroupBox(); + CBInertia = new System.Windows.Forms.CheckBox(); + UDInertiaMagnitude = new System.Windows.Forms.NumericUpDown(); + LabelInertiaMagnitude = new System.Windows.Forms.Label(); + SliderInertiaMagnitude = new System.Windows.Forms.TrackBar(); + GBFriction = new System.Windows.Forms.GroupBox(); + UDFrictionMagnitude = new System.Windows.Forms.NumericUpDown(); + CBFriction = new System.Windows.Forms.CheckBox(); + LabelFrictionMagnitude = new System.Windows.Forms.Label(); + SliderFrictionMagnitude = new System.Windows.Forms.TrackBar(); + GBDamper = new System.Windows.Forms.GroupBox(); + UDDamperMagnitude = new System.Windows.Forms.NumericUpDown(); + LabelDamperMagnitude = new System.Windows.Forms.Label(); + CBDamper = new System.Windows.Forms.CheckBox(); + SliderDamperMagnitude = new System.Windows.Forms.TrackBar(); + GBConstantForce = new System.Windows.Forms.GroupBox(); + CBConstantForce = new System.Windows.Forms.CheckBox(); + UDConstantForceMagnitude = new System.Windows.Forms.NumericUpDown(); + LabelConstantForceMagnitude = new System.Windows.Forms.Label(); + SliderConstantForceMagnitude = new System.Windows.Forms.TrackBar(); + tabPage1 = new System.Windows.Forms.TabPage(); + GBCuss = new System.Windows.Forms.GroupBox(); + UDCustomForceSamplePeriod = new System.Windows.Forms.NumericUpDown(); + label16 = new System.Windows.Forms.Label(); + SliderCustomForceSamplePeriod = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude9 = new System.Windows.Forms.NumericUpDown(); + label15 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude9 = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude8 = new System.Windows.Forms.NumericUpDown(); + label14 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude8 = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude7 = new System.Windows.Forms.NumericUpDown(); + label13 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude7 = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude6 = new System.Windows.Forms.NumericUpDown(); + label12 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude6 = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude5 = new System.Windows.Forms.NumericUpDown(); + label11 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude5 = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude4 = new System.Windows.Forms.NumericUpDown(); + label10 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude4 = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude3 = new System.Windows.Forms.NumericUpDown(); + label9 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude3 = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude2 = new System.Windows.Forms.NumericUpDown(); + label8 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude2 = new System.Windows.Forms.TrackBar(); + UDCustomForceMagnitude1 = new System.Windows.Forms.NumericUpDown(); + label7 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude1 = new System.Windows.Forms.TrackBar(); + CBCustomForce = new System.Windows.Forms.CheckBox(); + UDCustomForceMagnitude0 = new System.Windows.Forms.NumericUpDown(); + LblCustomForceMagnitude0 = new System.Windows.Forms.Label(); + SliderCustomForceMagnitude0 = new System.Windows.Forms.TrackBar(); + TabMisc = new System.Windows.Forms.TabPage(); + LabelDebug = new System.Windows.Forms.Label(); + ButtonDebug = new System.Windows.Forms.Button(); + TabController.SuspendLayout(); + TabDeviceInfo.SuspendLayout(); + TabInput.SuspendLayout(); + TabFFB.SuspendLayout(); + GBSine.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDSineMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderSineMagnitude).BeginInit(); + GBSquare.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDSquareMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderSquareMagnitude).BeginInit(); + GBTriangle.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDTriangleMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderTriangleMagnitude).BeginInit(); + GBRampForce.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDRampForceMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderRampForceMagnitude).BeginInit(); + GBSawtoothUp.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDSawtoothUpMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderSawtoothUpMagnitude).BeginInit(); + GBSawtoothDown.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDSawtoothDownMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderSawtoothDownMagnitude).BeginInit(); + GBSpring.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDSpringDeadband).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDSpringSaturation).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDSpringCoefficient).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDSpringOffset).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderSpringDeadband).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderSpringSaturation).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderSpringCoefficient).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderSpringOffset).BeginInit(); + GBInertia.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDInertiaMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderInertiaMagnitude).BeginInit(); + GBFriction.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDFrictionMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderFrictionMagnitude).BeginInit(); + GBDamper.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDDamperMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderDamperMagnitude).BeginInit(); + GBConstantForce.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDConstantForceMagnitude).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderConstantForceMagnitude).BeginInit(); + tabPage1.SuspendLayout(); + GBCuss.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceSamplePeriod).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceSamplePeriod).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude9).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude9).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude8).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude8).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude7).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude7).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude6).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude6).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude5).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude5).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude4).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude4).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude3).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude3).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude0).BeginInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude0).BeginInit(); + TabMisc.SuspendLayout(); + SuspendLayout(); + // + // ComboBoxDevices + // + ComboBoxDevices.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + ComboBoxDevices.FormattingEnabled = true; + ComboBoxDevices.Location = new System.Drawing.Point(12, 12); + ComboBoxDevices.Name = "ComboBoxDevices"; + ComboBoxDevices.Size = new System.Drawing.Size(976, 23); + ComboBoxDevices.TabIndex = 1; + ComboBoxDevices.SelectedIndexChanged += ComboBoxDevices_SelectedIndexChanged; + // + // ButtonEnumerateDevices + // + ButtonEnumerateDevices.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + ButtonEnumerateDevices.Location = new System.Drawing.Point(994, 12); + ButtonEnumerateDevices.Name = "ButtonEnumerateDevices"; + ButtonEnumerateDevices.Size = new System.Drawing.Size(40, 23); + ButtonEnumerateDevices.TabIndex = 2; + ButtonEnumerateDevices.Text = "🔄"; + ButtonEnumerateDevices.UseVisualStyleBackColor = true; + ButtonEnumerateDevices.Click += ButtonEnumerateDevices_Click; + // + // LabelDeviceInfo + // + LabelDeviceInfo.AutoSize = true; + LabelDeviceInfo.Location = new System.Drawing.Point(5, 5); + LabelDeviceInfo.Name = "LabelDeviceInfo"; + LabelDeviceInfo.Size = new System.Drawing.Size(69, 15); + LabelDeviceInfo.TabIndex = 3; + LabelDeviceInfo.Text = "Device Info:"; + // + // TimerPoll + // + TimerPoll.Enabled = true; + TimerPoll.Interval = 20; + TimerPoll.Tick += TimerPoll_Tick_1; + // + // ButtonAttach + // + ButtonAttach.Location = new System.Drawing.Point(1040, 12); + ButtonAttach.Name = "ButtonAttach"; + ButtonAttach.Size = new System.Drawing.Size(100, 23); + ButtonAttach.TabIndex = 5; + ButtonAttach.Text = "Attach"; + ButtonAttach.UseVisualStyleBackColor = true; + ButtonAttach.Click += ButtonAttach_Click; + // + // ButtonRemove + // + ButtonRemove.Location = new System.Drawing.Point(1146, 12); + ButtonRemove.Name = "ButtonRemove"; + ButtonRemove.Size = new System.Drawing.Size(100, 23); + ButtonRemove.TabIndex = 6; + ButtonRemove.Text = "Remove"; + ButtonRemove.UseVisualStyleBackColor = true; + ButtonRemove.Click += ButtonRemove_Click; + // + // TabController + // + TabController.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + TabController.Controls.Add(TabDeviceInfo); + TabController.Controls.Add(TabInput); + TabController.Controls.Add(TabFFB); + TabController.Controls.Add(tabPage1); + TabController.Controls.Add(TabMisc); + TabController.Location = new System.Drawing.Point(12, 41); + TabController.Name = "TabController"; + TabController.SelectedIndex = 0; + TabController.Size = new System.Drawing.Size(1234, 665); + TabController.TabIndex = 7; + // + // TabDeviceInfo + // + TabDeviceInfo.Controls.Add(LabelDeviceInfo); + TabDeviceInfo.Controls.Add(LabelFFBCapabilities); + TabDeviceInfo.Controls.Add(LabelCapabilities); + TabDeviceInfo.Location = new System.Drawing.Point(4, 24); + TabDeviceInfo.Name = "TabDeviceInfo"; + TabDeviceInfo.Size = new System.Drawing.Size(1226, 637); + TabDeviceInfo.TabIndex = 3; + TabDeviceInfo.Text = "Info"; + TabDeviceInfo.UseVisualStyleBackColor = true; + // + // LabelFFBCapabilities + // + LabelFFBCapabilities.AutoSize = true; + LabelFFBCapabilities.Location = new System.Drawing.Point(5, 408); + LabelFFBCapabilities.MaximumSize = new System.Drawing.Size(1226, 0); + LabelFFBCapabilities.Name = "LabelFFBCapabilities"; + LabelFFBCapabilities.Size = new System.Drawing.Size(157, 15); + LabelFFBCapabilities.TabIndex = 4; + LabelFFBCapabilities.Text = "FFBCapabilities: Attatch First"; + // + // LabelCapabilities + // + LabelCapabilities.AutoSize = true; + LabelCapabilities.Location = new System.Drawing.Point(5, 165); + LabelCapabilities.MaximumSize = new System.Drawing.Size(1226, 0); + LabelCapabilities.Name = "LabelCapabilities"; + LabelCapabilities.Size = new System.Drawing.Size(138, 15); + LabelCapabilities.TabIndex = 4; + LabelCapabilities.Text = "Capabilities: Attatch First"; + // + // TabInput + // + TabInput.Controls.Add(LabelInput); + TabInput.Location = new System.Drawing.Point(4, 24); + TabInput.Name = "TabInput"; + TabInput.Padding = new System.Windows.Forms.Padding(3); + TabInput.Size = new System.Drawing.Size(1226, 637); + TabInput.TabIndex = 0; + TabInput.Text = "Input"; + TabInput.UseVisualStyleBackColor = true; + // + // LabelInput + // + LabelInput.AutoSize = true; + LabelInput.Location = new System.Drawing.Point(5, 5); + LabelInput.Name = "LabelInput"; + LabelInput.Size = new System.Drawing.Size(101, 15); + LabelInput.TabIndex = 4; + LabelInput.Text = "Input: Attach First"; + // + // TabFFB + // + TabFFB.Controls.Add(GBSine); + TabFFB.Controls.Add(GBSquare); + TabFFB.Controls.Add(GBTriangle); + TabFFB.Controls.Add(GBRampForce); + TabFFB.Controls.Add(GBSawtoothUp); + TabFFB.Controls.Add(GBSawtoothDown); + TabFFB.Controls.Add(GBSpring); + TabFFB.Controls.Add(GBInertia); + TabFFB.Controls.Add(GBFriction); + TabFFB.Controls.Add(GBDamper); + TabFFB.Controls.Add(GBConstantForce); + TabFFB.Location = new System.Drawing.Point(4, 24); + TabFFB.Name = "TabFFB"; + TabFFB.Padding = new System.Windows.Forms.Padding(3); + TabFFB.Size = new System.Drawing.Size(1226, 637); + TabFFB.TabIndex = 1; + TabFFB.Text = "FFB"; + TabFFB.UseVisualStyleBackColor = true; + // + // GBSine + // + GBSine.Controls.Add(checkBox6); + GBSine.Controls.Add(UDSineMagnitude); + GBSine.Controls.Add(label6); + GBSine.Controls.Add(SliderSineMagnitude); + GBSine.Location = new System.Drawing.Point(6, 568); + GBSine.Name = "GBSine"; + GBSine.Size = new System.Drawing.Size(403, 69); + GBSine.TabIndex = 5; + GBSine.TabStop = false; + GBSine.Tag = "Sine"; + GBSine.Text = " Sine"; + // + // checkBox6 + // + checkBox6.AutoSize = true; + checkBox6.Location = new System.Drawing.Point(0, 3); + checkBox6.Name = "checkBox6"; + checkBox6.Size = new System.Drawing.Size(15, 14); + checkBox6.TabIndex = 1; + checkBox6.Tag = "Sine"; + checkBox6.UseVisualStyleBackColor = true; + checkBox6.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDSineMagnitude + // + UDSineMagnitude.Enabled = false; + UDSineMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDSineMagnitude.Location = new System.Drawing.Point(301, 31); + UDSineMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDSineMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDSineMagnitude.Name = "UDSineMagnitude"; + UDSineMagnitude.Size = new System.Drawing.Size(96, 23); + UDSineMagnitude.TabIndex = 2; + UDSineMagnitude.Tag = "SineMagnitude"; + UDSineMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // label6 + // + label6.AutoSize = true; + label6.Location = new System.Drawing.Point(6, 32); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(68, 15); + label6.TabIndex = 3; + label6.Tag = "InertiaMagnitude"; + label6.Text = "Magnitude:"; + // + // SliderSineMagnitude + // + SliderSineMagnitude.AccessibleName = "SliderSineMagnitude"; + SliderSineMagnitude.AutoSize = false; + SliderSineMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderSineMagnitude.Enabled = false; + SliderSineMagnitude.LargeChange = 50; + SliderSineMagnitude.Location = new System.Drawing.Point(74, 31); + SliderSineMagnitude.Maximum = 10000; + SliderSineMagnitude.Name = "SliderSineMagnitude"; + SliderSineMagnitude.Size = new System.Drawing.Size(221, 31); + SliderSineMagnitude.TabIndex = 0; + SliderSineMagnitude.Tag = "SineMagnitude"; + SliderSineMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderSineMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBSquare + // + GBSquare.Controls.Add(checkBox5); + GBSquare.Controls.Add(UDSquareMagnitude); + GBSquare.Controls.Add(label5); + GBSquare.Controls.Add(SliderSquareMagnitude); + GBSquare.Location = new System.Drawing.Point(415, 568); + GBSquare.Name = "GBSquare"; + GBSquare.Size = new System.Drawing.Size(410, 71); + GBSquare.TabIndex = 5; + GBSquare.TabStop = false; + GBSquare.Tag = "Square"; + GBSquare.Text = " Square"; + // + // checkBox5 + // + checkBox5.AutoSize = true; + checkBox5.Location = new System.Drawing.Point(0, 3); + checkBox5.Name = "checkBox5"; + checkBox5.Size = new System.Drawing.Size(15, 14); + checkBox5.TabIndex = 1; + checkBox5.Tag = "Square"; + checkBox5.UseVisualStyleBackColor = true; + checkBox5.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDSquareMagnitude + // + UDSquareMagnitude.Enabled = false; + UDSquareMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDSquareMagnitude.Location = new System.Drawing.Point(308, 32); + UDSquareMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDSquareMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDSquareMagnitude.Name = "UDSquareMagnitude"; + UDSquareMagnitude.Size = new System.Drawing.Size(96, 23); + UDSquareMagnitude.TabIndex = 2; + UDSquareMagnitude.Tag = "SquareMagnitude"; + UDSquareMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // label5 + // + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(6, 32); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(68, 15); + label5.TabIndex = 3; + label5.Tag = "InertiaMagnitude"; + label5.Text = "Magnitude:"; + // + // SliderSquareMagnitude + // + SliderSquareMagnitude.AccessibleName = "SliderSquareMagnitude"; + SliderSquareMagnitude.AutoSize = false; + SliderSquareMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderSquareMagnitude.Enabled = false; + SliderSquareMagnitude.LargeChange = 50; + SliderSquareMagnitude.Location = new System.Drawing.Point(80, 31); + SliderSquareMagnitude.Maximum = 10000; + SliderSquareMagnitude.Name = "SliderSquareMagnitude"; + SliderSquareMagnitude.Size = new System.Drawing.Size(222, 31); + SliderSquareMagnitude.TabIndex = 0; + SliderSquareMagnitude.Tag = "SquareMagnitude"; + SliderSquareMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderSquareMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBTriangle + // + GBTriangle.Controls.Add(checkBox4); + GBTriangle.Controls.Add(UDTriangleMagnitude); + GBTriangle.Controls.Add(label4); + GBTriangle.Controls.Add(SliderTriangleMagnitude); + GBTriangle.Location = new System.Drawing.Point(831, 571); + GBTriangle.Name = "GBTriangle"; + GBTriangle.Size = new System.Drawing.Size(389, 68); + GBTriangle.TabIndex = 4; + GBTriangle.TabStop = false; + GBTriangle.Tag = "Triangle"; + GBTriangle.Text = " Triangle"; + // + // checkBox4 + // + checkBox4.AutoSize = true; + checkBox4.Location = new System.Drawing.Point(0, 3); + checkBox4.Name = "checkBox4"; + checkBox4.Size = new System.Drawing.Size(15, 14); + checkBox4.TabIndex = 1; + checkBox4.Tag = "Triangle"; + checkBox4.UseVisualStyleBackColor = true; + checkBox4.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDTriangleMagnitude + // + UDTriangleMagnitude.Enabled = false; + UDTriangleMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDTriangleMagnitude.Location = new System.Drawing.Point(287, 32); + UDTriangleMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDTriangleMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDTriangleMagnitude.Name = "UDTriangleMagnitude"; + UDTriangleMagnitude.Size = new System.Drawing.Size(96, 23); + UDTriangleMagnitude.TabIndex = 2; + UDTriangleMagnitude.Tag = "TriangleMagnitude"; + UDTriangleMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(6, 32); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(68, 15); + label4.TabIndex = 3; + label4.Tag = "InertiaMagnitude"; + label4.Text = "Magnitude:"; + // + // SliderTriangleMagnitude + // + SliderTriangleMagnitude.AccessibleName = "SliderTriangleMagnitude"; + SliderTriangleMagnitude.AutoSize = false; + SliderTriangleMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderTriangleMagnitude.Enabled = false; + SliderTriangleMagnitude.LargeChange = 50; + SliderTriangleMagnitude.Location = new System.Drawing.Point(80, 31); + SliderTriangleMagnitude.Maximum = 10000; + SliderTriangleMagnitude.Name = "SliderTriangleMagnitude"; + SliderTriangleMagnitude.Size = new System.Drawing.Size(201, 31); + SliderTriangleMagnitude.TabIndex = 0; + SliderTriangleMagnitude.Tag = "TriangleMagnitude"; + SliderTriangleMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderTriangleMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBRampForce + // + GBRampForce.Controls.Add(checkBox3); + GBRampForce.Controls.Add(UDRampForceMagnitude); + GBRampForce.Controls.Add(label3); + GBRampForce.Controls.Add(SliderRampForceMagnitude); + GBRampForce.Location = new System.Drawing.Point(415, 491); + GBRampForce.Name = "GBRampForce"; + GBRampForce.Size = new System.Drawing.Size(410, 71); + GBRampForce.TabIndex = 4; + GBRampForce.TabStop = false; + GBRampForce.Tag = "RampForce"; + GBRampForce.Text = " RampForce"; + // + // checkBox3 + // + checkBox3.AutoSize = true; + checkBox3.Location = new System.Drawing.Point(0, 3); + checkBox3.Name = "checkBox3"; + checkBox3.Size = new System.Drawing.Size(15, 14); + checkBox3.TabIndex = 1; + checkBox3.Tag = "RampForce"; + checkBox3.UseVisualStyleBackColor = true; + checkBox3.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDRampForceMagnitude + // + UDRampForceMagnitude.Enabled = false; + UDRampForceMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDRampForceMagnitude.Location = new System.Drawing.Point(301, 31); + UDRampForceMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDRampForceMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDRampForceMagnitude.Name = "UDRampForceMagnitude"; + UDRampForceMagnitude.Size = new System.Drawing.Size(96, 23); + UDRampForceMagnitude.TabIndex = 2; + UDRampForceMagnitude.Tag = "RampForceMagnitude"; + UDRampForceMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(6, 32); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(68, 15); + label3.TabIndex = 3; + label3.Tag = "InertiaMagnitude"; + label3.Text = "Magnitude:"; + // + // SliderRampForceMagnitude + // + SliderRampForceMagnitude.AccessibleName = "SliderRampForceMagnitude"; + SliderRampForceMagnitude.AutoSize = false; + SliderRampForceMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderRampForceMagnitude.Enabled = false; + SliderRampForceMagnitude.LargeChange = 50; + SliderRampForceMagnitude.Location = new System.Drawing.Point(74, 31); + SliderRampForceMagnitude.Maximum = 10000; + SliderRampForceMagnitude.Minimum = -10000; + SliderRampForceMagnitude.Name = "SliderRampForceMagnitude"; + SliderRampForceMagnitude.Size = new System.Drawing.Size(221, 31); + SliderRampForceMagnitude.TabIndex = 0; + SliderRampForceMagnitude.Tag = "RampForceMagnitude"; + SliderRampForceMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderRampForceMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBSawtoothUp + // + GBSawtoothUp.Controls.Add(checkBox2); + GBSawtoothUp.Controls.Add(UDSawtoothUpMagnitude); + GBSawtoothUp.Controls.Add(label2); + GBSawtoothUp.Controls.Add(SliderSawtoothUpMagnitude); + GBSawtoothUp.Location = new System.Drawing.Point(6, 491); + GBSawtoothUp.Name = "GBSawtoothUp"; + GBSawtoothUp.Size = new System.Drawing.Size(403, 71); + GBSawtoothUp.TabIndex = 4; + GBSawtoothUp.TabStop = false; + GBSawtoothUp.Tag = "SawtoothUp"; + GBSawtoothUp.Text = " SawtoothUp"; + // + // checkBox2 + // + checkBox2.AutoSize = true; + checkBox2.Location = new System.Drawing.Point(0, 3); + checkBox2.Name = "checkBox2"; + checkBox2.Size = new System.Drawing.Size(15, 14); + checkBox2.TabIndex = 1; + checkBox2.Tag = "SawtoothUp"; + checkBox2.UseVisualStyleBackColor = true; + checkBox2.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDSawtoothUpMagnitude + // + UDSawtoothUpMagnitude.Enabled = false; + UDSawtoothUpMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDSawtoothUpMagnitude.Location = new System.Drawing.Point(301, 31); + UDSawtoothUpMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDSawtoothUpMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDSawtoothUpMagnitude.Name = "UDSawtoothUpMagnitude"; + UDSawtoothUpMagnitude.Size = new System.Drawing.Size(96, 23); + UDSawtoothUpMagnitude.TabIndex = 2; + UDSawtoothUpMagnitude.Tag = "SawtoothUpMagnitude"; + UDSawtoothUpMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(6, 32); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(68, 15); + label2.TabIndex = 3; + label2.Tag = "InertiaMagnitude"; + label2.Text = "Magnitude:"; + // + // SliderSawtoothUpMagnitude + // + SliderSawtoothUpMagnitude.AccessibleName = "SliderSawtoothUpMagnitude"; + SliderSawtoothUpMagnitude.AutoSize = false; + SliderSawtoothUpMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderSawtoothUpMagnitude.Enabled = false; + SliderSawtoothUpMagnitude.LargeChange = 50; + SliderSawtoothUpMagnitude.Location = new System.Drawing.Point(80, 31); + SliderSawtoothUpMagnitude.Maximum = 10000; + SliderSawtoothUpMagnitude.Name = "SliderSawtoothUpMagnitude"; + SliderSawtoothUpMagnitude.Size = new System.Drawing.Size(215, 31); + SliderSawtoothUpMagnitude.TabIndex = 0; + SliderSawtoothUpMagnitude.Tag = "SawtoothUpMagnitude"; + SliderSawtoothUpMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderSawtoothUpMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBSawtoothDown + // + GBSawtoothDown.Controls.Add(checkBox1); + GBSawtoothDown.Controls.Add(UDSawtoothDownMagnitude); + GBSawtoothDown.Controls.Add(label1); + GBSawtoothDown.Controls.Add(SliderSawtoothDownMagnitude); + GBSawtoothDown.Location = new System.Drawing.Point(831, 494); + GBSawtoothDown.Name = "GBSawtoothDown"; + GBSawtoothDown.Size = new System.Drawing.Size(389, 68); + GBSawtoothDown.TabIndex = 1; + GBSawtoothDown.TabStop = false; + GBSawtoothDown.Tag = "SawtoothDown"; + GBSawtoothDown.Text = " SawtoothDown"; + // + // checkBox1 + // + checkBox1.AutoSize = true; + checkBox1.Location = new System.Drawing.Point(0, 3); + checkBox1.Name = "checkBox1"; + checkBox1.Size = new System.Drawing.Size(15, 14); + checkBox1.TabIndex = 1; + checkBox1.Tag = "SawtoothDown"; + checkBox1.UseVisualStyleBackColor = true; + checkBox1.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDSawtoothDownMagnitude + // + UDSawtoothDownMagnitude.Enabled = false; + UDSawtoothDownMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDSawtoothDownMagnitude.Location = new System.Drawing.Point(287, 32); + UDSawtoothDownMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDSawtoothDownMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDSawtoothDownMagnitude.Name = "UDSawtoothDownMagnitude"; + UDSawtoothDownMagnitude.Size = new System.Drawing.Size(96, 23); + UDSawtoothDownMagnitude.TabIndex = 2; + UDSawtoothDownMagnitude.Tag = "SawtoothDownMagnitude"; + UDSawtoothDownMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(6, 32); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(68, 15); + label1.TabIndex = 3; + label1.Tag = "InertiaMagnitude"; + label1.Text = "Magnitude:"; + // + // SliderSawtoothDownMagnitude + // + SliderSawtoothDownMagnitude.AccessibleName = "SliderSawtoothDownMagnitude"; + SliderSawtoothDownMagnitude.AutoSize = false; + SliderSawtoothDownMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderSawtoothDownMagnitude.Enabled = false; + SliderSawtoothDownMagnitude.LargeChange = 50; + SliderSawtoothDownMagnitude.Location = new System.Drawing.Point(80, 31); + SliderSawtoothDownMagnitude.Maximum = 10000; + SliderSawtoothDownMagnitude.Name = "SliderSawtoothDownMagnitude"; + SliderSawtoothDownMagnitude.Size = new System.Drawing.Size(201, 31); + SliderSawtoothDownMagnitude.TabIndex = 0; + SliderSawtoothDownMagnitude.Tag = "SawtoothDownMagnitude"; + SliderSawtoothDownMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderSawtoothDownMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBSpring + // + GBSpring.Controls.Add(CBSpring); + GBSpring.Controls.Add(UDSpringDeadband); + GBSpring.Controls.Add(UDSpringSaturation); + GBSpring.Controls.Add(UDSpringCoefficient); + GBSpring.Controls.Add(UDSpringOffset); + GBSpring.Controls.Add(SliderSpringDeadband); + GBSpring.Controls.Add(LabelSpringDeadband); + GBSpring.Controls.Add(SliderSpringSaturation); + GBSpring.Controls.Add(LabelSpringSaturation); + GBSpring.Controls.Add(SliderSpringCoefficient); + GBSpring.Controls.Add(LabelSpringCoefficient); + GBSpring.Controls.Add(SliderSpringOffset); + GBSpring.Controls.Add(LabelSpringOffset); + GBSpring.Location = new System.Drawing.Point(6, 80); + GBSpring.Name = "GBSpring"; + GBSpring.Size = new System.Drawing.Size(1214, 180); + GBSpring.TabIndex = 0; + GBSpring.TabStop = false; + GBSpring.Tag = "Spring"; + GBSpring.Text = " Spring Force"; + GBSpring.Click += FFB_GroupBox_Click; + // + // CBSpring + // + CBSpring.AutoSize = true; + CBSpring.Location = new System.Drawing.Point(0, 3); + CBSpring.Name = "CBSpring"; + CBSpring.Size = new System.Drawing.Size(15, 14); + CBSpring.TabIndex = 1; + CBSpring.Tag = "Spring"; + CBSpring.UseVisualStyleBackColor = true; + CBSpring.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDSpringDeadband + // + UDSpringDeadband.Enabled = false; + UDSpringDeadband.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDSpringDeadband.Location = new System.Drawing.Point(1112, 141); + UDSpringDeadband.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDSpringDeadband.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDSpringDeadband.Name = "UDSpringDeadband"; + UDSpringDeadband.Size = new System.Drawing.Size(96, 23); + UDSpringDeadband.TabIndex = 2; + UDSpringDeadband.Tag = "SpringDeadband"; + UDSpringDeadband.ValueChanged += FFB_UpDown_ValueChanged; + // + // UDSpringSaturation + // + UDSpringSaturation.Enabled = false; + UDSpringSaturation.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDSpringSaturation.Location = new System.Drawing.Point(1112, 104); + UDSpringSaturation.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDSpringSaturation.Name = "UDSpringSaturation"; + UDSpringSaturation.Size = new System.Drawing.Size(96, 23); + UDSpringSaturation.TabIndex = 2; + UDSpringSaturation.Tag = "SpringSaturation"; + UDSpringSaturation.Value = new decimal(new int[] { 5000, 0, 0, 0 }); + UDSpringSaturation.ValueChanged += FFB_UpDown_ValueChanged; + // + // UDSpringCoefficient + // + UDSpringCoefficient.Enabled = false; + UDSpringCoefficient.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDSpringCoefficient.Location = new System.Drawing.Point(1112, 67); + UDSpringCoefficient.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDSpringCoefficient.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDSpringCoefficient.Name = "UDSpringCoefficient"; + UDSpringCoefficient.Size = new System.Drawing.Size(96, 23); + UDSpringCoefficient.TabIndex = 2; + UDSpringCoefficient.Tag = "SpringCoefficient"; + UDSpringCoefficient.ValueChanged += FFB_UpDown_ValueChanged; + // + // UDSpringOffset + // + UDSpringOffset.Enabled = false; + UDSpringOffset.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDSpringOffset.Location = new System.Drawing.Point(1112, 30); + UDSpringOffset.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDSpringOffset.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDSpringOffset.Name = "UDSpringOffset"; + UDSpringOffset.Size = new System.Drawing.Size(96, 23); + UDSpringOffset.TabIndex = 2; + UDSpringOffset.Tag = "SpringOffset"; + UDSpringOffset.ValueChanged += FFB_UpDown_ValueChanged; + // + // SliderSpringDeadband + // + SliderSpringDeadband.AutoSize = false; + SliderSpringDeadband.BackColor = System.Drawing.SystemColors.Control; + SliderSpringDeadband.Enabled = false; + SliderSpringDeadband.LargeChange = 50; + SliderSpringDeadband.Location = new System.Drawing.Point(108, 141); + SliderSpringDeadband.Maximum = 10000; + SliderSpringDeadband.Name = "SliderSpringDeadband"; + SliderSpringDeadband.Size = new System.Drawing.Size(998, 31); + SliderSpringDeadband.TabIndex = 0; + SliderSpringDeadband.Tag = "SpringDeadband"; + SliderSpringDeadband.TickStyle = System.Windows.Forms.TickStyle.None; + SliderSpringDeadband.Scroll += FFB_Slider_Scroll; + // + // LabelSpringDeadband + // + LabelSpringDeadband.AutoSize = true; + LabelSpringDeadband.Location = new System.Drawing.Point(6, 143); + LabelSpringDeadband.Name = "LabelSpringDeadband"; + LabelSpringDeadband.Size = new System.Drawing.Size(64, 15); + LabelSpringDeadband.TabIndex = 3; + LabelSpringDeadband.Tag = "SpringDeadband"; + LabelSpringDeadband.Text = "Deadband:"; + LabelSpringDeadband.Click += FFB_Label_Click; + // + // SliderSpringSaturation + // + SliderSpringSaturation.AutoSize = false; + SliderSpringSaturation.BackColor = System.Drawing.SystemColors.Control; + SliderSpringSaturation.Enabled = false; + SliderSpringSaturation.LargeChange = 50; + SliderSpringSaturation.Location = new System.Drawing.Point(108, 104); + SliderSpringSaturation.Maximum = 10000; + SliderSpringSaturation.Name = "SliderSpringSaturation"; + SliderSpringSaturation.Size = new System.Drawing.Size(998, 31); + SliderSpringSaturation.TabIndex = 0; + SliderSpringSaturation.Tag = "SpringSaturation"; + SliderSpringSaturation.TickStyle = System.Windows.Forms.TickStyle.None; + SliderSpringSaturation.Value = 5000; + SliderSpringSaturation.Scroll += FFB_Slider_Scroll; + // + // LabelSpringSaturation + // + LabelSpringSaturation.AutoSize = true; + LabelSpringSaturation.Location = new System.Drawing.Point(6, 106); + LabelSpringSaturation.Name = "LabelSpringSaturation"; + LabelSpringSaturation.Size = new System.Drawing.Size(64, 15); + LabelSpringSaturation.TabIndex = 3; + LabelSpringSaturation.Tag = "SpringSaturation"; + LabelSpringSaturation.Text = "Saturation:"; + LabelSpringSaturation.Click += FFB_Label_Click; + // + // SliderSpringCoefficient + // + SliderSpringCoefficient.AutoSize = false; + SliderSpringCoefficient.BackColor = System.Drawing.SystemColors.Control; + SliderSpringCoefficient.Enabled = false; + SliderSpringCoefficient.LargeChange = 50; + SliderSpringCoefficient.Location = new System.Drawing.Point(108, 67); + SliderSpringCoefficient.Maximum = 10000; + SliderSpringCoefficient.Minimum = -10000; + SliderSpringCoefficient.Name = "SliderSpringCoefficient"; + SliderSpringCoefficient.Size = new System.Drawing.Size(998, 31); + SliderSpringCoefficient.TabIndex = 0; + SliderSpringCoefficient.Tag = "SpringCoefficient"; + SliderSpringCoefficient.TickStyle = System.Windows.Forms.TickStyle.None; + SliderSpringCoefficient.Scroll += FFB_Slider_Scroll; + // + // LabelSpringCoefficient + // + LabelSpringCoefficient.AutoSize = true; + LabelSpringCoefficient.Location = new System.Drawing.Point(6, 69); + LabelSpringCoefficient.Name = "LabelSpringCoefficient"; + LabelSpringCoefficient.Size = new System.Drawing.Size(68, 15); + LabelSpringCoefficient.TabIndex = 3; + LabelSpringCoefficient.Tag = "SpringCoefficient"; + LabelSpringCoefficient.Text = "Coefficient:"; + LabelSpringCoefficient.Click += FFB_Label_Click; + // + // SliderSpringOffset + // + SliderSpringOffset.AutoSize = false; + SliderSpringOffset.BackColor = System.Drawing.SystemColors.Control; + SliderSpringOffset.Enabled = false; + SliderSpringOffset.LargeChange = 50; + SliderSpringOffset.Location = new System.Drawing.Point(108, 30); + SliderSpringOffset.Maximum = 10000; + SliderSpringOffset.Minimum = -10000; + SliderSpringOffset.Name = "SliderSpringOffset"; + SliderSpringOffset.Size = new System.Drawing.Size(998, 31); + SliderSpringOffset.TabIndex = 0; + SliderSpringOffset.Tag = "SpringOffset"; + SliderSpringOffset.TickStyle = System.Windows.Forms.TickStyle.None; + SliderSpringOffset.Scroll += FFB_Slider_Scroll; + // + // LabelSpringOffset + // + LabelSpringOffset.AutoSize = true; + LabelSpringOffset.Location = new System.Drawing.Point(6, 32); + LabelSpringOffset.Name = "LabelSpringOffset"; + LabelSpringOffset.Size = new System.Drawing.Size(42, 15); + LabelSpringOffset.TabIndex = 3; + LabelSpringOffset.Tag = "SpringOffset"; + LabelSpringOffset.Text = "Offset:"; + LabelSpringOffset.Click += FFB_Label_Click; + // + // GBInertia + // + GBInertia.Controls.Add(CBInertia); + GBInertia.Controls.Add(UDInertiaMagnitude); + GBInertia.Controls.Add(LabelInertiaMagnitude); + GBInertia.Controls.Add(SliderInertiaMagnitude); + GBInertia.Location = new System.Drawing.Point(6, 414); + GBInertia.Name = "GBInertia"; + GBInertia.Size = new System.Drawing.Size(1214, 68); + GBInertia.TabIndex = 0; + GBInertia.TabStop = false; + GBInertia.Tag = "Inertia"; + GBInertia.Text = " Inertia"; + GBInertia.Click += FFB_GroupBox_Click; + // + // CBInertia + // + CBInertia.AutoSize = true; + CBInertia.Location = new System.Drawing.Point(0, 3); + CBInertia.Name = "CBInertia"; + CBInertia.Size = new System.Drawing.Size(15, 14); + CBInertia.TabIndex = 1; + CBInertia.Tag = "Inertia"; + CBInertia.UseVisualStyleBackColor = true; + CBInertia.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDInertiaMagnitude + // + UDInertiaMagnitude.Enabled = false; + UDInertiaMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDInertiaMagnitude.Location = new System.Drawing.Point(1112, 30); + UDInertiaMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDInertiaMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDInertiaMagnitude.Name = "UDInertiaMagnitude"; + UDInertiaMagnitude.Size = new System.Drawing.Size(96, 23); + UDInertiaMagnitude.TabIndex = 2; + UDInertiaMagnitude.Tag = "InertiaMagnitude"; + UDInertiaMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // LabelInertiaMagnitude + // + LabelInertiaMagnitude.AutoSize = true; + LabelInertiaMagnitude.Location = new System.Drawing.Point(6, 32); + LabelInertiaMagnitude.Name = "LabelInertiaMagnitude"; + LabelInertiaMagnitude.Size = new System.Drawing.Size(68, 15); + LabelInertiaMagnitude.TabIndex = 3; + LabelInertiaMagnitude.Tag = "InertiaMagnitude"; + LabelInertiaMagnitude.Text = "Magnitude:"; + LabelInertiaMagnitude.Click += FFB_Label_Click; + // + // SliderInertiaMagnitude + // + SliderInertiaMagnitude.AutoSize = false; + SliderInertiaMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderInertiaMagnitude.Enabled = false; + SliderInertiaMagnitude.LargeChange = 50; + SliderInertiaMagnitude.Location = new System.Drawing.Point(108, 30); + SliderInertiaMagnitude.Maximum = 10000; + SliderInertiaMagnitude.Minimum = -10000; + SliderInertiaMagnitude.Name = "SliderInertiaMagnitude"; + SliderInertiaMagnitude.Size = new System.Drawing.Size(998, 31); + SliderInertiaMagnitude.TabIndex = 0; + SliderInertiaMagnitude.Tag = "InertiaMagnitude"; + SliderInertiaMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderInertiaMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBFriction + // + GBFriction.Controls.Add(UDFrictionMagnitude); + GBFriction.Controls.Add(CBFriction); + GBFriction.Controls.Add(LabelFrictionMagnitude); + GBFriction.Controls.Add(SliderFrictionMagnitude); + GBFriction.Location = new System.Drawing.Point(6, 340); + GBFriction.Name = "GBFriction"; + GBFriction.Size = new System.Drawing.Size(1214, 68); + GBFriction.TabIndex = 0; + GBFriction.TabStop = false; + GBFriction.Tag = "Friction"; + GBFriction.Text = " Friction"; + GBFriction.Click += FFB_GroupBox_Click; + // + // UDFrictionMagnitude + // + UDFrictionMagnitude.Enabled = false; + UDFrictionMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDFrictionMagnitude.Location = new System.Drawing.Point(1112, 30); + UDFrictionMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDFrictionMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDFrictionMagnitude.Name = "UDFrictionMagnitude"; + UDFrictionMagnitude.Size = new System.Drawing.Size(96, 23); + UDFrictionMagnitude.TabIndex = 2; + UDFrictionMagnitude.Tag = "FrictionMagnitude"; + UDFrictionMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // CBFriction + // + CBFriction.AutoSize = true; + CBFriction.Location = new System.Drawing.Point(0, 3); + CBFriction.Name = "CBFriction"; + CBFriction.Size = new System.Drawing.Size(15, 14); + CBFriction.TabIndex = 1; + CBFriction.Tag = "Friction"; + CBFriction.UseVisualStyleBackColor = true; + CBFriction.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // LabelFrictionMagnitude + // + LabelFrictionMagnitude.AutoSize = true; + LabelFrictionMagnitude.Location = new System.Drawing.Point(6, 32); + LabelFrictionMagnitude.Name = "LabelFrictionMagnitude"; + LabelFrictionMagnitude.Size = new System.Drawing.Size(68, 15); + LabelFrictionMagnitude.TabIndex = 3; + LabelFrictionMagnitude.Tag = "FrictionMagnitude"; + LabelFrictionMagnitude.Text = "Magnitude:"; + LabelFrictionMagnitude.Click += FFB_Label_Click; + // + // SliderFrictionMagnitude + // + SliderFrictionMagnitude.AutoSize = false; + SliderFrictionMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderFrictionMagnitude.Enabled = false; + SliderFrictionMagnitude.LargeChange = 50; + SliderFrictionMagnitude.Location = new System.Drawing.Point(108, 30); + SliderFrictionMagnitude.Maximum = 10000; + SliderFrictionMagnitude.Minimum = -10000; + SliderFrictionMagnitude.Name = "SliderFrictionMagnitude"; + SliderFrictionMagnitude.Size = new System.Drawing.Size(998, 31); + SliderFrictionMagnitude.TabIndex = 0; + SliderFrictionMagnitude.Tag = "FrictionMagnitude"; + SliderFrictionMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderFrictionMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBDamper + // + GBDamper.Controls.Add(UDDamperMagnitude); + GBDamper.Controls.Add(LabelDamperMagnitude); + GBDamper.Controls.Add(CBDamper); + GBDamper.Controls.Add(SliderDamperMagnitude); + GBDamper.Location = new System.Drawing.Point(6, 266); + GBDamper.Name = "GBDamper"; + GBDamper.Size = new System.Drawing.Size(1214, 68); + GBDamper.TabIndex = 0; + GBDamper.TabStop = false; + GBDamper.Tag = "Damper"; + GBDamper.Text = " Damper"; + GBDamper.Click += FFB_GroupBox_Click; + // + // UDDamperMagnitude + // + UDDamperMagnitude.Enabled = false; + UDDamperMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDDamperMagnitude.Location = new System.Drawing.Point(1112, 30); + UDDamperMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDDamperMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDDamperMagnitude.Name = "UDDamperMagnitude"; + UDDamperMagnitude.Size = new System.Drawing.Size(96, 23); + UDDamperMagnitude.TabIndex = 2; + UDDamperMagnitude.Tag = "DamperMagnitude"; + UDDamperMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // LabelDamperMagnitude + // + LabelDamperMagnitude.AutoSize = true; + LabelDamperMagnitude.Location = new System.Drawing.Point(6, 32); + LabelDamperMagnitude.Name = "LabelDamperMagnitude"; + LabelDamperMagnitude.Size = new System.Drawing.Size(68, 15); + LabelDamperMagnitude.TabIndex = 3; + LabelDamperMagnitude.Tag = "DamperMagnitude"; + LabelDamperMagnitude.Text = "Magnitude:"; + LabelDamperMagnitude.Click += FFB_Label_Click; + // + // CBDamper + // + CBDamper.AutoSize = true; + CBDamper.Location = new System.Drawing.Point(0, 3); + CBDamper.Name = "CBDamper"; + CBDamper.Size = new System.Drawing.Size(15, 14); + CBDamper.TabIndex = 1; + CBDamper.Tag = "Damper"; + CBDamper.UseVisualStyleBackColor = true; + CBDamper.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // SliderDamperMagnitude + // + SliderDamperMagnitude.AutoSize = false; + SliderDamperMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderDamperMagnitude.Enabled = false; + SliderDamperMagnitude.LargeChange = 50; + SliderDamperMagnitude.Location = new System.Drawing.Point(108, 30); + SliderDamperMagnitude.Maximum = 10000; + SliderDamperMagnitude.Minimum = -10000; + SliderDamperMagnitude.Name = "SliderDamperMagnitude"; + SliderDamperMagnitude.Size = new System.Drawing.Size(998, 31); + SliderDamperMagnitude.TabIndex = 0; + SliderDamperMagnitude.Tag = "DamperMagnitude"; + SliderDamperMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderDamperMagnitude.Scroll += FFB_Slider_Scroll; + // + // GBConstantForce + // + GBConstantForce.Controls.Add(CBConstantForce); + GBConstantForce.Controls.Add(UDConstantForceMagnitude); + GBConstantForce.Controls.Add(LabelConstantForceMagnitude); + GBConstantForce.Controls.Add(SliderConstantForceMagnitude); + GBConstantForce.Location = new System.Drawing.Point(6, 6); + GBConstantForce.Name = "GBConstantForce"; + GBConstantForce.Size = new System.Drawing.Size(1214, 68); + GBConstantForce.TabIndex = 0; + GBConstantForce.TabStop = false; + GBConstantForce.Tag = "ConstantForce"; + GBConstantForce.Text = " Constant Force"; + GBConstantForce.Click += FFB_GroupBox_Click; + // + // CBConstantForce + // + CBConstantForce.AutoSize = true; + CBConstantForce.Location = new System.Drawing.Point(0, 3); + CBConstantForce.Name = "CBConstantForce"; + CBConstantForce.Size = new System.Drawing.Size(15, 14); + CBConstantForce.TabIndex = 1; + CBConstantForce.Tag = "ConstantForce"; + CBConstantForce.UseVisualStyleBackColor = true; + CBConstantForce.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDConstantForceMagnitude + // + UDConstantForceMagnitude.Enabled = false; + UDConstantForceMagnitude.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDConstantForceMagnitude.Location = new System.Drawing.Point(1112, 30); + UDConstantForceMagnitude.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDConstantForceMagnitude.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDConstantForceMagnitude.Name = "UDConstantForceMagnitude"; + UDConstantForceMagnitude.Size = new System.Drawing.Size(96, 23); + UDConstantForceMagnitude.TabIndex = 2; + UDConstantForceMagnitude.Tag = "ConstantForceMagnitude"; + UDConstantForceMagnitude.ValueChanged += FFB_UpDown_ValueChanged; + // + // LabelConstantForceMagnitude + // + LabelConstantForceMagnitude.AutoSize = true; + LabelConstantForceMagnitude.Location = new System.Drawing.Point(6, 32); + LabelConstantForceMagnitude.Name = "LabelConstantForceMagnitude"; + LabelConstantForceMagnitude.Size = new System.Drawing.Size(68, 15); + LabelConstantForceMagnitude.TabIndex = 3; + LabelConstantForceMagnitude.Tag = "ConstantForceMagnitude"; + LabelConstantForceMagnitude.Text = "Magnitude:"; + LabelConstantForceMagnitude.Click += FFB_Label_Click; + // + // SliderConstantForceMagnitude + // + SliderConstantForceMagnitude.AutoSize = false; + SliderConstantForceMagnitude.BackColor = System.Drawing.SystemColors.Control; + SliderConstantForceMagnitude.Enabled = false; + SliderConstantForceMagnitude.LargeChange = 50; + SliderConstantForceMagnitude.Location = new System.Drawing.Point(108, 30); + SliderConstantForceMagnitude.Maximum = 10000; + SliderConstantForceMagnitude.Minimum = -10000; + SliderConstantForceMagnitude.Name = "SliderConstantForceMagnitude"; + SliderConstantForceMagnitude.Size = new System.Drawing.Size(998, 31); + SliderConstantForceMagnitude.TabIndex = 0; + SliderConstantForceMagnitude.Tag = "ConstantForceMagnitude"; + SliderConstantForceMagnitude.TickStyle = System.Windows.Forms.TickStyle.None; + SliderConstantForceMagnitude.Scroll += FFB_Slider_Scroll; + // + // tabPage1 + // + tabPage1.Controls.Add(GBCuss); + tabPage1.Location = new System.Drawing.Point(4, 24); + tabPage1.Name = "tabPage1"; + tabPage1.Padding = new System.Windows.Forms.Padding(3); + tabPage1.Size = new System.Drawing.Size(1226, 637); + tabPage1.TabIndex = 5; + tabPage1.Text = "custom forces"; + tabPage1.UseVisualStyleBackColor = true; + // + // GBCuss + // + GBCuss.Controls.Add(UDCustomForceSamplePeriod); + GBCuss.Controls.Add(label16); + GBCuss.Controls.Add(SliderCustomForceSamplePeriod); + GBCuss.Controls.Add(UDCustomForceMagnitude9); + GBCuss.Controls.Add(label15); + GBCuss.Controls.Add(SliderCustomForceMagnitude9); + GBCuss.Controls.Add(UDCustomForceMagnitude8); + GBCuss.Controls.Add(label14); + GBCuss.Controls.Add(SliderCustomForceMagnitude8); + GBCuss.Controls.Add(UDCustomForceMagnitude7); + GBCuss.Controls.Add(label13); + GBCuss.Controls.Add(SliderCustomForceMagnitude7); + GBCuss.Controls.Add(UDCustomForceMagnitude6); + GBCuss.Controls.Add(label12); + GBCuss.Controls.Add(SliderCustomForceMagnitude6); + GBCuss.Controls.Add(UDCustomForceMagnitude5); + GBCuss.Controls.Add(label11); + GBCuss.Controls.Add(SliderCustomForceMagnitude5); + GBCuss.Controls.Add(UDCustomForceMagnitude4); + GBCuss.Controls.Add(label10); + GBCuss.Controls.Add(SliderCustomForceMagnitude4); + GBCuss.Controls.Add(UDCustomForceMagnitude3); + GBCuss.Controls.Add(label9); + GBCuss.Controls.Add(SliderCustomForceMagnitude3); + GBCuss.Controls.Add(UDCustomForceMagnitude2); + GBCuss.Controls.Add(label8); + GBCuss.Controls.Add(SliderCustomForceMagnitude2); + GBCuss.Controls.Add(UDCustomForceMagnitude1); + GBCuss.Controls.Add(label7); + GBCuss.Controls.Add(SliderCustomForceMagnitude1); + GBCuss.Controls.Add(CBCustomForce); + GBCuss.Controls.Add(UDCustomForceMagnitude0); + GBCuss.Controls.Add(LblCustomForceMagnitude0); + GBCuss.Controls.Add(SliderCustomForceMagnitude0); + GBCuss.Location = new System.Drawing.Point(6, 22); + GBCuss.Name = "GBCuss"; + GBCuss.Size = new System.Drawing.Size(1214, 609); + GBCuss.TabIndex = 1; + GBCuss.TabStop = false; + GBCuss.Tag = "CustomForce"; + GBCuss.Text = " CustomForce"; + // + // UDCustomForceSamplePeriod + // + UDCustomForceSamplePeriod.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceSamplePeriod.Enabled = false; + UDCustomForceSamplePeriod.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceSamplePeriod.Location = new System.Drawing.Point(1112, 553); + UDCustomForceSamplePeriod.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceSamplePeriod.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceSamplePeriod.Name = "UDCustomForceSamplePeriod"; + UDCustomForceSamplePeriod.Size = new System.Drawing.Size(96, 23); + UDCustomForceSamplePeriod.TabIndex = 32; + UDCustomForceSamplePeriod.Tag = "CustomForceMagnitude"; + UDCustomForceSamplePeriod.ValueChanged += FFB_UpDown_ValueChanged; + // + // label16 + // + label16.AutoSize = true; + label16.Location = new System.Drawing.Point(6, 555); + label16.Name = "label16"; + label16.Size = new System.Drawing.Size(86, 15); + label16.TabIndex = 33; + label16.Tag = "CustomForceMag"; + label16.Text = "Sample Period:"; + // + // SliderCustomForceSamplePeriod + // + SliderCustomForceSamplePeriod.AutoSize = false; + SliderCustomForceSamplePeriod.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceSamplePeriod.Enabled = false; + SliderCustomForceSamplePeriod.LargeChange = 50; + SliderCustomForceSamplePeriod.Location = new System.Drawing.Point(108, 553); + SliderCustomForceSamplePeriod.Maximum = 10000; + SliderCustomForceSamplePeriod.Minimum = 1000; + SliderCustomForceSamplePeriod.Name = "SliderCustomForceSamplePeriod"; + SliderCustomForceSamplePeriod.Size = new System.Drawing.Size(998, 31); + SliderCustomForceSamplePeriod.TabIndex = 31; + SliderCustomForceSamplePeriod.Tag = "CustomForceMagnitude"; + SliderCustomForceSamplePeriod.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceSamplePeriod.Value = 1000; + SliderCustomForceSamplePeriod.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude9 + // + UDCustomForceMagnitude9.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude9.Enabled = false; + UDCustomForceMagnitude9.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude9.Location = new System.Drawing.Point(1112, 487); + UDCustomForceMagnitude9.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude9.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude9.Name = "UDCustomForceMagnitude9"; + UDCustomForceMagnitude9.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude9.TabIndex = 29; + UDCustomForceMagnitude9.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude9.ValueChanged += FFB_UpDown_ValueChanged; + // + // label15 + // + label15.AccessibleName = "LblCustomForceMagnitude0"; + label15.AutoSize = true; + label15.Location = new System.Drawing.Point(6, 489); + label15.Name = "label15"; + label15.Size = new System.Drawing.Size(68, 15); + label15.TabIndex = 30; + label15.Tag = "LblCustomForceMag0"; + label15.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude9 + // + SliderCustomForceMagnitude9.AutoSize = false; + SliderCustomForceMagnitude9.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude9.Enabled = false; + SliderCustomForceMagnitude9.LargeChange = 50; + SliderCustomForceMagnitude9.Location = new System.Drawing.Point(108, 487); + SliderCustomForceMagnitude9.Maximum = 10000; + SliderCustomForceMagnitude9.Minimum = -10000; + SliderCustomForceMagnitude9.Name = "SliderCustomForceMagnitude9"; + SliderCustomForceMagnitude9.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude9.TabIndex = 28; + SliderCustomForceMagnitude9.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude9.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude9.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude8 + // + UDCustomForceMagnitude8.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude8.Enabled = false; + UDCustomForceMagnitude8.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude8.Location = new System.Drawing.Point(1112, 433); + UDCustomForceMagnitude8.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude8.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude8.Name = "UDCustomForceMagnitude8"; + UDCustomForceMagnitude8.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude8.TabIndex = 26; + UDCustomForceMagnitude8.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude8.ValueChanged += FFB_UpDown_ValueChanged; + // + // label14 + // + label14.AccessibleName = "LblCustomForceMagnitude0"; + label14.AutoSize = true; + label14.Location = new System.Drawing.Point(6, 435); + label14.Name = "label14"; + label14.Size = new System.Drawing.Size(68, 15); + label14.TabIndex = 27; + label14.Tag = "LblCustomForceMag0"; + label14.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude8 + // + SliderCustomForceMagnitude8.AutoSize = false; + SliderCustomForceMagnitude8.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude8.Enabled = false; + SliderCustomForceMagnitude8.LargeChange = 50; + SliderCustomForceMagnitude8.Location = new System.Drawing.Point(108, 433); + SliderCustomForceMagnitude8.Maximum = 10000; + SliderCustomForceMagnitude8.Minimum = -10000; + SliderCustomForceMagnitude8.Name = "SliderCustomForceMagnitude8"; + SliderCustomForceMagnitude8.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude8.TabIndex = 25; + SliderCustomForceMagnitude8.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude8.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude8.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude7 + // + UDCustomForceMagnitude7.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude7.Enabled = false; + UDCustomForceMagnitude7.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude7.Location = new System.Drawing.Point(1112, 380); + UDCustomForceMagnitude7.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude7.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude7.Name = "UDCustomForceMagnitude7"; + UDCustomForceMagnitude7.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude7.TabIndex = 23; + UDCustomForceMagnitude7.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude7.ValueChanged += FFB_UpDown_ValueChanged; + // + // label13 + // + label13.AccessibleName = "LblCustomForceMagnitude0"; + label13.AutoSize = true; + label13.Location = new System.Drawing.Point(6, 382); + label13.Name = "label13"; + label13.Size = new System.Drawing.Size(68, 15); + label13.TabIndex = 24; + label13.Tag = "LblCustomForceMag0"; + label13.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude7 + // + SliderCustomForceMagnitude7.AutoSize = false; + SliderCustomForceMagnitude7.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude7.Enabled = false; + SliderCustomForceMagnitude7.LargeChange = 50; + SliderCustomForceMagnitude7.Location = new System.Drawing.Point(108, 380); + SliderCustomForceMagnitude7.Maximum = 10000; + SliderCustomForceMagnitude7.Minimum = -10000; + SliderCustomForceMagnitude7.Name = "SliderCustomForceMagnitude7"; + SliderCustomForceMagnitude7.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude7.TabIndex = 22; + SliderCustomForceMagnitude7.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude7.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude7.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude6 + // + UDCustomForceMagnitude6.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude6.Enabled = false; + UDCustomForceMagnitude6.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude6.Location = new System.Drawing.Point(1112, 328); + UDCustomForceMagnitude6.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude6.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude6.Name = "UDCustomForceMagnitude6"; + UDCustomForceMagnitude6.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude6.TabIndex = 20; + UDCustomForceMagnitude6.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude6.ValueChanged += FFB_UpDown_ValueChanged; + // + // label12 + // + label12.AccessibleName = "LblCustomForceMagnitude0"; + label12.AutoSize = true; + label12.Location = new System.Drawing.Point(6, 330); + label12.Name = "label12"; + label12.Size = new System.Drawing.Size(68, 15); + label12.TabIndex = 21; + label12.Tag = "LblCustomForceMag0"; + label12.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude6 + // + SliderCustomForceMagnitude6.AutoSize = false; + SliderCustomForceMagnitude6.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude6.Enabled = false; + SliderCustomForceMagnitude6.LargeChange = 50; + SliderCustomForceMagnitude6.Location = new System.Drawing.Point(108, 328); + SliderCustomForceMagnitude6.Maximum = 10000; + SliderCustomForceMagnitude6.Minimum = -10000; + SliderCustomForceMagnitude6.Name = "SliderCustomForceMagnitude6"; + SliderCustomForceMagnitude6.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude6.TabIndex = 19; + SliderCustomForceMagnitude6.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude6.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude6.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude5 + // + UDCustomForceMagnitude5.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude5.Enabled = false; + UDCustomForceMagnitude5.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude5.Location = new System.Drawing.Point(1112, 276); + UDCustomForceMagnitude5.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude5.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude5.Name = "UDCustomForceMagnitude5"; + UDCustomForceMagnitude5.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude5.TabIndex = 17; + UDCustomForceMagnitude5.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude5.ValueChanged += FFB_UpDown_ValueChanged; + // + // label11 + // + label11.AccessibleName = "LblCustomForceMagnitude0"; + label11.AutoSize = true; + label11.Location = new System.Drawing.Point(6, 278); + label11.Name = "label11"; + label11.Size = new System.Drawing.Size(68, 15); + label11.TabIndex = 18; + label11.Tag = "LblCustomForceMag0"; + label11.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude5 + // + SliderCustomForceMagnitude5.AutoSize = false; + SliderCustomForceMagnitude5.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude5.Enabled = false; + SliderCustomForceMagnitude5.LargeChange = 50; + SliderCustomForceMagnitude5.Location = new System.Drawing.Point(108, 276); + SliderCustomForceMagnitude5.Maximum = 10000; + SliderCustomForceMagnitude5.Minimum = -10000; + SliderCustomForceMagnitude5.Name = "SliderCustomForceMagnitude5"; + SliderCustomForceMagnitude5.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude5.TabIndex = 16; + SliderCustomForceMagnitude5.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude5.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude5.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude4 + // + UDCustomForceMagnitude4.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude4.Enabled = false; + UDCustomForceMagnitude4.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude4.Location = new System.Drawing.Point(1112, 226); + UDCustomForceMagnitude4.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude4.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude4.Name = "UDCustomForceMagnitude4"; + UDCustomForceMagnitude4.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude4.TabIndex = 14; + UDCustomForceMagnitude4.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude4.ValueChanged += FFB_UpDown_ValueChanged; + // + // label10 + // + label10.AccessibleName = "LblCustomForceMagnitude0"; + label10.AutoSize = true; + label10.Location = new System.Drawing.Point(6, 228); + label10.Name = "label10"; + label10.Size = new System.Drawing.Size(68, 15); + label10.TabIndex = 15; + label10.Tag = "LblCustomForceMag0"; + label10.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude4 + // + SliderCustomForceMagnitude4.AutoSize = false; + SliderCustomForceMagnitude4.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude4.Enabled = false; + SliderCustomForceMagnitude4.LargeChange = 50; + SliderCustomForceMagnitude4.Location = new System.Drawing.Point(108, 226); + SliderCustomForceMagnitude4.Maximum = 10000; + SliderCustomForceMagnitude4.Minimum = -10000; + SliderCustomForceMagnitude4.Name = "SliderCustomForceMagnitude4"; + SliderCustomForceMagnitude4.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude4.TabIndex = 13; + SliderCustomForceMagnitude4.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude4.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude4.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude3 + // + UDCustomForceMagnitude3.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude3.Enabled = false; + UDCustomForceMagnitude3.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude3.Location = new System.Drawing.Point(1112, 179); + UDCustomForceMagnitude3.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude3.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude3.Name = "UDCustomForceMagnitude3"; + UDCustomForceMagnitude3.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude3.TabIndex = 11; + UDCustomForceMagnitude3.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude3.ValueChanged += FFB_UpDown_ValueChanged; + // + // label9 + // + label9.AccessibleName = "LblCustomForceMagnitude0"; + label9.AutoSize = true; + label9.Location = new System.Drawing.Point(6, 181); + label9.Name = "label9"; + label9.Size = new System.Drawing.Size(68, 15); + label9.TabIndex = 12; + label9.Tag = "LblCustomForceMag0"; + label9.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude3 + // + SliderCustomForceMagnitude3.AutoSize = false; + SliderCustomForceMagnitude3.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude3.Enabled = false; + SliderCustomForceMagnitude3.LargeChange = 50; + SliderCustomForceMagnitude3.Location = new System.Drawing.Point(108, 179); + SliderCustomForceMagnitude3.Maximum = 10000; + SliderCustomForceMagnitude3.Minimum = -10000; + SliderCustomForceMagnitude3.Name = "SliderCustomForceMagnitude3"; + SliderCustomForceMagnitude3.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude3.TabIndex = 10; + SliderCustomForceMagnitude3.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude3.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude3.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude2 + // + UDCustomForceMagnitude2.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude2.Enabled = false; + UDCustomForceMagnitude2.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude2.Location = new System.Drawing.Point(1112, 129); + UDCustomForceMagnitude2.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude2.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude2.Name = "UDCustomForceMagnitude2"; + UDCustomForceMagnitude2.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude2.TabIndex = 8; + UDCustomForceMagnitude2.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude2.ValueChanged += FFB_UpDown_ValueChanged; + // + // label8 + // + label8.AccessibleName = "LblCustomForceMagnitude0"; + label8.AutoSize = true; + label8.Location = new System.Drawing.Point(6, 131); + label8.Name = "label8"; + label8.Size = new System.Drawing.Size(68, 15); + label8.TabIndex = 9; + label8.Tag = "LblCustomForceMag0"; + label8.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude2 + // + SliderCustomForceMagnitude2.AutoSize = false; + SliderCustomForceMagnitude2.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude2.Enabled = false; + SliderCustomForceMagnitude2.LargeChange = 50; + SliderCustomForceMagnitude2.Location = new System.Drawing.Point(108, 129); + SliderCustomForceMagnitude2.Maximum = 10000; + SliderCustomForceMagnitude2.Minimum = -10000; + SliderCustomForceMagnitude2.Name = "SliderCustomForceMagnitude2"; + SliderCustomForceMagnitude2.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude2.TabIndex = 7; + SliderCustomForceMagnitude2.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude2.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude2.Scroll += FFB_Slider_Scroll; + // + // UDCustomForceMagnitude1 + // + UDCustomForceMagnitude1.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude1.Enabled = false; + UDCustomForceMagnitude1.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude1.Location = new System.Drawing.Point(1112, 80); + UDCustomForceMagnitude1.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude1.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude1.Name = "UDCustomForceMagnitude1"; + UDCustomForceMagnitude1.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude1.TabIndex = 5; + UDCustomForceMagnitude1.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude1.ValueChanged += FFB_UpDown_ValueChanged; + // + // label7 + // + label7.AccessibleName = "LblCustomForceMagnitude0"; + label7.AutoSize = true; + label7.Location = new System.Drawing.Point(6, 82); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(68, 15); + label7.TabIndex = 6; + label7.Tag = "LblCustomForceMag0"; + label7.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude1 + // + SliderCustomForceMagnitude1.AutoSize = false; + SliderCustomForceMagnitude1.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude1.Enabled = false; + SliderCustomForceMagnitude1.LargeChange = 50; + SliderCustomForceMagnitude1.Location = new System.Drawing.Point(108, 80); + SliderCustomForceMagnitude1.Maximum = 10000; + SliderCustomForceMagnitude1.Minimum = -10000; + SliderCustomForceMagnitude1.Name = "SliderCustomForceMagnitude1"; + SliderCustomForceMagnitude1.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude1.TabIndex = 4; + SliderCustomForceMagnitude1.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude1.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude1.Scroll += FFB_Slider_Scroll; + // + // CBCustomForce + // + CBCustomForce.AutoSize = true; + CBCustomForce.Location = new System.Drawing.Point(0, 3); + CBCustomForce.Name = "CBCustomForce"; + CBCustomForce.Size = new System.Drawing.Size(15, 14); + CBCustomForce.TabIndex = 1; + CBCustomForce.Tag = "CustomForce"; + CBCustomForce.UseVisualStyleBackColor = true; + CBCustomForce.CheckedChanged += FFB_CheckBox_CheckedChanged; + // + // UDCustomForceMagnitude0 + // + UDCustomForceMagnitude0.AccessibleDescription = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude0.Enabled = false; + UDCustomForceMagnitude0.Increment = new decimal(new int[] { 10, 0, 0, 0 }); + UDCustomForceMagnitude0.Location = new System.Drawing.Point(1112, 30); + UDCustomForceMagnitude0.Maximum = new decimal(new int[] { 10000, 0, 0, 0 }); + UDCustomForceMagnitude0.Minimum = new decimal(new int[] { 10000, 0, 0, int.MinValue }); + UDCustomForceMagnitude0.Name = "UDCustomForceMagnitude0"; + UDCustomForceMagnitude0.Size = new System.Drawing.Size(96, 23); + UDCustomForceMagnitude0.TabIndex = 2; + UDCustomForceMagnitude0.Tag = "CustomForceMagnitude"; + UDCustomForceMagnitude0.ValueChanged += FFB_UpDown_ValueChanged; + // + // LblCustomForceMagnitude0 + // + LblCustomForceMagnitude0.AutoSize = true; + LblCustomForceMagnitude0.Location = new System.Drawing.Point(6, 32); + LblCustomForceMagnitude0.Name = "LblCustomForceMagnitude0"; + LblCustomForceMagnitude0.Size = new System.Drawing.Size(68, 15); + LblCustomForceMagnitude0.TabIndex = 3; + LblCustomForceMagnitude0.Tag = "LblCustomForceMag0"; + LblCustomForceMagnitude0.Text = "Magnitude:"; + // + // SliderCustomForceMagnitude0 + // + SliderCustomForceMagnitude0.AutoSize = false; + SliderCustomForceMagnitude0.BackColor = System.Drawing.SystemColors.Control; + SliderCustomForceMagnitude0.Enabled = false; + SliderCustomForceMagnitude0.LargeChange = 50; + SliderCustomForceMagnitude0.Location = new System.Drawing.Point(108, 30); + SliderCustomForceMagnitude0.Maximum = 10000; + SliderCustomForceMagnitude0.Minimum = -10000; + SliderCustomForceMagnitude0.Name = "SliderCustomForceMagnitude0"; + SliderCustomForceMagnitude0.Size = new System.Drawing.Size(998, 31); + SliderCustomForceMagnitude0.TabIndex = 0; + SliderCustomForceMagnitude0.Tag = "CustomForceMagnitude"; + SliderCustomForceMagnitude0.TickStyle = System.Windows.Forms.TickStyle.None; + SliderCustomForceMagnitude0.Scroll += FFB_Slider_Scroll; + // + // TabMisc + // + TabMisc.Controls.Add(LabelDebug); + TabMisc.Controls.Add(ButtonDebug); + TabMisc.Location = new System.Drawing.Point(4, 24); + TabMisc.Name = "TabMisc"; + TabMisc.Padding = new System.Windows.Forms.Padding(3); + TabMisc.Size = new System.Drawing.Size(1226, 637); + TabMisc.TabIndex = 4; + TabMisc.Text = "Misc"; + TabMisc.UseVisualStyleBackColor = true; + // + // LabelDebug + // + LabelDebug.AutoSize = true; + LabelDebug.Location = new System.Drawing.Point(6, 3); + LabelDebug.Name = "LabelDebug"; + LabelDebug.Size = new System.Drawing.Size(73, 15); + LabelDebug.TabIndex = 1; + LabelDebug.Text = "Debug Stuff:"; + // + // ButtonDebug + // + ButtonDebug.Location = new System.Drawing.Point(1077, 6); + ButtonDebug.Name = "ButtonDebug"; + ButtonDebug.Size = new System.Drawing.Size(143, 55); + ButtonDebug.TabIndex = 0; + ButtonDebug.Text = "Debug"; + ButtonDebug.UseVisualStyleBackColor = true; + ButtonDebug.Click += ButtonDebug_Click; + // + // Form1 + // + ClientSize = new System.Drawing.Size(1258, 718); + Controls.Add(TabController); + Controls.Add(ButtonRemove); + Controls.Add(ButtonAttach); + Controls.Add(ButtonEnumerateDevices); + Controls.Add(ComboBoxDevices); + Name = "Form1"; + Text = "Direct Input Explorer"; + FormClosing += Form1_FormClosing; + Load += Form1_Load; + TabController.ResumeLayout(false); + TabDeviceInfo.ResumeLayout(false); + TabDeviceInfo.PerformLayout(); + TabInput.ResumeLayout(false); + TabInput.PerformLayout(); + TabFFB.ResumeLayout(false); + GBSine.ResumeLayout(false); + GBSine.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDSineMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderSineMagnitude).EndInit(); + GBSquare.ResumeLayout(false); + GBSquare.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDSquareMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderSquareMagnitude).EndInit(); + GBTriangle.ResumeLayout(false); + GBTriangle.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDTriangleMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderTriangleMagnitude).EndInit(); + GBRampForce.ResumeLayout(false); + GBRampForce.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDRampForceMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderRampForceMagnitude).EndInit(); + GBSawtoothUp.ResumeLayout(false); + GBSawtoothUp.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDSawtoothUpMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderSawtoothUpMagnitude).EndInit(); + GBSawtoothDown.ResumeLayout(false); + GBSawtoothDown.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDSawtoothDownMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderSawtoothDownMagnitude).EndInit(); + GBSpring.ResumeLayout(false); + GBSpring.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDSpringDeadband).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDSpringSaturation).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDSpringCoefficient).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDSpringOffset).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderSpringDeadband).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderSpringSaturation).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderSpringCoefficient).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderSpringOffset).EndInit(); + GBInertia.ResumeLayout(false); + GBInertia.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDInertiaMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderInertiaMagnitude).EndInit(); + GBFriction.ResumeLayout(false); + GBFriction.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDFrictionMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderFrictionMagnitude).EndInit(); + GBDamper.ResumeLayout(false); + GBDamper.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDDamperMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderDamperMagnitude).EndInit(); + GBConstantForce.ResumeLayout(false); + GBConstantForce.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDConstantForceMagnitude).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderConstantForceMagnitude).EndInit(); + tabPage1.ResumeLayout(false); + GBCuss.ResumeLayout(false); + GBCuss.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceSamplePeriod).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceSamplePeriod).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude9).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude9).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude8).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude8).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude7).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude7).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude6).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude6).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude5).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude5).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude4).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude4).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude3).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude3).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude2).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude2).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude1).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude1).EndInit(); + ((System.ComponentModel.ISupportInitialize)UDCustomForceMagnitude0).EndInit(); + ((System.ComponentModel.ISupportInitialize)SliderCustomForceMagnitude0).EndInit(); + TabMisc.ResumeLayout(false); + TabMisc.PerformLayout(); + ResumeLayout(false); + } - } - - #endregion - private System.Windows.Forms.ComboBox ComboBoxDevices; + #endregion + private System.Windows.Forms.ComboBox ComboBoxDevices; private System.Windows.Forms.Button ButtonEnumerateDevices; private System.Windows.Forms.Label LabelDeviceInfo; private System.Windows.Forms.Timer TimerPoll; @@ -932,6 +1898,72 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox CBFriction; private System.Windows.Forms.CheckBox CBDamper; private System.Windows.Forms.Label LabelFFBCapabilities; - } + private System.Windows.Forms.GroupBox GBSawtoothDown; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.NumericUpDown UDSawtoothDownMagnitude; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TrackBar SliderSawtoothDownMagnitude; + private System.Windows.Forms.GroupBox GBRampForce; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.NumericUpDown UDRampForceMagnitude; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TrackBar SliderRampForceMagnitude; + private System.Windows.Forms.GroupBox GBSawtoothUp; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.NumericUpDown UDSawtoothUpMagnitude; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TrackBar SliderSawtoothUpMagnitude; + private System.Windows.Forms.GroupBox GBSine; + private System.Windows.Forms.CheckBox checkBox6; + private System.Windows.Forms.NumericUpDown UDSineMagnitude; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TrackBar SliderSineMagnitude; + private System.Windows.Forms.GroupBox GBSquare; + private System.Windows.Forms.CheckBox checkBox5; + private System.Windows.Forms.NumericUpDown UDSquareMagnitude; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TrackBar SliderSquareMagnitude; + private System.Windows.Forms.GroupBox GBTriangle; + private System.Windows.Forms.CheckBox checkBox4; + private System.Windows.Forms.NumericUpDown UDTriangleMagnitude; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TrackBar SliderTriangleMagnitude; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.GroupBox GBCuss; + private System.Windows.Forms.CheckBox CBCustomForce; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude0; + private System.Windows.Forms.Label LblCustomForceMagnitude0; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude0; + private System.Windows.Forms.NumericUpDown UDCustomForceSamplePeriod; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.TrackBar SliderCustomForceSamplePeriod; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude9; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude9; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude8; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude8; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude7; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude7; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude6; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude6; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude5; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude5; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude4; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude4; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude3; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude3; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude2; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude2; + private System.Windows.Forms.NumericUpDown UDCustomForceMagnitude1; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TrackBar SliderCustomForceMagnitude1; + } } diff --git a/DirectInputExplorer~/DirectInputExplorer/Form1.cs b/DirectInputExplorer~/DirectInputExplorer/Form1.cs index d351ad9..147051c 100644 --- a/DirectInputExplorer~/DirectInputExplorer/Form1.cs +++ b/DirectInputExplorer~/DirectInputExplorer/Form1.cs @@ -1,232 +1,493 @@ īģŋusing System; +using System.Diagnostics; using System.Linq; +using System.Runtime.InteropServices; using System.Windows.Forms; using DirectInputManager; -namespace DirectInputExplorer { - public partial class Form1 : Form { - public Form1() { - InitializeComponent(); - } - - ////////////////////////////////////////////////////////////// - // .NET Events/Actions - ////////////////////////////////////////////////////////////// - - private void Form1_Load(object sender, EventArgs e) { - DIManager.Initialize(); - DIManager.OnDeviceAdded += DIDeviceAdded; // Register handler for when a device is attached - DIManager.OnDeviceRemoved += DIDeviceRemoved; // Register handler for when a device is removed - ButtonEnumerateDevices.PerformClick(); - if(DIManager.devices.Length != 0) { ComboBoxDevices.SelectedIndex = 0; } // Select first device by default - - // Disable tabs until device is attached - foreach (TabPage tab in TabController.TabPages) { - tab.Enabled = false; - } - (TabController.TabPages[0] as TabPage).Enabled = true; - (TabController.TabPages["TabMisc"] as TabPage).Enabled = true; - } +namespace DirectInputExplorer +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } - private void Form1_FormClosing(object sender, FormClosingEventArgs e) { - DIManager.StopDirectInput(); - } + ////////////////////////////////////////////////////////////// + // .NET Events/Actions + ////////////////////////////////////////////////////////////// + + private void Form1_Load(object sender, EventArgs e) + { + DIManager.Initialize(); + DIManager.OnDeviceAdded += DIDeviceAdded; // Register handler for when a device is attached + DIManager.OnDeviceRemoved += DIDeviceRemoved; // Register handler for when a device is removed + ButtonEnumerateDevices.PerformClick(); + if (DIManager.devices.Length != 0) { ComboBoxDevices.SelectedIndex = 0; } // Select first device by default + + // Disable tabs until device is attached + foreach (TabPage tab in TabController.TabPages) + { + tab.Enabled = false; + } + (TabController.TabPages[0] as TabPage).Enabled = true; + (TabController.TabPages["TabMisc"] as TabPage).Enabled = true; + } - private void ButtonEnumerateDevices_Click(object sender, EventArgs e) { - string ExistingGUID = ComboBoxDevices.SelectedIndex != -1 ? DIManager.devices[ComboBoxDevices.SelectedIndex].guidInstance : ""; // GUID of device selected, empty if not - DIManager.EnumerateDevices(); // Fetch currently plugged in devices + private void Form1_FormClosing(object sender, FormClosingEventArgs e) + { + DIManager.StopDirectInput(); + } - ComboBoxDevices.Items.Clear(); - foreach(DeviceInfo device in DIManager.devices) { - ComboBoxDevices.Items.Add( device.productName ); - } + private void ButtonEnumerateDevices_Click(object sender, EventArgs e) + { + string ExistingGUID = ComboBoxDevices.SelectedIndex != -1 ? DIManager.devices[ComboBoxDevices.SelectedIndex].guidInstance : ""; // GUID of device selected, empty if not + DIManager.EnumerateDevices(); // Fetch currently plugged in devices - if (!String.IsNullOrEmpty(ExistingGUID)) { ComboBoxDevices.SelectedIndex = Array.FindIndex(DIManager.devices, d => d.guidInstance == ExistingGUID); } // Reselect that device - } + ComboBoxDevices.Items.Clear(); + foreach (DeviceInfo device in DIManager.devices) + { + ComboBoxDevices.Items.Add(device.productName); + } - private void ComboBoxDevices_SelectedIndexChanged(object sender, EventArgs e) { - UpdateReadoutsWithDeviceData(DIManager.devices[ComboBoxDevices.SelectedIndex]); - } + if (!String.IsNullOrEmpty(ExistingGUID)) { ComboBoxDevices.SelectedIndex = Array.FindIndex(DIManager.devices, d => d.guidInstance == ExistingGUID); } // Reselect that device + } - private void ButtonAttach_Click(object sender, EventArgs e) { - DeviceInfo targetDevice = DIManager.devices[ComboBoxDevices.SelectedIndex]; - DIManager.Attach(targetDevice); // Connect to device - UpdateReadoutsWithDeviceData(DIManager.devices[ComboBoxDevices.SelectedIndex]); - - // Attach Events - ActiveDeviceInfo ADI; - if (DIManager.GetADI(targetDevice, out ADI)) { // Check if device active - //ADI.OnDeviceRemoved += DIDeviceRemoved; // Register a handler for when the device is removed - ADI.OnDeviceStateChange += DeviceStateChanged; // Register a handler for when the device state changes - } - } + private void ComboBoxDevices_SelectedIndexChanged(object sender, EventArgs e) + { + UpdateReadoutsWithDeviceData(DIManager.devices[ComboBoxDevices.SelectedIndex]); + } - private void ButtonRemove_Click(object sender, EventArgs e) { - DIManager.StopAllFFBEffects(DIManager.devices[ComboBoxDevices.SelectedIndex]); - DIManager.Destroy(DIManager.devices[ComboBoxDevices.SelectedIndex]); // Destroy device - UpdateReadoutsWithDeviceData(DIManager.devices[ComboBoxDevices.SelectedIndex]); - } + private void ButtonAttach_Click(object sender, EventArgs e) + { + DeviceInfo targetDevice = DIManager.devices[ComboBoxDevices.SelectedIndex]; + DIManager.Attach(targetDevice); // Connect to device + UpdateReadoutsWithDeviceData(DIManager.devices[ComboBoxDevices.SelectedIndex]); + + // Attach Events + ActiveDeviceInfo ADI; + if (DIManager.GetADI(targetDevice, out ADI)) + { // Check if device active + ADI.OnDeviceRemoved += DIDeviceRemoved; // Register a handler for when the device is removed + ADI.OnDeviceStateChange += DeviceStateChanged; // Register a handler for when the device state changes + if (DIManager.FFBCapable(targetDevice)) + { + (TabController.TabPages["tabPage1"] as TabPage).Enabled = true; + } + else + { + (TabController.TabPages["tabPage1"] as TabPage).Enabled = false; + } + } + } - private void TimerPoll_Tick_1(object sender, EventArgs e) { - // If device connected get data - /*if (DIManager.devices.Length != 0 && DIManager.isDeviceActive(DIManager.devices[ComboBoxDevices.SelectedIndex])) { // Currently selected device is attached - FlatJoyState2 DeviceState = DIManager.GetDeviceState(DIManager.devices[ComboBoxDevices.SelectedIndex]); - LabelInput.Text = $"buttonsA: {Convert.ToString((long)DeviceState.buttonsA, 2).PadLeft(64, '0')}\nbuttonsB: {Convert.ToString((long)DeviceState.buttonsB, 2).PadLeft(64, '0')}\nlX: {DeviceState.lX}\nlY: {DeviceState.lY}\nlZ: {DeviceState.lZ}\nlU: {DeviceState.lU}\nlV: {DeviceState.lV}\nlRx: {DeviceState.lRx}\nlRy: {DeviceState.lRy}\nlRz: {DeviceState.lRz}\nlVX: {DeviceState.lVX}\nlVY: {DeviceState.lVY}\nlVZ: {DeviceState.lVZ}\nlVU: {DeviceState.lVU}\nlVV: {DeviceState.lVV}\nlVRx: {DeviceState.lVRx}\nlVRy: {DeviceState.lVRy}\nlVRz: {DeviceState.lVRz}\nlAX: {DeviceState.lAX}\nlAY: {DeviceState.lAY}\nlAZ: {DeviceState.lAZ}\nlAU: {DeviceState.lAU}\nlAV: {DeviceState.lAV}\nlARx: {DeviceState.lARx}\nlARy: {DeviceState.lARy}\nlARz: {DeviceState.lARz}\nlFX: {DeviceState.lFX}\nlFY: {DeviceState.lFY}\nlFZ: {DeviceState.lFZ}\nlFU: {DeviceState.lFU}\nlFV: {DeviceState.lFV}\nlFRx: {DeviceState.lFRx}\nlFRy: {DeviceState.lFRy}\nlFRz: {DeviceState.lFRz}\nrgdwPOV: {Convert.ToString((long)DeviceState.rgdwPOV, 2).PadLeft(16, '0')}\n"; - }*/ - - DIManager.PollAll(); // Fetch data from all active devices - if (DIManager.devices.Length != 0 && DIManager.isDeviceActive(DIManager.devices[ComboBoxDevices.SelectedIndex])) { // Currently selected device is attached - UpdateReadoutsWithDeviceData(DIManager.devices[ComboBoxDevices.SelectedIndex]); // Update readouts with active device data - } - } + private void ButtonRemove_Click(object sender, EventArgs e) + { + DIManager.StopAllFFBEffects(DIManager.devices[ComboBoxDevices.SelectedIndex]); + DIManager.Destroy(DIManager.devices[ComboBoxDevices.SelectedIndex]); // Destroy device + UpdateReadoutsWithDeviceData(DIManager.devices[ComboBoxDevices.SelectedIndex]); + (TabController.TabPages["tabPage1"] as TabPage).Enabled = false; + } - ////////////////////////////////////////////////////////////// - // FFB Tab Functions - ////////////////////////////////////////////////////////////// + private void TimerPoll_Tick_1(object sender, EventArgs e) + { + // If device connected get data + /*if (DIManager.devices.Length != 0 && DIManager.isDeviceActive(DIManager.devices[ComboBoxDevices.SelectedIndex])) { // Currently selected device is attached + FlatJoyState2 DeviceState = DIManager.GetDeviceState(DIManager.devices[ComboBoxDevices.SelectedIndex]); + LabelInput.Text = $"buttonsA: {Convert.ToString((long)DeviceState.buttonsA, 2).PadLeft(64, '0')}\nbuttonsB: {Convert.ToString((long)DeviceState.buttonsB, 2).PadLeft(64, '0')}\nlX: {DeviceState.lX}\nlY: {DeviceState.lY}\nlZ: {DeviceState.lZ}\nlU: {DeviceState.lU}\nlV: {DeviceState.lV}\nlRx: {DeviceState.lRx}\nlRy: {DeviceState.lRy}\nlRz: {DeviceState.lRz}\nlVX: {DeviceState.lVX}\nlVY: {DeviceState.lVY}\nlVZ: {DeviceState.lVZ}\nlVU: {DeviceState.lVU}\nlVV: {DeviceState.lVV}\nlVRx: {DeviceState.lVRx}\nlVRy: {DeviceState.lVRy}\nlVRz: {DeviceState.lVRz}\nlAX: {DeviceState.lAX}\nlAY: {DeviceState.lAY}\nlAZ: {DeviceState.lAZ}\nlAU: {DeviceState.lAU}\nlAV: {DeviceState.lAV}\nlARx: {DeviceState.lARx}\nlARy: {DeviceState.lARy}\nlARz: {DeviceState.lARz}\nlFX: {DeviceState.lFX}\nlFY: {DeviceState.lFY}\nlFZ: {DeviceState.lFZ}\nlFU: {DeviceState.lFU}\nlFV: {DeviceState.lFV}\nlFRx: {DeviceState.lFRx}\nlFRy: {DeviceState.lFRy}\nlFRz: {DeviceState.lFRz}\nrgdwPOV: {Convert.ToString((long)DeviceState.rgdwPOV, 2).PadLeft(16, '0')}\n"; + }*/ + + DIManager.PollAll(); // Fetch data from all active devices + if (DIManager.devices.Length != 0 && DIManager.isDeviceActive(DIManager.devices[ComboBoxDevices.SelectedIndex])) + { // Currently selected device is attached + UpdateReadoutsWithDeviceData(DIManager.devices[ComboBoxDevices.SelectedIndex]); // Update readouts with active device data + } + } - private void FFB_CheckBox_CheckedChanged(object sender, EventArgs e) { - CheckBox TriggeringCheckBox = (CheckBox)sender; - FFBEffects TriggeringEffectType = (FFBEffects)Enum.Parse(typeof(FFBEffects), TriggeringCheckBox.Tag.ToString()); + ////////////////////////////////////////////////////////////// + // FFB Tab Functions + ////////////////////////////////////////////////////////////// + + private void FFB_CheckBox_CheckedChanged(object sender, EventArgs e) + { + CheckBox TriggeringCheckBox = (CheckBox)sender; + FFBEffects TriggeringEffectType = (FFBEffects)Enum.Parse(typeof(FFBEffects), TriggeringCheckBox.Tag.ToString()); + if (TriggeringCheckBox.Checked) + { + // Special handling for the periodic effects + if (TriggeringCheckBox.Tag.ToString() == "Sine" || + TriggeringCheckBox.Tag.ToString() == "SawtoothDown" || + TriggeringCheckBox.Tag.ToString() == "SawtoothUp" || + TriggeringCheckBox.Tag.ToString() == "RampForce" || + TriggeringCheckBox.Tag.ToString() == "Triangle" || + TriggeringCheckBox.Tag.ToString() == "Square") + { + // Create and initialize periodic effect + if (!DIManager.EnableFFBEffect(DIManager.devices[ComboBoxDevices.SelectedIndex], TriggeringEffectType)) + { + Debug.WriteLine($"Failed to enable periodic effect"); + TriggeringCheckBox.Checked = false; + return; + } + + // Initialize with current magnitude + if (TriggeringCheckBox.Parent.Controls.Find("UD" + TriggeringEffectType.ToString() + "Magnitude", false).FirstOrDefault() as NumericUpDown != null) + { + UpdatePeriodicSimple( + DIManager.devices[ComboBoxDevices.SelectedIndex], + TriggeringEffectType, + (int)(TriggeringCheckBox.Parent.Controls.Find("UD" + TriggeringEffectType.ToString() + "Magnitude", false).FirstOrDefault() as NumericUpDown).Value, + TriggeringCheckBox.Parent.Controls.Find("UD" + TriggeringEffectType.ToString() + "Magnitude", false).FirstOrDefault() as NumericUpDown + ); + } + } + else + { + // Handle other effects normally + TriggeringCheckBox.Checked = DIManager.EnableFFBEffect( + DIManager.devices[ComboBoxDevices.SelectedIndex], + TriggeringEffectType + ); + } + } + else + { + // Special handling for periodic effects + if (TriggeringCheckBox.Tag.ToString() == "Sine" || + TriggeringCheckBox.Tag.ToString() == "SawtoothDown" || + TriggeringCheckBox.Tag.ToString() == "SawtoothUp" || + TriggeringCheckBox.Tag.ToString() == "RampForce" || + TriggeringCheckBox.Tag.ToString() == "Triangle" || + TriggeringCheckBox.Tag.ToString() == "Square") + { + // First stop the effect by setting magnitude to 0 + UpdatePeriodicSimple( + DIManager.devices[ComboBoxDevices.SelectedIndex], + (FFBEffects)Enum.Parse(typeof(FFBEffects), TriggeringCheckBox.Tag.ToString()), + 0, + TriggeringCheckBox.Parent.Controls.Find("UD" + TriggeringEffectType.ToString() + "Magnitude", false).FirstOrDefault() as NumericUpDown + ); + + // Then destroy the effect + TriggeringCheckBox.Checked = !DIManager.DestroyFFBEffect(DIManager.devices[ComboBoxDevices.SelectedIndex], (FFBEffects)Enum.Parse(typeof(FFBEffects), TriggeringCheckBox.Tag.ToString())); + } + else + { + // Handle other effects normally + TriggeringCheckBox.Checked = !DIManager.DestroyFFBEffect(DIManager.devices[ComboBoxDevices.SelectedIndex], TriggeringEffectType); + } + } + + // Update control states + foreach (Control element in TriggeringCheckBox.Parent.Controls) + { + if (element is CheckBox) continue; + element.Enabled = TriggeringCheckBox.Checked; + } + } - if (TriggeringCheckBox.Checked) { // Enable the effect - TriggeringCheckBox.Checked = DIManager.EnableFFBEffect(DIManager.devices[ComboBoxDevices.SelectedIndex], TriggeringEffectType); // If enable fails, checkbox will be unchecked - } else { // Disable the effect - TriggeringCheckBox.Checked = !DIManager.DestroyFFBEffect(DIManager.devices[ComboBoxDevices.SelectedIndex], TriggeringEffectType); - } + private void FFB_GroupBox_Click(object sender, EventArgs e) + { + CheckBox CB = ((GroupBox)sender).Controls.Find("CB" + ((GroupBox)sender).Tag, false).FirstOrDefault() as CheckBox; + CB.Checked = !CB.Checked; + } - foreach (Control element in TriggeringCheckBox.Parent.Controls) { // For each of the children in the parent GroupBox - if (element is CheckBox) continue; // Don't disable yourself - element.Enabled = TriggeringCheckBox.Checked; - } + private void FFB_Label_Click(object sender, EventArgs e) + { + Label TrigElement = (Label)sender; + TrackBar TB = TrigElement.Parent.Controls.Find("Slider" + TrigElement.Tag, false).FirstOrDefault() as TrackBar; + NumericUpDown UD = TrigElement.Parent.Controls.Find("UD" + TrigElement.Tag, false).FirstOrDefault() as NumericUpDown; + switch (TB.Tag) + { + case string a when a.Contains("Saturation"): // Center Saturation to 5000 + TB.Value = 5000; + UD.Value = 5000; + break; + default: + TB.Value = 0; + UD.Value = 0; + break; + } + } - } + private void FFB_Slider_Scroll(object sender, EventArgs e) + { + TrackBar TrigElement = (TrackBar)sender; + // Update UpDown + NumericUpDown UD = TrigElement.Parent.Controls.Find("UD" + TrigElement.Tag, false).FirstOrDefault() as NumericUpDown; + UD.Value = TrigElement.Value; + // FFB Effect has changed + } - private void FFB_GroupBox_Click(object sender, EventArgs e) { - CheckBox CB = ((GroupBox)sender).Controls.Find("CB" + ((GroupBox)sender).Tag, false).FirstOrDefault() as CheckBox; - CB.Checked = !CB.Checked; - } + private void FFB_UpDown_ValueChanged(object sender, EventArgs e) + { + DeviceInfo ActiveDevice = DIManager.devices[ComboBoxDevices.SelectedIndex]; + NumericUpDown TrigElement = (NumericUpDown)sender; + // Update slider(TrackBar) + TrackBar TB = TrigElement.Parent.Controls.Find("Slider" + TrigElement.Tag, false).FirstOrDefault() as TrackBar; + TB.Value = (int)TrigElement.Value; + // Update Effect + switch (TrigElement.Parent.Tag) + { + case "ConstantForce": + DIManager.UpdateConstantForceSimple(ActiveDevice, (int)((TrigElement.Parent.Controls.Find("UDConstantForceMagnitude", false).FirstOrDefault() as NumericUpDown).Value)); + break; + case "Spring": + DIManager.UpdateSpringSimple(ActiveDevice, + (uint)((TrigElement.Parent.Controls.Find("UDSpringDeadband", false).FirstOrDefault() as NumericUpDown).Value), + (int)((TrigElement.Parent.Controls.Find("UDSpringOffset", false).FirstOrDefault() as NumericUpDown).Value), + (int)((TrigElement.Parent.Controls.Find("UDSpringCoefficient", false).FirstOrDefault() as NumericUpDown).Value), + (int)((TrigElement.Parent.Controls.Find("UDSpringCoefficient", false).FirstOrDefault() as NumericUpDown).Value), + (uint)((TrigElement.Parent.Controls.Find("UDSpringSaturation", false).FirstOrDefault() as NumericUpDown).Value), + (uint)((TrigElement.Parent.Controls.Find("UDSpringSaturation", false).FirstOrDefault() as NumericUpDown).Value) + ); + break; + case "Damper": + DIManager.UpdateDamperSimple(ActiveDevice, (int)((TrigElement.Parent.Controls.Find("UDDamperMagnitude", false).FirstOrDefault() as NumericUpDown).Value)); + break; + case "Friction": + DIManager.UpdateFrictionSimple(ActiveDevice, (int)((TrigElement.Parent.Controls.Find("UDFrictionMagnitude", false).FirstOrDefault() as NumericUpDown).Value)); + break; + case "Inertia": + DIManager.UpdateInertiaSimple(ActiveDevice, (int)((TrigElement.Parent.Controls.Find("UDInertiaMagnitude", false).FirstOrDefault() as NumericUpDown).Value)); + break; + case "Sine": + UpdatePeriodicSimple( + ActiveDevice, + FFBEffects.Sine, + (int)((TrigElement.Parent.Controls.Find("UDSineMagnitude", false).FirstOrDefault() as NumericUpDown).Value), + TrigElement + ); + break; + case "RampForce": + UpdatePeriodicSimple( + ActiveDevice, + FFBEffects.RampForce, + (int)((TrigElement.Parent.Controls.Find("UDRampForceMagnitude", false).FirstOrDefault() as NumericUpDown).Value), + TrigElement + ); + break; + case "SawtoothDown": + UpdatePeriodicSimple( + ActiveDevice, + FFBEffects.SawtoothDown, + (int)((TrigElement.Parent.Controls.Find("UDSawtoothDownMagnitude", false).FirstOrDefault() as NumericUpDown).Value), + TrigElement + ); + break; + case "SawtoothUp": + UpdatePeriodicSimple( + ActiveDevice, + FFBEffects.SawtoothUp, + (int)((TrigElement.Parent.Controls.Find("UDSawtoothUpMagnitude", false).FirstOrDefault() as NumericUpDown).Value), + TrigElement + ); + break; + case "Square": + UpdatePeriodicSimple( + ActiveDevice, + FFBEffects.Square, + (int)((TrigElement.Parent.Controls.Find("UDSquareMagnitude", false).FirstOrDefault() as NumericUpDown).Value), + TrigElement + ); + break; + case "Triangle": + UpdatePeriodicSimple( + ActiveDevice, + FFBEffects.Triangle, + (int)((TrigElement.Parent.Controls.Find("UDTriangleMagnitude", false).FirstOrDefault() as NumericUpDown).Value), + TrigElement + ); + break; + case "CustomForce": + uint samplePeriod = (uint)((TrigElement.Parent.Controls.Find("UDCustomForceSamplePeriod", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude0 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude0", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude1 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude1", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude2 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude2", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude3 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude3", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude4 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude4", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude5 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude5", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude6 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude6", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude7 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude7", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude8 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude8", false).FirstOrDefault() as NumericUpDown).Value); + int magnitude9 = (int)((TrigElement.Parent.Controls.Find("UDCustomForceMagnitude9", false).FirstOrDefault() as NumericUpDown).Value); + int[] forceData = new int[] { magnitude0, + magnitude1, + magnitude2, + magnitude3, + magnitude4, + magnitude5, + magnitude6, + magnitude7, + magnitude8, + magnitude9, + }; + UpdateCustomForceSimple( + ActiveDevice, + forceData, + samplePeriod, + TrigElement + ); + break; + + default: + break; + + } + //System.Diagnostics.Debug.WriteLine("Changed: " + TrigElement.Parent.Tag); + } - private void FFB_Label_Click(object sender, EventArgs e) { - Label TrigElement = (Label)sender; - TrackBar TB = TrigElement.Parent.Controls.Find("Slider" + TrigElement.Tag, false).FirstOrDefault() as TrackBar; - NumericUpDown UD = TrigElement.Parent.Controls.Find("UD" + TrigElement.Tag, false).FirstOrDefault() as NumericUpDown; - switch (TB.Tag) { - case string a when a.Contains("Saturation"): // Center Saturation to 5000 - TB.Value = 5000; - UD.Value = 5000; - break; - default: - TB.Value = 0; - UD.Value = 0; - break; - } - } + private void UpdatePeriodicSimple(DeviceInfo activeDevice, FFBEffects effectType, int magnitude, NumericUpDown trigElement) + { + try + { + if (activeDevice.guidInstance == null || trigElement == null) + { + Debug.WriteLine("UpdatePeriodicSimple: Invalid input parameters"); + return; + } + + // Get the effect checkbox + CheckBox effectCheckBox = trigElement.Parent.Controls.Find("CB" + effectType.ToString(), false).FirstOrDefault() as CheckBox; + + // First destroy any existing periodic effect + foreach (FFBEffects effects in new FFBEffects[] { FFBEffects.SawtoothUp, FFBEffects.SawtoothDown, FFBEffects.Square, + FFBEffects.Triangle, FFBEffects.RampForce, FFBEffects.Sine}) + { + DIManager.DestroyFFBEffect(activeDevice, effectType); + } + // Then create new effect + if (!DIManager.EnableFFBEffect(activeDevice, effectType)) + { + Debug.WriteLine($"UpdatePeriodicSimple: Failed to create effect {effectType}"); + if (effectCheckBox != null) + { + effectCheckBox.Checked = false; + } + return; + } + + // Update the effect + DIManager.UpdatePeriodicSimple( + activeDevice, + effectType, + magnitude + ); + } + catch (Exception ex) + { + Debug.WriteLine($"UpdatePeriodicSimple: Exception occurred: {ex.Message}"); + Debug.WriteLine(ex.StackTrace); + } + } - private void FFB_Slider_Scroll(object sender, EventArgs e) { - TrackBar TrigElement = (TrackBar)sender; - // Update UpDown - NumericUpDown UD = TrigElement.Parent.Controls.Find("UD" + TrigElement.Tag, false).FirstOrDefault() as NumericUpDown; - UD.Value = TrigElement.Value; - // FFB Effect has changed - } + private void UpdateCustomForceSimple(DeviceInfo activeDevice, int[] forceData, uint samplePeriod, NumericUpDown trigElement) + { + try + { + if (activeDevice.guidInstance == null || trigElement == null) + { + Debug.WriteLine("UpdatePeriodicSimple: Invalid input parameters"); + return; + } + + // Get the effect checkbox + CheckBox effectCheckBox = trigElement.Parent.Controls.Find("CBCustomForce", false).FirstOrDefault() as CheckBox; + + DIManager.DestroyFFBEffect(activeDevice, FFBEffects.CustomForce); + // Then create new effect + if (!DIManager.EnableFFBEffect(activeDevice, FFBEffects.CustomForce)) + { + Debug.WriteLine($"UpdatePeriodicSimple: Failed to create effect \"CustomForce\""); + if (effectCheckBox != null) + { + effectCheckBox.Checked = false; + } + return; + } + + + DIManager.UpdateCustomForceEffect(activeDevice, forceData, samplePeriod); + } + catch (Exception ex) + { + Debug.WriteLine($"UpdateCustomForceSimple error: {ex.Message}"); + } + } - private void FFB_UpDown_ValueChanged(object sender, EventArgs e) { - DeviceInfo ActiveDevice = DIManager.devices[ComboBoxDevices.SelectedIndex]; - NumericUpDown TrigElement = (NumericUpDown)sender; - // Update slider(TrackBar) - TrackBar TB = TrigElement.Parent.Controls.Find("Slider" + TrigElement.Tag, false).FirstOrDefault() as TrackBar; - TB.Value = (int)TrigElement.Value; - // Update Effect - switch (TrigElement.Parent.Tag) { - case "ConstantForce": - DIManager.UpdateConstantForceSimple(ActiveDevice, (int)((TrigElement.Parent.Controls.Find("UDConstantForceMagnitude", false).FirstOrDefault() as NumericUpDown).Value)); - break; - case "Spring": - DIManager.UpdateSpringSimple(ActiveDevice, - (uint)((TrigElement.Parent.Controls.Find("UDSpringDeadband" , false).FirstOrDefault() as NumericUpDown).Value), - (int) ((TrigElement.Parent.Controls.Find("UDSpringOffset" , false).FirstOrDefault() as NumericUpDown).Value), - (int) ((TrigElement.Parent.Controls.Find("UDSpringCoefficient", false).FirstOrDefault() as NumericUpDown).Value), - (int) ((TrigElement.Parent.Controls.Find("UDSpringCoefficient", false).FirstOrDefault() as NumericUpDown).Value), - (uint)((TrigElement.Parent.Controls.Find("UDSpringSaturation" , false).FirstOrDefault() as NumericUpDown).Value), - (uint)((TrigElement.Parent.Controls.Find("UDSpringSaturation" , false).FirstOrDefault() as NumericUpDown).Value) - ); - break; - case "Damper": - DIManager.UpdateDamperSimple(ActiveDevice, (int)((TrigElement.Parent.Controls.Find("UDDamperMagnitude", false).FirstOrDefault() as NumericUpDown).Value)); - break; - case "Friction": - DIManager.UpdateFrictionSimple(ActiveDevice, (int)((TrigElement.Parent.Controls.Find("UDFrictionMagnitude", false).FirstOrDefault() as NumericUpDown).Value)); - break; - case "Inertia": - DIManager.UpdateInertiaSimple(ActiveDevice, (int)((TrigElement.Parent.Controls.Find("UDInertiaMagnitude", false).FirstOrDefault() as NumericUpDown).Value)); - break; - default: - break; - - } - //System.Diagnostics.Debug.WriteLine("Changed: " + TrigElement.Parent.Tag); - } + ////////////////////////////////////////////////////////////// + // Device Events + ////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////// - // Device Events - ////////////////////////////////////////////////////////////// + public void DIDeviceAdded(DeviceInfo device) + { + string deviceName = $"{device.productName}:{device.guidInstance}"; + System.Diagnostics.Debug.WriteLine($"{deviceName} Added!"); + ButtonEnumerateDevices.PerformClick(); // Refresh device dropdown + } - public void DIDeviceAdded(DeviceInfo device) { - string deviceName = $"{device.productName}:{device.guidInstance}"; - System.Diagnostics.Debug.WriteLine($"{deviceName} Added!"); - ButtonEnumerateDevices.PerformClick(); // Refresh device dropdown - } - - public void DIDeviceRemoved(DeviceInfo device) { - string deviceName = $"{device.productName}:{device.guidInstance}"; - System.Diagnostics.Debug.WriteLine($"{deviceName} Removed!"); - ButtonEnumerateDevices.PerformClick(); // Refresh device dropdown - } + public void DIDeviceRemoved(DeviceInfo device) + { + string deviceName = $"{device.productName}:{device.guidInstance}"; + System.Diagnostics.Debug.WriteLine($"{deviceName} Removed!"); + ButtonEnumerateDevices.PerformClick(); // Refresh device dropdown + } - public void DeviceStateChanged(DeviceInfo device, FlatJoyState2 state) { - System.Diagnostics.Debug.WriteLine($"{device.productName} Event {state.lX}"); - if (device.guidInstance == DIManager.devices[ComboBoxDevices.SelectedIndex].guidInstance) { // If this device is selected show the state - LabelInput.Text = $"buttonsA: {Convert.ToString((long)state.buttonsA, 2).PadLeft(64, '0')}\nbuttonsB: {Convert.ToString((long)state.buttonsB, 2).PadLeft(64, '0')}\nlX: {state.lX}\nlY: {state.lY}\nlZ: {state.lZ}\nlU: {state.lU}\nlV: {state.lV}\nlRx: {state.lRx}\nlRy: {state.lRy}\nlRz: {state.lRz}\nlVX: {state.lVX}\nlVY: {state.lVY}\nlVZ: {state.lVZ}\nlVU: {state.lVU}\nlVV: {state.lVV}\nlVRx: {state.lVRx}\nlVRy: {state.lVRy}\nlVRz: {state.lVRz}\nlAX: {state.lAX}\nlAY: {state.lAY}\nlAZ: {state.lAZ}\nlAU: {state.lAU}\nlAV: {state.lAV}\nlARx: {state.lARx}\nlARy: {state.lARy}\nlARz: {state.lARz}\nlFX: {state.lFX}\nlFY: {state.lFY}\nlFZ: {state.lFZ}\nlFU: {state.lFU}\nlFV: {state.lFV}\nlFRx: {state.lFRx}\nlFRy: {state.lFRy}\nlFRz: {state.lFRz}\nrgdwPOV: {Convert.ToString((long)state.rgdwPOV, 2).PadLeft(16, '0')}\n"; - } - } + public void DeviceStateChanged(DeviceInfo device, FlatJoyState2 state) + { + System.Diagnostics.Debug.WriteLine($"{device.productName} Event {state.lX}"); + if (device.guidInstance == DIManager.devices[ComboBoxDevices.SelectedIndex].guidInstance) + { // If this device is selected show the state + LabelInput.Text = $"buttonsA: {Convert.ToString((long)state.buttonsA, 2).PadLeft(64, '0')}\nbuttonsB: {Convert.ToString((long)state.buttonsB, 2).PadLeft(64, '0')}\nlX: {state.lX}\nlY: {state.lY}\nlZ: {state.lZ}\nlU: {state.lU}\nlV: {state.lV}\nlRx: {state.lRx}\nlRy: {state.lRy}\nlRz: {state.lRz}\nlVX: {state.lVX}\nlVY: {state.lVY}\nlVZ: {state.lVZ}\nlVU: {state.lVU}\nlVV: {state.lVV}\nlVRx: {state.lVRx}\nlVRy: {state.lVRy}\nlVRz: {state.lVRz}\nlAX: {state.lAX}\nlAY: {state.lAY}\nlAZ: {state.lAZ}\nlAU: {state.lAU}\nlAV: {state.lAV}\nlARx: {state.lARx}\nlARy: {state.lARy}\nlARz: {state.lARz}\nlFX: {state.lFX}\nlFY: {state.lFY}\nlFZ: {state.lFZ}\nlFU: {state.lFU}\nlFV: {state.lFV}\nlFRx: {state.lFRx}\nlFRy: {state.lFRy}\nlFRz: {state.lFRz}\nrgdwPOV: {Convert.ToString((long)state.rgdwPOV, 2).PadLeft(16, '0')}\n"; + } + } - ////////////////////////////////////////////////////////////// - // Utility Functions - ////////////////////////////////////////////////////////////// - - private void UpdateReadoutsWithDeviceData(DeviceInfo Device) { - LabelDeviceInfo.Text = $"deviceType: {Device.deviceType}\nguidInstance: {Device.guidInstance}\nguidProduct: {Device.guidProduct}\ninstanceName: {Device.instanceName}\nFFBCapable: {Device.FFBCapable}"; - - if (DIManager.isDeviceActive(DIManager.devices[ComboBoxDevices.SelectedIndex])) { // Currently selected device is attached - (TabController.TabPages["TabInput"] as TabPage).Enabled = true; // Enable the Input Tab as we're connected - DIDEVCAPS DeviceCaps = DIManager.GetDeviceCapabilities(Device); - LabelCapabilities.Text = $"dwSize: {DeviceCaps.dwSize}\ndwFlags: {DeviceCaps.dwFlags}\ndwDevType: {Convert.ToString(DeviceCaps.dwDevType, 2).PadLeft(32, '0')}\ndwAxes: {DeviceCaps.dwAxes}\ndwButtons: {DeviceCaps.dwButtons}\ndwPOVs: {DeviceCaps.dwPOVs}\ndwFFSamplePeriod: {DeviceCaps.dwFFSamplePeriod}\ndwFFMinTimeResolution: {DeviceCaps.dwFFMinTimeResolution}\ndwFirmwareRevision: {DeviceCaps.dwFirmwareRevision}\ndwHardwareRevision: {DeviceCaps.dwHardwareRevision}\ndwFFDriverVersion: {DeviceCaps.dwFFDriverVersion}"; - - - if (DIManager.FFBCapable(Device)) { - (TabController.TabPages["TabFFB"] as TabPage).Enabled = true; // If Device is FFB capable, enable the tab - LabelFFBCapabilities.Text = string.Join("\n", DIManager.GetDeviceFFBCapabilities(Device)); - } else { - (TabController.TabPages["TabFFB"] as TabPage).Enabled = false; - LabelFFBCapabilities.Text = "FFBCapabilities: FFB Unsupported"; - } - - } else { // Device isn't attached, default readouts - LabelInput.Text = "Input: Attach First"; - LabelCapabilities.Text = "Capabilities: Attach First"; - LabelFFBCapabilities.Text = "FFBCapabilities: Attach First"; - (TabController.TabPages["TabInput"] as TabPage).Enabled = false; - (TabController.TabPages["TabFFB"] as TabPage).Enabled = false; - } - } + ////////////////////////////////////////////////////////////// + // Utility Functions + ////////////////////////////////////////////////////////////// + + private void UpdateReadoutsWithDeviceData(DeviceInfo Device) + { + LabelDeviceInfo.Text = $"deviceType: {Device.deviceType}\nguidInstance: {Device.guidInstance}\nguidProduct: {Device.guidProduct}\ninstanceName: {Device.instanceName}\nFFBCapable: {Device.FFBCapable}"; + + if (DIManager.isDeviceActive(DIManager.devices[ComboBoxDevices.SelectedIndex])) + { // Currently selected device is attached + (TabController.TabPages["TabInput"] as TabPage).Enabled = true; // Enable the Input Tab as we're connected + DIDEVCAPS DeviceCaps = DIManager.GetDeviceCapabilities(Device); + LabelCapabilities.Text = $"dwSize: {DeviceCaps.dwSize}\ndwFlags: {DeviceCaps.dwFlags}\ndwDevType: {Convert.ToString(DeviceCaps.dwDevType, 2).PadLeft(32, '0')}\ndwAxes: {DeviceCaps.dwAxes}\ndwButtons: {DeviceCaps.dwButtons}\ndwPOVs: {DeviceCaps.dwPOVs}\ndwFFSamplePeriod: {DeviceCaps.dwFFSamplePeriod}\ndwFFMinTimeResolution: {DeviceCaps.dwFFMinTimeResolution}\ndwFirmwareRevision: {DeviceCaps.dwFirmwareRevision}\ndwHardwareRevision: {DeviceCaps.dwHardwareRevision}\ndwFFDriverVersion: {DeviceCaps.dwFFDriverVersion}"; + + + if (DIManager.FFBCapable(Device)) + { + (TabController.TabPages["TabFFB"] as TabPage).Enabled = true; // If Device is FFB capable, enable the tab + LabelFFBCapabilities.Text = string.Join("\n", DIManager.GetDeviceFFBCapabilities(Device)); + } + else + { + (TabController.TabPages["TabFFB"] as TabPage).Enabled = false; + LabelFFBCapabilities.Text = "FFBCapabilities: FFB Unsupported"; + } + + } + else + { // Device isn't attached, default readouts + LabelInput.Text = "Input: Attach First"; + LabelCapabilities.Text = "Capabilities: Attach First"; + LabelFFBCapabilities.Text = "FFBCapabilities: Attach First"; + (TabController.TabPages["TabInput"] as TabPage).Enabled = false; + (TabController.TabPages["TabFFB"] as TabPage).Enabled = false; + } + } - ////////////////////////////////////////////////////////////// - // Debug Functions - ////////////////////////////////////////////////////////////// - private void ButtonDebug_Click(object sender, EventArgs e) { - //DirectInputManager.Native.DEBUG1(DIManager.devices[ComboBoxDevices.SelectedIndex].guidInstance, out string[] DEBUGDATA); - //LabelDebug.Text = string.Join("\n", DEBUGDATA); + ////////////////////////////////////////////////////////////// + // Debug Functions + ////////////////////////////////////////////////////////////// + private void ButtonDebug_Click(object sender, EventArgs e) + { + DirectInputManager.Native.DEBUG1(DIManager.devices[ComboBoxDevices.SelectedIndex].guidInstance, out string[] DEBUGDATA); + LabelDebug.Text = string.Join("\n", DEBUGDATA); + } } - } } diff --git a/DirectInputExplorer~/DirectInputExplorer/Form1.resx b/DirectInputExplorer~/DirectInputExplorer/Form1.resx index c43bf42..1bf0567 100644 --- a/DirectInputExplorer~/DirectInputExplorer/Form1.resx +++ b/DirectInputExplorer~/DirectInputExplorer/Form1.resx @@ -1,4 +1,64 @@ -īģŋ +īģŋ + + diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.deps.json b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.deps.json deleted file mode 100644 index b059cc1..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v5.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v5.0": { - "DirectInputExplorer/1.0.0": { - "runtime": { - "DirectInputExplorer.dll": {} - } - } - } - }, - "libraries": { - "DirectInputExplorer/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.dll deleted file mode 100644 index 797b767832061390fb89a296f59e08b74f921d46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 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 diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.exe b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.exe deleted file mode 100644 index e39c1fe499bc95933480f950fb7cb0e7cf2f4de4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125952 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%0Af3I;4(UFrPr&!s!K5 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 Muy_y&{uf;T1(<(6_y7O^ diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.dev.json b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.dev.json deleted file mode 100644 index 6c11489..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.dev.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "runtimeOptions": { - "additionalProbingPaths": [ - "C:\\Users\\Ducky\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\Ducky\\.nuget\\packages" - ] - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.json b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.json deleted file mode 100644 index dae617c..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net5.0", - "framework": { - "name": "Microsoft.WindowsDesktop.App", - "version": "5.0.0" - } - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.deps.json b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.deps.json deleted file mode 100644 index db09ea9..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v5.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v5.0": { - "DirectInputForceFeedbackDemoApp/1.0.0": { - "runtime": { - "DirectInputForceFeedbackDemoApp.dll": {} - } - } - } - }, - "libraries": { - "DirectInputForceFeedbackDemoApp/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.dll b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.dll deleted file mode 100644 index 3a7d9c17e228ca6542f074b7ed5f3386d68d5219..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 a^YbU_0W9+Pu^?r-{zUEjvsu5_1OEdeu;au4 diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.exe b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.exe deleted file mode 100644 index 44ec441b51cba7b05e0fd7abff4c18d0e36170b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128000 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

  • x6{*+l)P7En2?Uhi5!oBtpS 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 Ux=~*}gRwy|R5FAF|4Xj_1PgFPq5uE@ diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.runtimeconfig.dev.json b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.runtimeconfig.dev.json deleted file mode 100644 index 6c11489..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.runtimeconfig.dev.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "runtimeOptions": { - "additionalProbingPaths": [ - "C:\\Users\\Ducky\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\Ducky\\.nuget\\packages" - ] - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.runtimeconfig.json b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.runtimeconfig.json deleted file mode 100644 index dae617c..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.runtimeconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net5.0", - "framework": { - "name": "Microsoft.WindowsDesktop.App", - "version": "5.0.0" - } - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/ref/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/ref/DirectInputExplorer.dll deleted file mode 100644 index 672956d3da70419a0487802ab8e42551762b1e2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13824 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 I|A@eU14YtQDF6Tf diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/ref/DirectInputForceFeedbackDemoApp.dll b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/ref/DirectInputForceFeedbackDemoApp.dll deleted file mode 100644 index 36b539c26c1e8dbbd01ed8b05a4f14e0db6d397b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9216 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 diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.AssemblyInfo.cs b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.AssemblyInfo.cs deleted file mode 100644 index c95c71c..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.AssemblyInfo.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("DirectInputExplorer")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("DirectInputExplorer")] -[assembly: System.Reflection.AssemblyTitleAttribute("DirectInputExplorer")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] -[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.Form1.resources b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.Form1.resources deleted file mode 100644 index 6c05a9776bd7cbae976fdcec7e3a254e93018279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.GeneratedMSBuildEditorConfig.editorconfig b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 5f52e58..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,17 +0,0 @@ -is_global = true -build_property.ApplicationManifest = -build_property.StartupObject = -build_property.ApplicationDefaultFont = -build_property.ApplicationHighDpiMode = -build_property.ApplicationUseCompatibleTextRendering = -build_property.ApplicationVisualStyles = -build_property.TargetFramework = net5.0-windows -build_property.TargetPlatformMinVersion = 7.0 -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = DirectInputExplorer -build_property.ProjectDir = C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\ diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.dll deleted file mode 100644 index 797b767832061390fb89a296f59e08b74f921d46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 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 diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/apphost.exe b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/apphost.exe index e39c1fe499bc95933480f950fb7cb0e7cf2f4de4..3e0f17d87ab4ed32d47872279a365a847e7ba1c7 100644 GIT binary patch delta 352 zcmZWlyGjE=6g_u#Vip2|k4j?Us|x4_%wxON{D7cfBS;eC2gJgZOFBD4iYY84e;_Ds zCl-E03bEL1L{dc%Os8jpg5VwQ>zu>o-U<8Z@Hu@sSpp7g_^~lokx{eDC=2k=otN|V zKtaz~S|OPG)iHYtSqHee5*&0^7H%I!Nq3|&6%x=C#2oR*0$_KudDg5Gn-1h)xNKhk z=>qfqB;&Te*CH>Gyvdi-@m%A^a-@?KVD@5JOntCwnO-c{(l#)Ca9cpcGg=P#*&ukn?ErIwpB(plSvdAnygxTqNMY zz~D6f;}OOWO)T437#Z(PG+>|3@r*Hsr2(jDdcZSA5!DGm)&ihmDnQGgfQ$fwBgRY& zuYe}O_$t#IpE1s7Y?-e3oKcxEVY};d#_x>G1`KS|?O!r#Z{PQlQH3cez%jtl#l_Rl PJt6|ipp?Jt5hDu#e;Z48 diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/ref/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/ref/DirectInputExplorer.dll deleted file mode 100644 index aa73451eaac903fbf9ca7f3b9d02deb140664653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14848 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 // for std::clamp +#include // for UINT16_MAX #include "DirectInputForceFeedback.h" typedef std::string DeviceGUID; // Alias to make it clearer what maps below use as key @@ -21,427 +23,623 @@ std::vector DEBUGDATA; // Used for Debugging during development // Create the _DirectInput global HRESULT StartDirectInput() { - if (_DirectInput != NULL) { return S_OK; } // Already initialised + if (_DirectInput != NULL) { return S_OK; } // Already initialised - // Setup Device Change Detection (Add/Remove Device Events) - SetWindowsHookExW(WH_CALLWNDPROC, (HOOKPROC)&_WindowsHookCallback, GetModuleHandleW(NULL), GetCurrentThreadId()); + // Setup Device Change Detection (Add/Remove Device Events) + SetWindowsHookExW(WH_CALLWNDPROC, (HOOKPROC)&_WindowsHookCallback, GetModuleHandleW(NULL), GetCurrentThreadId()); - return DirectInput8Create( // Create DirectInput - GetModuleHandle(NULL), - DIRECTINPUT_VERSION, - IID_IDirectInput8, - (void**)&_DirectInput, // Place our DirectInput instance in _DirectInput - NULL - ); + return DirectInput8Create( // Create DirectInput + GetModuleHandle(NULL), + DIRECTINPUT_VERSION, + IID_IDirectInput8, + (void**)&_DirectInput, // Place our DirectInput instance in _DirectInput + NULL + ); } // Stop _DirectInput HRESULT StopDirectInput() { - HRESULT hr = E_FAIL; - if (_DirectInput == NULL) { return hr = S_OK; } // No DirectInput Instance + HRESULT hr = E_FAIL; + if (_DirectInput == NULL) { return hr = S_OK; } // No DirectInput Instance - for (const auto& [GUIDString, Device] : _ActiveDevices) { // For each device - // TODO: Stop Effects? - if (FAILED(hr = Device->Unacquire())) { return hr; } - } + for (const auto& [GUIDString, Device] : _ActiveDevices) { // For each device + // TODO: Stop Effects? + if (FAILED(hr = Device->Unacquire())) { return hr; } + } - _DeviceInstances.clear(); - _ActiveDevices.clear(); - _DeviceEnumeratedEffects.clear(); - _DeviceFFBAxes.clear(); - _DeviceFFBEffectConfig.clear(); - _DeviceFFBEffectControl.clear(); + _DeviceInstances.clear(); + _ActiveDevices.clear(); + _DeviceEnumeratedEffects.clear(); + _DeviceFFBAxes.clear(); + _DeviceFFBEffectConfig.clear(); + _DeviceFFBEffectControl.clear(); - _DirectInput = NULL; + _DirectInput = NULL; - return hr; + return hr; } // Return a vector of all attached devices DeviceInfo* EnumerateDevices(/*[out]*/ int& deviceCount) { - HRESULT hr = E_FAIL; - if (_DirectInput == NULL) { return NULL; } // If DI not ready, return nothing - _DeviceInstances.clear(); // Clear devices - - // First fetch all devices - hr = _DirectInput->EnumDevices( // Invoke device enumeration to the _EnumDevicesCallback callback - DI8DEVCLASS_GAMECTRL, // List devices of type GameController - _EnumDevicesCallback, // Callback executed for each device found - NULL, // Passed to callback as optional arg - DIEDFL_ATTACHEDONLY //| DIEDFL_FORCEFEEDBACK - ); - - // Next update FFB devices (Important this happens after as it modifies existing entries) - hr = _DirectInput->EnumDevices( // Invoke device enumeration to the _EnumDevicesCallback callback - DI8DEVCLASS_GAMECTRL, // List devices of type GameController - _EnumDevicesCallbackFFB, // Callback executed for each device found - NULL, // Passed to callback as optional arg - DIEDFL_ATTACHEDONLY | DIEDFL_FORCEFEEDBACK - ); - - if (_DeviceInstances.size() > 0) { - deviceCount = (int)_DeviceInstances.size(); - return &_DeviceInstances[0]; // Return 1st element, structure size & deviceCount are used to find next elements - } else { - deviceCount = 0; - } - return NULL; + HRESULT hr = E_FAIL; + if (_DirectInput == NULL) { return NULL; } // If DI not ready, return nothing + _DeviceInstances.clear(); // Clear devices + + // First fetch all devices + hr = _DirectInput->EnumDevices( // Invoke device enumeration to the _EnumDevicesCallback callback + DI8DEVCLASS_GAMECTRL, // List devices of type GameController + _EnumDevicesCallback, // Callback executed for each device found + NULL, // Passed to callback as optional arg + DIEDFL_ATTACHEDONLY //| DIEDFL_FORCEFEEDBACK + ); + + // Next update FFB devices (Important this happens after as it modifies existing entries) + hr = _DirectInput->EnumDevices( // Invoke device enumeration to the _EnumDevicesCallback callback + DI8DEVCLASS_GAMECTRL, // List devices of type GameController + _EnumDevicesCallbackFFB, // Callback executed for each device found + NULL, // Passed to callback as optional arg + DIEDFL_ATTACHEDONLY | DIEDFL_FORCEFEEDBACK + ); + + if (_DeviceInstances.size() > 0) { + deviceCount = (int)_DeviceInstances.size(); + return &_DeviceInstances[0]; // Return 1st element, structure size & deviceCount are used to find next elements + } + else { + deviceCount = 0; + } + return NULL; } // Create the DirectInput Device and Acquire ready for State retreval & FFB Effects (Requires Cooperation level Exclusive) // Pass the GUID (as a string) of the Device you'd like to attach to, GUID obtained from the Enumerated Devices HRESULT CreateDevice(LPCSTR guidInstance) { - HRESULT hr; - DestroyDeviceIfExists(guidInstance); // If device exists, clear it first + HRESULT hr; + DestroyDeviceIfExists(guidInstance); // If device exists, clear it first - LPDIRECTINPUTDEVICE8 DIDevice; - if (FAILED(hr = _DirectInput->CreateDevice(LPCSTRGUIDtoGUID(guidInstance), &DIDevice, NULL))) { return hr; } - if (FAILED(hr = DIDevice->SetDataFormat(&c_dfDIJoystick2))) { return hr; } - if (FAILED(hr = DIDevice->SetCooperativeLevel(FindMainWindow(GetCurrentProcessId()), DISCL_EXCLUSIVE | DISCL_BACKGROUND))) { return hr; } - if (FAILED(hr = DIDevice->Acquire())) { return hr; } + LPDIRECTINPUTDEVICE8 DIDevice; + if (FAILED(hr = _DirectInput->CreateDevice(LPCSTRGUIDtoGUID(guidInstance), &DIDevice, NULL))) { return hr; } + if (FAILED(hr = DIDevice->SetDataFormat(&c_dfDIJoystick2))) { return hr; } + if (FAILED(hr = DIDevice->SetCooperativeLevel(FindMainWindow(GetCurrentProcessId()), DISCL_EXCLUSIVE | DISCL_BACKGROUND))) { return hr; } + if (FAILED(hr = DIDevice->Acquire())) { return hr; } - std::string GUIDString((LPCSTR)guidInstance); // Convert the LPCSTR to a STL String for use as key in map (String as GUID has no operater<) - _ActiveDevices[GUIDString] = DIDevice; // Store Device in _ActiveDevices Map to be referenced later + std::string GUIDString((LPCSTR)guidInstance); // Convert the LPCSTR to a STL String for use as key in map (String as GUID has no operater<) + _ActiveDevices[GUIDString] = DIDevice; // Store Device in _ActiveDevices Map to be referenced later - return hr; + return hr; } // Remove the DirectInput Device, Unacquire and remove from ActiveDevices HRESULT DestroyDevice(LPCSTR guidInstance) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - StopAllFFBEffects(guidInstance); - if (SUCCEEDED(hr = _ActiveDevices[GUIDString]->Unacquire())) { - _ActiveDevices.erase(GUIDString); - } + StopAllFFBEffects(guidInstance); + if (SUCCEEDED(hr = _ActiveDevices[GUIDString]->Unacquire())) { + _ActiveDevices.erase(GUIDString); + } - return hr; + return hr; } // Fetch the Device State, give GUID of the Device (Must already be created by CreateDevice) and out FlatJoyState2 HRESULT GetDeviceState(LPCSTR guidInstance, /*[out]*/ FlatJoyState2& deviceState) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - DIJOYSTATE2 DeviceStateRaw; - hr = _ActiveDevices[GUIDString]->GetDeviceState(sizeof(DIJOYSTATE2), &DeviceStateRaw); // Fetch the device State - deviceState = FlattenDIJOYSTATE2(DeviceStateRaw); // Convert to a friendlier format (Nested arrays are more difficult to check for change) + DIJOYSTATE2 DeviceStateRaw = {}; + hr = _ActiveDevices[GUIDString]->GetDeviceState(sizeof(DIJOYSTATE2), &DeviceStateRaw); // Fetch the device State + deviceState = FlattenDIJOYSTATE2(DeviceStateRaw); // Convert to a friendlier format (Nested arrays are more difficult to check for change) - return hr; + return hr; } // Fetch the Device State, give GUID of the Device (Must already be created by CreateDevice) and out DIJOYSTATE2 HRESULT GetDeviceStateRaw(LPCSTR guidInstance, /*[out]*/ DIJOYSTATE2& deviceState) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - hr = _ActiveDevices[GUIDString]->GetDeviceState(sizeof(DIJOYSTATE2), &deviceState); // Fetch the device State + hr = _ActiveDevices[GUIDString]->GetDeviceState(sizeof(DIJOYSTATE2), &deviceState); // Fetch the device State - return hr; + return hr; } // Fetch the capabilities of the device, returns DIDEVCAPS see https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee416607(v=vs.85) HRESULT GetDeviceCapabilities(LPCSTR guidInstance, /*[out]*/ DIDEVCAPS& deviceCapabilitiesOut) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - DIDEVCAPS DeviceCapabilities; - DeviceCapabilities.dwSize = sizeof(DIDEVCAPS); - hr = _ActiveDevices[GUIDString]->GetCapabilities(&DeviceCapabilities); - deviceCapabilitiesOut = DeviceCapabilities; + DIDEVCAPS DeviceCapabilities; + DeviceCapabilities.dwSize = sizeof(DIDEVCAPS); + hr = _ActiveDevices[GUIDString]->GetCapabilities(&DeviceCapabilities); + deviceCapabilitiesOut = DeviceCapabilities; - return hr; + return hr; } // Generate SAFEARRAY of ActiveDevice GUIDs -HRESULT GetActiveDevices(/*[out]*/ SAFEARRAY** activeGUIDs){ - HRESULT hr = E_FAIL; +HRESULT GetActiveDevices(/*[out]*/ SAFEARRAY** activeGUIDs) { + HRESULT hr = E_FAIL; - std::vector SAData; - for (const auto& [GUIDString, Device] : _ActiveDevices) { - SAData.push_back( string_to_wstring(GUIDString) ); - } + std::vector SAData; + for (const auto& [GUIDString, Device] : _ActiveDevices) { + SAData.push_back(string_to_wstring(GUIDString)); + } - hr = BuildSafeArray(SAData, activeGUIDs); - return hr; + hr = BuildSafeArray(SAData, activeGUIDs); + return hr; } // Set the Autocenter property for a DI device, pass device GUID and bool to enable or disable HRESULT SetAutocenter(LPCSTR guidInstance, bool AutocenterState) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - DIPROPDWORD DIPropAutoCenter; + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + DIPROPDWORD DIPropAutoCenter = {}; - DIPropAutoCenter.diph.dwSize = sizeof(DIPropAutoCenter); - DIPropAutoCenter.diph.dwHeaderSize = sizeof(DIPROPHEADER); - DIPropAutoCenter.diph.dwObj = 0; - DIPropAutoCenter.diph.dwHow = DIPH_DEVICE; - DIPropAutoCenter.dwData = AutocenterState ? DIPROPAUTOCENTER_ON : DIPROPAUTOCENTER_OFF; + DIPropAutoCenter.diph.dwSize = sizeof(DIPropAutoCenter); + DIPropAutoCenter.diph.dwHeaderSize = sizeof(DIPROPHEADER); + DIPropAutoCenter.diph.dwObj = 0; + DIPropAutoCenter.diph.dwHow = DIPH_DEVICE; + DIPropAutoCenter.dwData = AutocenterState ? DIPROPAUTOCENTER_ON : DIPROPAUTOCENTER_OFF; - hr = _ActiveDevices[GUIDString]->SetProperty(DIPROP_AUTOCENTER, &DIPropAutoCenter.diph); + hr = _ActiveDevices[GUIDString]->SetProperty(DIPROP_AUTOCENTER, &DIPropAutoCenter.diph); - return hr; + return hr; } // Generate SAFEARRAY of possible FFB Effects for this Device HRESULT EnumerateFFBEffects(LPCSTR guidInstance, /*[out]*/ SAFEARRAY** FFBEffects) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - _DeviceEnumeratedEffects[GUIDString].clear(); // Clear effects for this device - hr = _ActiveDevices[GUIDString]->EnumEffects(&_EnumFFBEffectsCallback, &GUIDString, DIEFT_ALL); // Callback adds each effect to _DeviceEnumeratedEffects with key as device's GUID + _DeviceEnumeratedEffects[GUIDString].clear(); // Clear effects for this device + hr = _ActiveDevices[GUIDString]->EnumEffects(&_EnumFFBEffectsCallback, &GUIDString, DIEFT_ALL); // Callback adds each effect to _DeviceEnumeratedEffects with key as device's GUID - // Generate SafeArray of supported effects - std::vector SAData; // Store what will be in the SafeArray - for (const auto& Effect : _DeviceEnumeratedEffects[GUIDString]) { - SAData.push_back(Effect.tszName); // Add each effect name - } - hr = BuildSafeArray(SAData, FFBEffects); + // Generate SafeArray of supported effects + std::vector SAData; // Store what will be in the SafeArray + for (const auto& Effect : _DeviceEnumeratedEffects[GUIDString]) { + SAData.push_back(Effect.tszName); // Add each effect name + } + hr = BuildSafeArray(SAData, FFBEffects); - return hr; + return hr; } // Generate SAFEARRAY of possible FFB Effects for this Device HRESULT EnumerateFFBAxes(LPCSTR guidInstance, /*[out]*/ SAFEARRAY** FFBAxes) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - - _DeviceFFBAxes[GUIDString].clear(); // Clear Axes info for this device - hr = _ActiveDevices[GUIDString]->EnumObjects(&_EnumFFBAxisCallback, &GUIDString, DIEFT_ALL); // Callback adds each effect to _DeviceFFBAxes with key as device's GUID - - // Generate SafeArray of FFB Axes - std::vector SAData; // Store what will be in the SafeArray - SAData.push_back(L"FFB Axes: " + std::to_wstring(_DeviceFFBAxes.size())); - for (const auto& ObjectInst : _DeviceFFBAxes[GUIDString]) { - - wchar_t szGUID[64] = { 0 }; - (void)StringFromGUID2(ObjectInst.guidType, szGUID, 64); // Void cast ignores [[nodiscard]] warning - std::wstring guidType(szGUID); - - SAData.push_back(ObjectInst.tszName); // Add each effect name - SAData.push_back(L"dwSize: " + std::to_wstring(ObjectInst.dwSize)); - SAData.push_back(L"guidType: " + guidType); - SAData.push_back(L"dwOfs: " + std::to_wstring(ObjectInst.dwOfs)); - SAData.push_back(L"dwType: " + std::to_wstring(ObjectInst.dwType)); - SAData.push_back(L"dwFlags: " + std::to_wstring(ObjectInst.dwFlags)); - SAData.push_back(L"dwFFMaxForce: " + std::to_wstring(ObjectInst.dwFFMaxForce)); - SAData.push_back(L"dwFFForceResolution: " + std::to_wstring(ObjectInst.dwFFForceResolution)); - SAData.push_back(L"wCollectionNumber: " + std::to_wstring(ObjectInst.wCollectionNumber)); - SAData.push_back(L"wDesignatorIndex: " + std::to_wstring(ObjectInst.wDesignatorIndex)); - SAData.push_back(L"wUsagePage: " + std::to_wstring(ObjectInst.wUsagePage)); - SAData.push_back(L"wUsage: " + std::to_wstring(ObjectInst.wUsage)); - SAData.push_back(L"dwDimension: " + std::to_wstring(ObjectInst.dwDimension)); - SAData.push_back(L"wExponent: " + std::to_wstring(ObjectInst.wExponent)); - SAData.push_back(L"wReportId: " + std::to_wstring(ObjectInst.wReportId)); - } - hr = BuildSafeArray(SAData, FFBAxes); - - return hr; + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + + _DeviceFFBAxes[GUIDString].clear(); // Clear Axes info for this device + hr = _ActiveDevices[GUIDString]->EnumObjects(&_EnumFFBAxisCallback, &GUIDString, DIEFT_ALL); // Callback adds each effect to _DeviceFFBAxes with key as device's GUID + + // Generate SafeArray of FFB Axes + std::vector SAData; // Store what will be in the SafeArray + SAData.push_back(L"FFB Axes: " + std::to_wstring(_DeviceFFBAxes.size())); + for (const auto& ObjectInst : _DeviceFFBAxes[GUIDString]) { + + wchar_t szGUID[64] = { 0 }; + (void)StringFromGUID2(ObjectInst.guidType, szGUID, 64); // Void cast ignores [[nodiscard]] warning + std::wstring guidType(szGUID); + + SAData.push_back(ObjectInst.tszName); // Add each effect name + SAData.push_back(L"dwSize: " + std::to_wstring(ObjectInst.dwSize)); + SAData.push_back(L"guidType: " + guidType); + SAData.push_back(L"dwOfs: " + std::to_wstring(ObjectInst.dwOfs)); + SAData.push_back(L"dwType: " + std::to_wstring(ObjectInst.dwType)); + SAData.push_back(L"dwFlags: " + std::to_wstring(ObjectInst.dwFlags)); + SAData.push_back(L"dwFFMaxForce: " + std::to_wstring(ObjectInst.dwFFMaxForce)); + SAData.push_back(L"dwFFForceResolution: " + std::to_wstring(ObjectInst.dwFFForceResolution)); + SAData.push_back(L"wCollectionNumber: " + std::to_wstring(ObjectInst.wCollectionNumber)); + SAData.push_back(L"wDesignatorIndex: " + std::to_wstring(ObjectInst.wDesignatorIndex)); + SAData.push_back(L"wUsagePage: " + std::to_wstring(ObjectInst.wUsagePage)); + SAData.push_back(L"wUsage: " + std::to_wstring(ObjectInst.wUsage)); + SAData.push_back(L"dwDimension: " + std::to_wstring(ObjectInst.dwDimension)); + SAData.push_back(L"wExponent: " + std::to_wstring(ObjectInst.wExponent)); + SAData.push_back(L"wReportId: " + std::to_wstring(ObjectInst.wReportId)); + } + hr = BuildSafeArray(SAData, FFBAxes); + + return hr; } // Creates/Enables the Effect on the device HRESULT CreateFFBEffect(LPCSTR guidInstance, Effects::Type effectType) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - - if (_DeviceFFBEffectControl[GUIDString].contains(effectType)) { return E_ABORT; } // Effect Already Exists on Device - - //Enumerate FFBAxes if not already - if (!_DeviceFFBAxes.contains(GUIDString)) { - _DeviceFFBAxes[GUIDString].clear(); // Clear Axes info for this device - hr = _ActiveDevices[GUIDString]->EnumObjects(&_EnumFFBAxisCallback, &GUIDString, DIEFT_ALL); // Callback adds each effect to _DeviceFFBAxes with key as device's GUID - } - - - - int FFBAxesCount = (int)_DeviceFFBAxes[GUIDString].size(); - DWORD* FFBAxes = new DWORD[FFBAxesCount]; - LONG* FFBDirections = new LONG[FFBAxesCount]; - - for (int idx = 0; idx < FFBAxesCount; idx++) { - FFBAxes[idx] = AxisTypeToDIJOFS(_DeviceFFBAxes[GUIDString][idx].guidType); // FFB Axis GUID to DirectInput representation - FFBDirections[idx] = 0; // Init this axis - } - - // Create the Effect - - DICONSTANTFORCE* constantForce = NULL; - DICONDITION* conditions = NULL; - DIEFFECT effect = {}; // https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee416616(v=vs.85) - effect.dwSize = sizeof(DIEFFECT); - effect.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS; - effect.dwDuration = INFINITE; - effect.dwSamplePeriod = 0; - effect.dwGain = DI_FFNOMINALMAX; - effect.dwTriggerButton = DIEB_NOTRIGGER; // Start effect without requiring a button press - effect.dwTriggerRepeatInterval = 0; - effect.cAxes = FFBAxesCount; // How many Axes will the effect be on (cannot be changed once it has been set) - effect.rgdwAxes = FFBAxes; // Identifies the axes to which the effects will be applied (cannot be changed once it has been set) - effect.rglDirection = FFBDirections; // Distribution of effect strength between Axes? - effect.lpEnvelope = 0; - effect.dwStartDelay = 0; - - - - switch (effectType) { - case Effects::Type::ConstantForce: - constantForce = new DICONSTANTFORCE(); - constantForce->lMagnitude = 0; - effect.cbTypeSpecificParams = sizeof(DICONSTANTFORCE); - effect.lpvTypeSpecificParams = constantForce; - break; - - case Effects::Type::Spring: - conditions = new DICONDITION[FFBAxesCount]; - ZeroMemory(conditions, sizeof(DICONDITION) * FFBAxesCount); - effect.cbTypeSpecificParams = sizeof(DICONDITION) * FFBAxesCount; - effect.lpvTypeSpecificParams = conditions; - break; - - case Effects::Type::Damper: - conditions = new DICONDITION[FFBAxesCount]; - ZeroMemory(conditions, sizeof(DICONDITION) * FFBAxesCount); - effect.cbTypeSpecificParams = sizeof(DICONDITION) * FFBAxesCount; - effect.lpvTypeSpecificParams = conditions; - break; - - case Effects::Type::Friction: - conditions = new DICONDITION[FFBAxesCount]; - ZeroMemory(conditions, sizeof(DICONDITION) * FFBAxesCount); - effect.cbTypeSpecificParams = sizeof(DICONDITION) * FFBAxesCount; - effect.lpvTypeSpecificParams = conditions; - break; - - case Effects::Type::Inertia: - conditions = new DICONDITION[FFBAxesCount]; - ZeroMemory(conditions, sizeof(DICONDITION) * FFBAxesCount); - effect.cbTypeSpecificParams = sizeof(DICONDITION) * FFBAxesCount; - effect.lpvTypeSpecificParams = conditions; - break; - - default: - return E_FAIL; // Unsupported Effect - } - - LPDIRECTINPUTEFFECT effectControl; - if (FAILED(hr = _ActiveDevices[GUIDString]->CreateEffect(EffectTypeToGUID(effectType), &effect, &effectControl, nullptr))) { return hr; } - if (FAILED(hr = effectControl->Start(1, 0))) { return hr; } - _DeviceFFBEffectConfig[GUIDString][effectType] = effect; - _DeviceFFBEffectControl[GUIDString][effectType] = effectControl; - - return hr; + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + + if (_DeviceFFBEffectControl[GUIDString].contains(effectType)) { return E_ABORT; } // Effect Already Exists on Device + + //Enumerate FFBAxes if not already + if (!_DeviceFFBAxes.contains(GUIDString)) { + _DeviceFFBAxes[GUIDString].clear(); // Clear Axes info for this device + hr = _ActiveDevices[GUIDString]->EnumObjects(&_EnumFFBAxisCallback, &GUIDString, DIEFT_ALL); // Callback adds each effect to _DeviceFFBAxes with key as device's GUID + } + + + + int FFBAxesCount = (int)_DeviceFFBAxes[GUIDString].size(); + DWORD* FFBAxes = new DWORD[FFBAxesCount]; + LONG* FFBDirections = new LONG[FFBAxesCount]; + + for (int idx = 0; idx < FFBAxesCount; idx++) { + FFBAxes[idx] = AxisTypeToDIJOFS(_DeviceFFBAxes[GUIDString][idx].guidType); // FFB Axis GUID to DirectInput representation + FFBDirections[idx] = 0; // Init this axis + } + + // Create the Effect + + DICONSTANTFORCE* constantForce = NULL; + DICONDITION* conditions = NULL; + DIRAMPFORCE* rampForce = new DIRAMPFORCE(); + DIPERIODIC* periodicForce = new DIPERIODIC(); + DICUSTOMFORCE* customForce = new DICUSTOMFORCE(); + LPDIRECTINPUTEFFECT effectControl; + DIEFFECT effect = {}; // https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee416616(v=vs.85) + effect.dwSize = sizeof(DIEFFECT); + effect.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS; + effect.dwDuration = INFINITE; + effect.dwSamplePeriod = 0; + effect.dwGain = DI_FFNOMINALMAX; + effect.dwTriggerButton = DIEB_NOTRIGGER; // Start effect without requiring a button press + effect.dwTriggerRepeatInterval = 0; + effect.cAxes = FFBAxesCount; // How many Axes will the effect be on (cannot be changed once it has been set) + effect.rgdwAxes = FFBAxes; // Identifies the axes to which the effects will be applied (cannot be changed once it has been set) + effect.rglDirection = FFBDirections; // Distribution of effect strength between Axes? + effect.lpEnvelope = 0; + effect.dwStartDelay = 0; + + + + switch (effectType) { + case Effects::Type::ConstantForce: + constantForce = new DICONSTANTFORCE(); + constantForce->lMagnitude = 0; + effect.cbTypeSpecificParams = sizeof(DICONSTANTFORCE); + effect.lpvTypeSpecificParams = constantForce; + break; + + case Effects::Type::Spring: + conditions = new DICONDITION[FFBAxesCount]; + ZeroMemory(conditions, sizeof(DICONDITION) * FFBAxesCount); + effect.cbTypeSpecificParams = sizeof(DICONDITION) * FFBAxesCount; + effect.lpvTypeSpecificParams = conditions; + break; + + case Effects::Type::Damper: + conditions = new DICONDITION[FFBAxesCount]; + ZeroMemory(conditions, sizeof(DICONDITION) * FFBAxesCount); + effect.cbTypeSpecificParams = sizeof(DICONDITION) * FFBAxesCount; + effect.lpvTypeSpecificParams = conditions; + break; + + case Effects::Type::Friction: + conditions = new DICONDITION[FFBAxesCount]; + ZeroMemory(conditions, sizeof(DICONDITION) * FFBAxesCount); + effect.cbTypeSpecificParams = sizeof(DICONDITION) * FFBAxesCount; + effect.lpvTypeSpecificParams = conditions; + break; + + case Effects::Type::Inertia: + conditions = new DICONDITION[FFBAxesCount]; + ZeroMemory(conditions, sizeof(DICONDITION) * FFBAxesCount); + effect.cbTypeSpecificParams = sizeof(DICONDITION) * FFBAxesCount; + effect.lpvTypeSpecificParams = conditions; + break; + case Effects::Type::Sine: + case Effects::Type::Square: + case Effects::Type::Triangle: + case Effects::Type::SawtoothUp: + case Effects::Type::SawtoothDown: + ZeroMemory(periodicForce, sizeof(DIPERIODIC)); + periodicForce->dwMagnitude = 0; + periodicForce->lOffset = 0; + periodicForce->dwPhase = 0; + periodicForce->dwPeriod = 30000; + effect.cbTypeSpecificParams = sizeof(DIPERIODIC); + effect.lpvTypeSpecificParams = periodicForce; + break; + case Effects::Type::RampForce: + ZeroMemory(rampForce, sizeof(DIRAMPFORCE)); + rampForce->lStart = 0; + rampForce->lEnd = 0; + effect.cbTypeSpecificParams = sizeof(DIRAMPFORCE); + effect.lpvTypeSpecificParams = rampForce; + break; + case Effects::Type::CustomForce: { + FILE* debugFile; + fopen_s(&debugFile, "ffb_custom_debug.txt", "a"); + fprintf(debugFile, "\n=== Custom Force Creation Debug ===\n"); + fprintf(debugFile, "Time: %s\n", __TIMESTAMP__); + + // Get device capabilities + DIDEVCAPS deviceCaps = {}; + deviceCaps.dwSize = sizeof(DIDEVCAPS); + if (FAILED(_ActiveDevices[GUIDString]->GetCapabilities(&deviceCaps))) { + fprintf(debugFile, "Failed to get device capabilities\n"); + fclose(debugFile); + return E_FAIL; + } + + fprintf(debugFile, "Device Capabilities:\n"); + fprintf(debugFile, "- FFSamplePeriod: %lu microseconds\n", deviceCaps.dwFFSamplePeriod); + fprintf(debugFile, "- FFMinTimeResolution: %lu\n", deviceCaps.dwFFMinTimeResolution); + + // Initialize custom force with proper parameters + ZeroMemory(customForce, sizeof(DICUSTOMFORCE)); + customForce->cChannels = FFBAxesCount; // Match actual axes count + customForce->dwSamplePeriod = deviceCaps.dwFFSamplePeriod; + customForce->cSamples = 2; // At least two samples for interpolation + + // Allocate and initialize force data array + LONG* forceData = new LONG[customForce->cSamples]; + forceData[0] = 0; // Initial force + forceData[1] = 5000; // Final force + + customForce->rglForceData = forceData; + + // Initialize effect structure + ZeroMemory(&effect, sizeof(DIEFFECT)); + effect.dwSize = sizeof(DIEFFECT); + effect.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS; + effect.dwDuration = INFINITE; + effect.dwSamplePeriod = customForce->dwSamplePeriod; + effect.dwGain = DI_FFNOMINALMAX; + effect.dwTriggerButton = DIEB_NOTRIGGER; + effect.dwTriggerRepeatInterval = 0; + effect.cAxes = FFBAxesCount; + effect.rgdwAxes = FFBAxes; + effect.rglDirection = FFBDirections; + effect.lpEnvelope = NULL; + effect.cbTypeSpecificParams = sizeof(DICUSTOMFORCE); + effect.lpvTypeSpecificParams = customForce; + + fprintf(debugFile, "\nCustom Force Parameters:\n"); + fprintf(debugFile, "- Channels: %lu\n", customForce->cChannels); + fprintf(debugFile, "- Sample Period: %lu microseconds\n", customForce->dwSamplePeriod); + fprintf(debugFile, "- Samples Count: %lu\n", customForce->cSamples); + fprintf(debugFile, "- Force Data[0]: %ld\n", customForce->rglForceData[0]); + fprintf(debugFile, "- Force Data[1]: %ld\n", customForce->rglForceData[1]); + + fprintf(debugFile, "\nEffect Configuration:\n"); + fprintf(debugFile, "- Effect Size: %lu\n", effect.dwSize); + fprintf(debugFile, "- Type Specific Params Size: %lu\n", effect.cbTypeSpecificParams); + fprintf(debugFile, "- Sample Period: %lu microseconds\n", effect.dwSamplePeriod); + fprintf(debugFile, "- Duration: %lu\n", effect.dwDuration); + fprintf(debugFile, "- Gain: %lu\n", effect.dwGain); + fprintf(debugFile, "- Flags: 0x%08X\n", effect.dwFlags); + + HRESULT createResult = _ActiveDevices[GUIDString]->CreateEffect( + EffectTypeToGUID(effectType), + &effect, + &effectControl, + nullptr + ); + + fprintf(debugFile, "\nEffect Creation Result: 0x%08X\n", createResult); + if (FAILED(createResult)) { + fprintf(debugFile, "Failed to create custom force effect\n"); + } + + fclose(debugFile); + return createResult; + break; + } + + default: + return E_FAIL; // Unsupported Effect + } + + + if (FAILED(hr = _ActiveDevices[GUIDString]->CreateEffect(EffectTypeToGUID(effectType), &effect, &effectControl, nullptr))) { return hr; } + if (FAILED(hr = effectControl->Start(1, 0))) { return hr; } + _DeviceFFBEffectConfig[GUIDString][effectType] = effect; + _DeviceFFBEffectControl[GUIDString][effectType] = effectControl; + + return hr; } HRESULT DestroyFFBEffect(LPCSTR guidInstance, Effects::Type effectType) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + if (!guidInstance) return E_INVALIDARG; + + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); - // Destroy Effect - if (!_DeviceFFBEffectControl[GUIDString].contains(effectType)) { return S_OK; } // Effect doesn't exist + // Validate device exists + if (!_ActiveDevices.contains(GUIDString)) { + return E_HANDLE; + } - hr = _DeviceFFBEffectControl[GUIDString][effectType]->Stop(); // Stop Effect - _DeviceFFBEffectControl[GUIDString].erase(effectType); // Remove Effect Control - _DeviceFFBEffectConfig[GUIDString].erase(effectType); // Remove Effect Config + // Validate effect control exists + if (!_DeviceFFBEffectControl[GUIDString].contains(effectType)) { + return S_OK; // Already destroyed + } - return hr; + // Get effect pointer + LPDIRECTINPUTEFFECT diEffect = _DeviceFFBEffectControl[GUIDString][effectType]; + if (!diEffect) { + // Cleanup invalid state + _DeviceFFBEffectControl[GUIDString].erase(effectType); + _DeviceFFBEffectConfig[GUIDString].erase(effectType); + return E_POINTER; + } + + try { + // Stop effect first + hr = diEffect->Stop(); + if (FAILED(hr)) { + // Log error but continue cleanup + char buffer[256]; + sprintf_s(buffer, "Failed to stop effect: 0x%08X\n", hr); + OutputDebugStringA(buffer); + } + + // Unload effect resources + hr = diEffect->Unload(); + if (FAILED(hr)) { + char buffer[256]; + sprintf_s(buffer, "Failed to unload effect: 0x%08X\n", hr); + OutputDebugStringA(buffer); + } + + // Release the effect interface + ULONG refCount = diEffect->Release(); + if (refCount > 0) { + char buffer[256]; + sprintf_s(buffer, "Warning: Effect released but refCount = %lu\n", refCount); + OutputDebugStringA(buffer); + } + + // Clean up maps + _DeviceFFBEffectControl[GUIDString].erase(effectType); + _DeviceFFBEffectConfig[GUIDString].erase(effectType); + + return S_OK; + } + catch (...) { + // Ensure maps are cleaned even on error + _DeviceFFBEffectControl[GUIDString].erase(effectType); + _DeviceFFBEffectConfig[GUIDString].erase(effectType); + return E_FAIL; + } } HRESULT UpdateFFBEffect(LPCSTR guidInstance, Effects::Type effectType, DICONDITION* conditions) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - if (!_DeviceFFBEffectControl[GUIDString].contains(effectType)) { return E_ABORT; } // Effect doesn't exist - - for (int idx = 0; idx < _DeviceFFBEffectConfig[GUIDString][effectType].cAxes; idx++) { // For each Axis in this effect - switch (effectType) { - case Effects::Type::ConstantForce: - DICONSTANTFORCE CF = *reinterpret_cast(_DeviceFFBEffectConfig[GUIDString][Effects::Type::ConstantForce].lpvTypeSpecificParams); - CF.lMagnitude = conditions[idx].lPositiveCoefficient; - _DeviceFFBEffectConfig[GUIDString][Effects::Type::ConstantForce].lpvTypeSpecificParams = &CF; - break; - default: - ((DICONDITION*)_DeviceFFBEffectConfig[GUIDString][effectType].lpvTypeSpecificParams)[idx].lOffset = conditions->lOffset; - ((DICONDITION*)_DeviceFFBEffectConfig[GUIDString][effectType].lpvTypeSpecificParams)[idx].lPositiveCoefficient = conditions[idx].lPositiveCoefficient; - ((DICONDITION*)_DeviceFFBEffectConfig[GUIDString][effectType].lpvTypeSpecificParams)[idx].lNegativeCoefficient = conditions[idx].lNegativeCoefficient; - ((DICONDITION*)_DeviceFFBEffectConfig[GUIDString][effectType].lpvTypeSpecificParams)[idx].dwPositiveSaturation = conditions[idx].dwPositiveSaturation; - ((DICONDITION*)_DeviceFFBEffectConfig[GUIDString][effectType].lpvTypeSpecificParams)[idx].dwNegativeSaturation = conditions[idx].dwNegativeSaturation; - ((DICONDITION*)_DeviceFFBEffectConfig[GUIDString][effectType].lpvTypeSpecificParams)[idx].lDeadBand = conditions[idx].lDeadBand; - break; - } - } - hr = _DeviceFFBEffectControl[GUIDString][effectType]->SetParameters(&_DeviceFFBEffectConfig[GUIDString][effectType], DIEP_TYPESPECIFICPARAMS); - return hr; + if (!guidInstance || !conditions) return E_INVALIDARG; + + HRESULT hr = E_FAIL; + std::string GUIDString(guidInstance); + + // Validate device and effect existence + if (!_ActiveDevices.contains(GUIDString)) return E_FAIL; + if (!_DeviceFFBEffectControl[GUIDString].contains(effectType)) return E_ABORT; + + // Get effect configuration + auto& effectConfig = _DeviceFFBEffectConfig[GUIDString][effectType]; + + for (DWORD idx = 0; idx < effectConfig.cAxes; idx++) { + switch (effectType) { + case Effects::Type::ConstantForce: { + auto* cf = static_cast(effectConfig.lpvTypeSpecificParams); + if (!cf) return E_POINTER; + cf->lMagnitude = conditions[idx].lPositiveCoefficient; + break; + } + + case Effects::Type::Sine: + case Effects::Type::Square: + case Effects::Type::Triangle: + case Effects::Type::SawtoothUp: + case Effects::Type::SawtoothDown: { + auto* pe = static_cast(effectConfig.lpvTypeSpecificParams); + if (!pe) return E_POINTER; + pe->dwMagnitude = conditions[idx].lPositiveCoefficient; + pe->lOffset = conditions[idx].lOffset; + // Maintain existing phase and period values + break; + } + case Effects::Type::RampForce: { + auto* rf = static_cast(effectConfig.lpvTypeSpecificParams); + if (!rf) return E_POINTER; + rf->lStart = conditions[idx].lPositiveCoefficient; + rf->lEnd = conditions[idx].lNegativeCoefficient; + break; + } + default: { + auto* cond = static_cast(effectConfig.lpvTypeSpecificParams); + if (!cond) return E_POINTER; + cond[idx].lOffset = conditions[idx].lOffset; + cond[idx].lPositiveCoefficient = conditions[idx].lPositiveCoefficient; + cond[idx].lNegativeCoefficient = conditions[idx].lNegativeCoefficient; + cond[idx].dwPositiveSaturation = conditions[idx].dwPositiveSaturation; + cond[idx].dwNegativeSaturation = conditions[idx].dwNegativeSaturation; + cond[idx].lDeadBand = conditions[idx].lDeadBand; + break; + } + } + } + + // Update effect parameters + return _DeviceFFBEffectControl[GUIDString][effectType]->SetParameters( + &effectConfig, + DIEP_TYPESPECIFICPARAMS + ); } HRESULT StopAllFFBEffects(LPCSTR guidInstance) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - hr = S_OK; // Incase there are no active effects, act like we stopped them all - - //for (auto& [effectType, effectControl] : _DeviceFFBEffectControl[GUIDString]) { // For each effect - // if (FAILED(hr = effectControl->Stop())) { return hr; } // Stop Effect - // //_DeviceFFBEffectControl[GUIDString].erase(effectType); // Remove Effect Control // effectType isn't behaving like Effects::Type, "An unhandled exception of type 'System.AccessViolationException' occurred in DirectInputExplorer.dll" "Attempted to read or write protected memory. This is often an indication that other memory is corrupt." - // //_DeviceFFBEffectConfig[GUIDString].erase(effectType); // Remove Effect Config - //} - - hr = DestroyFFBEffect(guidInstance, Effects::Type::ConstantForce); - hr = DestroyFFBEffect(guidInstance, Effects::Type::RampForce); - hr = DestroyFFBEffect(guidInstance, Effects::Type::Square); - hr = DestroyFFBEffect(guidInstance, Effects::Type::Sine); - hr = DestroyFFBEffect(guidInstance, Effects::Type::Triangle); - hr = DestroyFFBEffect(guidInstance, Effects::Type::SawtoothUp); - hr = DestroyFFBEffect(guidInstance, Effects::Type::SawtoothDown); - hr = DestroyFFBEffect(guidInstance, Effects::Type::Spring); - hr = DestroyFFBEffect(guidInstance, Effects::Type::Damper); - hr = DestroyFFBEffect(guidInstance, Effects::Type::Inertia); - hr = DestroyFFBEffect(guidInstance, Effects::Type::Friction); - hr = DestroyFFBEffect(guidInstance, Effects::Type::CustomForce); - - return hr; + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + hr = S_OK; // Incase there are no active effects, act like we stopped them all + + //for (auto& [effectType, effectControl] : _DeviceFFBEffectControl[GUIDString]) { // For each effect + // if (FAILED(hr = effectControl->Stop())) { return hr; } // Stop Effect + // //_DeviceFFBEffectControl[GUIDString].erase(effectType); // Remove Effect Control // effectType isn't behaving like Effects::Type, "An unhandled exception of type 'System.AccessViolationException' occurred in DirectInputExplorer.dll" "Attempted to read or write protected memory. This is often an indication that other memory is corrupt." + // //_DeviceFFBEffectConfig[GUIDString].erase(effectType); // Remove Effect Config + //} + + hr = DestroyFFBEffect(guidInstance, Effects::Type::ConstantForce); + hr = DestroyFFBEffect(guidInstance, Effects::Type::RampForce); + hr = DestroyFFBEffect(guidInstance, Effects::Type::Square); + hr = DestroyFFBEffect(guidInstance, Effects::Type::Sine); + hr = DestroyFFBEffect(guidInstance, Effects::Type::Triangle); + hr = DestroyFFBEffect(guidInstance, Effects::Type::SawtoothUp); + hr = DestroyFFBEffect(guidInstance, Effects::Type::SawtoothDown); + hr = DestroyFFBEffect(guidInstance, Effects::Type::Spring); + hr = DestroyFFBEffect(guidInstance, Effects::Type::Damper); + hr = DestroyFFBEffect(guidInstance, Effects::Type::Inertia); + hr = DestroyFFBEffect(guidInstance, Effects::Type::Friction); + hr = DestroyFFBEffect(guidInstance, Effects::Type::CustomForce); + + return hr; } void SetDeviceChangeCallback(DeviceChangeCallback CB) { - _DeviceChangeCallback = CB; + _DeviceChangeCallback = CB; } // Generate SAFEARRAY of DEBUG data HRESULT DEBUG1(LPCSTR guidInstance, /*[out]*/ SAFEARRAY** DebugData) { - HRESULT hr = E_FAIL; - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail + HRESULT hr = E_FAIL; + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return hr; // Device not attached, fail - //std::vector SAData; + //std::vector SAData; - //SAData.push_back(L"Modifying Constant Force!"); - //DICONSTANTFORCE CF = { 1000 }; - //_DeviceFFBEffectConfig[GUIDString][Effects::ConstantForce].lpvTypeSpecificParams = &CF; - //_DeviceFFBEffectControl[GUIDString][Effects::ConstantForce]->SetParameters(&_DeviceFFBEffectConfig[GUIDString][Effects::ConstantForce], DIEP_TYPESPECIFICPARAMS); - //hr = BuildSafeArray(SAData, DebugData); + //SAData.push_back(L"Modifying Constant Force!"); + //DICONSTANTFORCE CF = { 1000 }; + //_DeviceFFBEffectConfig[GUIDString][Effects::ConstantForce].lpvTypeSpecificParams = &CF; + //_DeviceFFBEffectControl[GUIDString][Effects::ConstantForce]->SetParameters(&_DeviceFFBEffectConfig[GUIDString][Effects::ConstantForce], DIEP_TYPESPECIFICPARAMS); + //hr = BuildSafeArray(SAData, DebugData); - // Testing Fanatec Fix - LPDIRECTINPUTDEVICE8 DIDevice = nullptr; - if (FAILED(hr = _DirectInput->CreateDevice(LPCSTRGUIDtoGUID(guidInstance), &DIDevice, NULL))) { return true; } // L"CreateDevice failed! 0x%08x", hr + // Testing Fanatec Fix + LPDIRECTINPUTDEVICE8 DIDevice = nullptr; + if (FAILED(hr = _DirectInput->CreateDevice(LPCSTRGUIDtoGUID(guidInstance), &DIDevice, NULL))) { + return hr; + } // L"CreateDevice failed! 0x%08x", hr - DIPROPGUIDANDPATH GUIDPath; - GUIDPath.diph.dwSize = sizeof(DIPROPGUIDANDPATH); - GUIDPath.diph.dwHeaderSize = sizeof(DIPROPHEADER); - GUIDPath.diph.dwObj = 0; - GUIDPath.diph.dwHow = DIPH_DEVICE; - if (FAILED(hr = DIDevice->GetProperty(DIPROP_GUIDANDPATH, &GUIDPath.diph))) { DIDevice->Release(); return true; } // L"GetProperty failed! Failed to get symbolic path for device 0x%08x", hr - DIDevice->Release(); + DIPROPGUIDANDPATH GUIDPath = {}; + GUIDPath.diph.dwSize = sizeof(DIPROPGUIDANDPATH); + GUIDPath.diph.dwHeaderSize = sizeof(DIPROPHEADER); + GUIDPath.diph.dwObj = 0; + GUIDPath.diph.dwHow = static_cast(DIPH_DEVICE); // Explicit cast to DWORD + if (FAILED(hr = DIDevice->GetProperty(DIPROP_GUIDANDPATH, &GUIDPath.diph))) { + DIDevice->Release(); + return hr; + } // L"GetProperty failed! Failed to get symbolic path for device 0x%08x", hr + DIDevice->Release(); - //if (wcsstr(GUIDPath.wszPath, L"&col01") != 0) { // This is our primary device (HID Path contains "&col01") - // return false; - //} - //else { - // return true; // This is a duplicate device - //} - DEBUGDATA.push_back(GUIDPath.wszPath); + //if (wcsstr(GUIDPath.wszPath, L"&col01") != 0) { // This is our primary device (HID Path contains "&col01") + // return false; + //} + //else { + // return true; // This is a duplicate device + //} + DEBUGDATA.push_back(GUIDPath.wszPath); - hr = BuildSafeArray(DEBUGDATA, DebugData); - return hr; + hr = BuildSafeArray(DEBUGDATA, DebugData); + return hr; } @@ -451,84 +649,84 @@ HRESULT DEBUG1(LPCSTR guidInstance, /*[out]*/ SAFEARRAY** DebugData) { // Callback for each device enumerated, each device is added to the _DeviceInstances vector BOOL CALLBACK _EnumDevicesCallback(const DIDEVICEINSTANCE* DIDI, void* pContext) { - DeviceInfo di = { 0 }; // Store DeviceInfo - di.deviceType = DIDI->dwDevType; - std::string GIStr = (GUID_to_string( DIDI->guidInstance ).c_str()); - std::string GPStr = (GUID_to_string( DIDI->guidProduct ).c_str()); - std::string INStr = (wstring_to_string(DIDI->tszInstanceName).c_str()); - std::string PNStr = (wstring_to_string(DIDI->tszProductName ).c_str()); - di.guidInstance = new char[GIStr.length()+1]; - di.guidProduct = new char[GPStr.length()+1]; - di.instanceName = new char[INStr.length()+1]; - di.productName = new char[PNStr.length()+1]; - strcpy_s( di.guidInstance, GIStr.length()+1, GIStr.c_str() ); - strcpy_s( di.guidProduct, GPStr.length()+1, GPStr.c_str() ); - strcpy_s( di.instanceName, INStr.length()+1, INStr.c_str() ); - strcpy_s( di.productName, PNStr.length()+1, PNStr.c_str() ); - di.FFBCapable = false; // Default all devices to false, FFB devices are updated later - - // Fanatec Fix (Fanatec devices enumerate as 2) - if (LOWORD(DIDI->guidProduct.Data1) == 0x0EB7) // Fanatec manufacturer ID - if (IsDuplicateHID(DIDI)) { return DIENUM_CONTINUE; } // Skip if duplicate - - _DeviceInstances.push_back(di); - return DIENUM_CONTINUE; + DeviceInfo di = { 0 }; // Store DeviceInfo + di.deviceType = DIDI->dwDevType; + std::string GIStr = (GUID_to_string(DIDI->guidInstance).c_str()); + std::string GPStr = (GUID_to_string(DIDI->guidProduct).c_str()); + std::string INStr = (wstring_to_string(DIDI->tszInstanceName).c_str()); + std::string PNStr = (wstring_to_string(DIDI->tszProductName).c_str()); + di.guidInstance = new char[GIStr.length() + 1]; + di.guidProduct = new char[GPStr.length() + 1]; + di.instanceName = new char[INStr.length() + 1]; + di.productName = new char[PNStr.length() + 1]; + strcpy_s(di.guidInstance, GIStr.length() + 1, GIStr.c_str()); + strcpy_s(di.guidProduct, GPStr.length() + 1, GPStr.c_str()); + strcpy_s(di.instanceName, INStr.length() + 1, INStr.c_str()); + strcpy_s(di.productName, PNStr.length() + 1, PNStr.c_str()); + di.FFBCapable = false; // Default all devices to false, FFB devices are updated later + + // Fanatec Fix (Fanatec devices enumerate as 2) + if (LOWORD(DIDI->guidProduct.Data1) == 0x0EB7) // Fanatec manufacturer ID + if (IsDuplicateHID(DIDI)) { return DIENUM_CONTINUE; } // Skip if duplicate + + _DeviceInstances.push_back(di); + return DIENUM_CONTINUE; } // Callback for each device enumerated, each device is added to the _DeviceInstances vector BOOL CALLBACK _EnumDevicesCallbackFFB(const DIDEVICEINSTANCE* DIDI, void* pContext) { - std::string GUIDStr = (GUID_to_string(DIDI->guidInstance).c_str()); // Convert GUID to str to compare against - for (auto& di : _DeviceInstances) { - if (di.guidInstance == GUIDStr) { // Update existing entry - di.FFBCapable = true; - } - } - return DIENUM_CONTINUE; + std::string GUIDStr = (GUID_to_string(DIDI->guidInstance).c_str()); // Convert GUID to str to compare against + for (auto& di : _DeviceInstances) { + if (di.guidInstance == GUIDStr) { // Update existing entry + di.FFBCapable = true; + } + } + return DIENUM_CONTINUE; } BOOL CALLBACK _EnumFFBEffectsCallback(LPCDIEFFECTINFO EffectInfo, LPVOID pvRef) { - std::string GUIDString = *reinterpret_cast(pvRef); // Device GUID passed in as 2nd arg - _DeviceEnumeratedEffects[GUIDString].push_back(*EffectInfo); // Add the DIEffectInfo to the entry for this Device - return DIENUM_CONTINUE; // Continue to next effect + std::string GUIDString = *reinterpret_cast(pvRef); // Device GUID passed in as 2nd arg + _DeviceEnumeratedEffects[GUIDString].push_back(*EffectInfo); // Add the DIEffectInfo to the entry for this Device + return DIENUM_CONTINUE; // Continue to next effect } BOOL CALLBACK _EnumFFBAxisCallback(const DIDEVICEOBJECTINSTANCE* ObjectInst, LPVOID pvRef) { - std::string GUIDString = *reinterpret_cast(pvRef); // Device GUID passed in as 2nd arg + std::string GUIDString = *reinterpret_cast(pvRef); // Device GUID passed in as 2nd arg - if ((ObjectInst->dwFlags & DIDOI_FFACTUATOR) != 0) { // FFB Axis - _DeviceFFBAxes[GUIDString].push_back(*ObjectInst); // Add this ObjectIntance to the vector for this Device - } + if ((ObjectInst->dwFlags & DIDOI_FFACTUATOR) != 0) { // FFB Axis + _DeviceFFBAxes[GUIDString].push_back(*ObjectInst); // Add this ObjectIntance to the vector for this Device + } - return DIENUM_CONTINUE; + return DIENUM_CONTINUE; } LRESULT _WindowsHookCallback(int code, WPARAM wParam, LPARAM lParam) { - if (code < 0) return CallNextHookEx(NULL, code, wParam, lParam); // invalid code skip - - // check if device was added/removed - PCWPSTRUCT pMsg = PCWPSTRUCT(lParam); - if (pMsg->message == WM_DEVICECHANGE) { - if (_DeviceChangeCallback) { _DeviceChangeCallback((int)pMsg->wParam); } // If callback assigned, invoke it - //switch (pMsg->wParam) { - // case DBT_DEVNODES_CHANGED: - // DEBUGDATA.push_back(L"Changed!"); - // // TODO: Invoke Callback - // //if (_DeviceChangeCallback) { _DeviceChangeCallback(1); } - // break; - // case DBT_DEVICEARRIVAL: - // DEBUGDATA.push_back(L"Arrival!"); - // // TODO: Invoke Callback - // break; - // case DBT_DEVICEREMOVECOMPLETE: - // DEBUGDATA.push_back(L"Remove!"); - // // TODO: Invoke Callback - // break; - // default: - // DEBUGDATA.push_back(L"Other!"); - // break; - //} - } - return CallNextHookEx(NULL, code, wParam, lParam); // Continue to next hook + if (code < 0) return CallNextHookEx(NULL, code, wParam, lParam); // invalid code skip + + // check if device was added/removed + PCWPSTRUCT pMsg = PCWPSTRUCT(lParam); + if (pMsg->message == WM_DEVICECHANGE) { + if (_DeviceChangeCallback) { _DeviceChangeCallback((int)pMsg->wParam); } // If callback assigned, invoke it + //switch (pMsg->wParam) { + // case DBT_DEVNODES_CHANGED: + // DEBUGDATA.push_back(L"Changed!"); + // // TODO: Invoke Callback + // //if (_DeviceChangeCallback) { _DeviceChangeCallback(1); } + // break; + // case DBT_DEVICEARRIVAL: + // DEBUGDATA.push_back(L"Arrival!"); + // // TODO: Invoke Callback + // break; + // case DBT_DEVICEREMOVECOMPLETE: + // DEBUGDATA.push_back(L"Remove!"); + // // TODO: Invoke Callback + // break; + // default: + // DEBUGDATA.push_back(L"Other!"); + // break; + //} + } + return CallNextHookEx(NULL, code, wParam, lParam); // Continue to next hook } ////////////////////////////////////////////////////////////// @@ -537,254 +735,270 @@ LRESULT _WindowsHookCallback(int code, WPARAM wParam, LPARAM lParam) { // Generate SAFEARRAY from vector of wstrings, useful for exporing data across interop boundary HRESULT BuildSafeArray(std::vector sourceData, /*[out]*/ SAFEARRAY** SafeArrayData) { - HRESULT hr = E_FAIL; - try { - // Build the destination SAFEARRAY from the source data - const LONG dataEntries = static_cast(sourceData.size()); - CComSafeArray SAFEARRAY(dataEntries); - for (LONG i = 0; i < dataEntries; i++) { - CComBSTR bstr = ToBstr(sourceData[i]); // Create a BSTR from the std::wstring - if (FAILED(hr = SAFEARRAY.SetAt(i, bstr.Detach(), FALSE))) { AtlThrow(hr); } // Move the BSTR into the safe array - } - - // Return the safe array to the caller (transfer ownership) - *SafeArrayData = SAFEARRAY.Detach(); - } catch (const CAtlException& e) { - hr = e; - } catch (const std::exception&) { - hr = E_FAIL; - } - - return hr; + HRESULT hr = E_FAIL; + try { + // Build the destination SAFEARRAY from the source data + const LONG dataEntries = static_cast(sourceData.size()); + CComSafeArray SAFEARRAY(dataEntries); + for (LONG i = 0; i < dataEntries; i++) { + CComBSTR bstr = ToBstr(sourceData[i]); // Create a BSTR from the std::wstring + if (FAILED(hr = SAFEARRAY.SetAt(i, bstr.Detach(), FALSE))) { AtlThrow(hr); } // Move the BSTR into the safe array + } + + // Return the safe array to the caller (transfer ownership) + *SafeArrayData = SAFEARRAY.Detach(); + } + catch (const CAtlException& e) { + hr = e; + } + catch (const std::exception&) { + hr = E_FAIL; + } + + return hr; } // Utilities for converting string types ( https://stackoverflow.com/a/3999597/3055031 ) // Convert a wide Unicode string to an UTF8 string // Convert an UTF8 string to a wide Unicode String -std::wstring string_to_wstring(const std::string& str){ - if (str.empty()) return std::wstring(); - int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0); - std::wstring wstrTo(size_needed, 0); - MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed); - return wstrTo; +std::wstring string_to_wstring(const std::string& str) { + if (str.empty()) return std::wstring(); + int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0); + std::wstring wstrTo(size_needed, 0); + MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed); + return wstrTo; } -std::string wstring_to_string(const std::wstring& wstr){ - if (wstr.empty()) return std::string(); - int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL); - std::string strTo(size_needed, 0); - WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL); - return strTo; +std::string wstring_to_string(const std::wstring& wstr) { + if (wstr.empty()) return std::string(); + int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL); + std::string strTo(size_needed, 0); + WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL); + return strTo; } // Convert a GUID to a String std::string GUID_to_string(GUID guidInstance) { - OLECHAR* guidSTR; - (void)StringFromCLSID(guidInstance, &guidSTR); - return wstring_to_string(guidSTR); + OLECHAR* guidSTR; + (void)StringFromCLSID(guidInstance, &guidSTR); + return wstring_to_string(guidSTR); } // Return window handle for specified PID HWND FindMainWindow(unsigned long process_id) { - WindowData data; - data.process_id = process_id; - data.window_handle = 0; - EnumWindows(_EnumWindowsCallback, (LPARAM)&data); - return data.window_handle; + WindowData data = {}; + data.process_id = process_id; + data.window_handle = 0; + EnumWindows(_EnumWindowsCallback, (LPARAM)&data); + return data.window_handle; } // Callback to find the main window when Enumerating windows of PID BOOL CALLBACK _EnumWindowsCallback(HWND handle, LPARAM lParam) { - WindowData& data = *(WindowData*)lParam; // Pointer to our original WindowData data object - unsigned long process_id = 0; // Store PID - GetWindowThreadProcessId(handle, &process_id); // Get PID of our handle (Window in callback) - if (data.process_id != process_id || !IsMainWindow(handle)) - return TRUE; - data.window_handle = handle; // This is the main window, set the WindowData handle - return FALSE; + WindowData& data = *(WindowData*)lParam; // Pointer to our original WindowData data object + unsigned long process_id = 0; // Store PID + GetWindowThreadProcessId(handle, &process_id); // Get PID of our handle (Window in callback) + if (data.process_id != process_id || !IsMainWindow(handle)) + return TRUE; + data.window_handle = handle; // This is the main window, set the WindowData handle + return FALSE; } // True if the handle is for the main window BOOL IsMainWindow(HWND handle) { - return GetWindow(handle, GW_OWNER) == (HWND)0 && IsWindowVisible(handle); + return GetWindow(handle, GW_OWNER) == (HWND)0 && IsWindowVisible(handle); } GUID LPCSTRGUIDtoGUID(LPCSTR guidInstance) { - GUID deviceGuid; - int wcharCount = MultiByteToWideChar(CP_UTF8, 0, guidInstance, -1, NULL, 0); - WCHAR* wstrGuidInstance = new WCHAR[wcharCount]; - MultiByteToWideChar(CP_UTF8, 0, guidInstance, -1, wstrGuidInstance, wcharCount); - (void)CLSIDFromString(wstrGuidInstance, &deviceGuid); - delete[] wstrGuidInstance; - return deviceGuid; + GUID deviceGuid; + int wcharCount = MultiByteToWideChar(CP_UTF8, 0, guidInstance, -1, NULL, 0); + WCHAR* wstrGuidInstance = new WCHAR[wcharCount]; + MultiByteToWideChar(CP_UTF8, 0, guidInstance, -1, wstrGuidInstance, wcharCount); + (void)CLSIDFromString(wstrGuidInstance, &deviceGuid); + delete[] wstrGuidInstance; + return deviceGuid; } FlatJoyState2 FlattenDIJOYSTATE2(DIJOYSTATE2 DeviceState) { - FlatJoyState2 state = FlatJoyState2(); // Hold the flattend state - - // ButtonA - for (int i = 0; i < 64; i++) { // In banks of 64, shift in the sate of each button BankA 0-63 - if (DeviceState.rgbButtons[i] == 128) // 128 = Button pressed - state.buttonsA |= (unsigned long long)1 << i; // Shift in a 1 to the button at index i - } - // ButtonB - for (int i = 64; i < 128; i++) { // 2nd bank of buttons from 64-128 - if (DeviceState.rgbButtons[i] == 128) // 128 = Button pressed - state.buttonsB |= (unsigned long long)1 << i; // Shift in a 1 to the button at index i - } - - state.lX = DeviceState.lX; // X-axis - state.lY = DeviceState.lY; // Y-axis - state.lZ = DeviceState.lZ; // Z-axis - // rglSlider - state.lU = DeviceState.rglSlider[0]; // U-axis - state.lV = DeviceState.rglSlider[1]; // V-axis - - state.lRx = DeviceState.lRx; // X-axis rotation - state.lRy = DeviceState.lRy; // Y-axis rotation - state.lRz = DeviceState.lRz; // Z-axis rotation - - state.lVX = DeviceState.lVX; // X-axis velocity - state.lVY = DeviceState.lVY; // Y-axis velocity - state.lVZ = DeviceState.lVZ; // Z-axis velocity - // rglVSlider - state.lVU = DeviceState.rglVSlider[0]; // U-axis velocity - state.lVV = DeviceState.rglVSlider[1]; // V-axis velocity - - state.lVRx = DeviceState.lVRx; // X-axis angular velocity - state.lVRy = DeviceState.lVRy; // Y-axis angular velocity - state.lVRz = DeviceState.lVRz; // Z-axis angular velocity - - state.lAX = DeviceState.lAX; // X-axis acceleration - state.lAY = DeviceState.lAY; // Y-axis acceleration - state.lAZ = DeviceState.lAZ; // Z-axis acceleration - // rglASlider - state.lAU = DeviceState.rglASlider[0]; // U-axis acceleration - state.lAV = DeviceState.rglASlider[1]; // V-axis acceleration - - state.lARx = DeviceState.lARx; // X-axis angular acceleration - state.lARy = DeviceState.lARy; // Y-axis angular acceleration - state.lARz = DeviceState.lARz; // Z-axis angular acceleration - - state.lFX = DeviceState.lFX; // X-axis force - state.lFY = DeviceState.lFY; // Y-axis force - state.lFZ = DeviceState.lFZ; // Z-axis force - // rglFSlider - state.lFU = DeviceState.rglFSlider[0]; // U-axis force - state.lFV = DeviceState.rglFSlider[1]; // V-axis force - - state.lFRx = DeviceState.lFRx; // X-axis torque - state.lFRy = DeviceState.lFRy; // Y-axis torque - state.lFRz = DeviceState.lFRz; // Z-axis torque - - for (int i = 0; i < 4; i++) { // In banks of 4, shift in the sate of each DPAD 0-16 bits - switch (DeviceState.rgdwPOV[i]) { - case 0: state.rgdwPOV |= (byte)(1 << ((i + 1) * 0)); break; // dpad[i]/up, bit = 0 shift into value at stride (i+1) * DPADButton - case 18000: state.rgdwPOV |= (byte)(1 << ((i + 1) * 1)); break; // dpad[i]/down, bit = 1 - case 27000: state.rgdwPOV |= (byte)(1 << ((i + 1) * 2)); break; // dpad[i]/left, bit = 2 - case 9000: state.rgdwPOV |= (byte)(1 << ((i + 1) * 3)); break; // dpad[i]/right, bit = 3 - } - } - - return state; + FlatJoyState2 state = FlatJoyState2(); // Hold the flattend state + + // ButtonA + for (int i = 0; i < 64; i++) { // In banks of 64, shift in the sate of each button BankA 0-63 + if (DeviceState.rgbButtons[i] == 128) // 128 = Button pressed + state.buttonsA |= (unsigned long long)1 << i; // Shift in a 1 to the button at index i + } + // ButtonB + for (int i = 64; i < 128; i++) { // 2nd bank of buttons from 64-128 + if (DeviceState.rgbButtons[i] == 128) // 128 = Button pressed + state.buttonsB |= (unsigned long long)1 << i; // Shift in a 1 to the button at index i + } + + // Properly cast and clamp values to uint16_t range + auto ClampToUInt16 = [](LONG value) -> uint16_t { + return static_cast(std::clamp(value, 0L, static_cast(UINT16_MAX))); + }; + + // Axis assignments with proper ClampToUInt16 + state.lX = ClampToUInt16(DeviceState.lX); + state.lY = ClampToUInt16(DeviceState.lY); + state.lZ = ClampToUInt16(DeviceState.lZ); + state.lU = ClampToUInt16(DeviceState.rglSlider[0]); + state.lV = ClampToUInt16(DeviceState.rglSlider[1]); + + // Rotation assignments + state.lRx = ClampToUInt16(DeviceState.lRx); + state.lRy = ClampToUInt16(DeviceState.lRy); + state.lRz = ClampToUInt16(DeviceState.lRz); + + // Velocity assignments + state.lVX = ClampToUInt16(DeviceState.lVX); + state.lVY = ClampToUInt16(DeviceState.lVY); + state.lVZ = ClampToUInt16(DeviceState.lVZ); + state.lVU = ClampToUInt16(DeviceState.rglVSlider[0]); + state.lVV = ClampToUInt16(DeviceState.rglVSlider[1]); + + // Angular velocity assignments + state.lVRx = ClampToUInt16(DeviceState.lVRx); + state.lVRy = ClampToUInt16(DeviceState.lVRy); + state.lVRz = ClampToUInt16(DeviceState.lVRz); + + // Acceleration assignments + state.lAX = ClampToUInt16(DeviceState.lAX); + state.lAY = ClampToUInt16(DeviceState.lAY); + state.lAZ = ClampToUInt16(DeviceState.lAZ); + state.lAU = ClampToUInt16(DeviceState.rglASlider[0]); + state.lAV = ClampToUInt16(DeviceState.rglASlider[1]); + + // Angular acceleration assignments + state.lARx = ClampToUInt16(DeviceState.lARx); + state.lARy = ClampToUInt16(DeviceState.lARy); + state.lARz = ClampToUInt16(DeviceState.lARz); + + // Force assignments + state.lFX = ClampToUInt16(DeviceState.lFX); + state.lFY = ClampToUInt16(DeviceState.lFY); + state.lFZ = ClampToUInt16(DeviceState.lFZ); + state.lFU = ClampToUInt16(DeviceState.rglFSlider[0]); + state.lFV = ClampToUInt16(DeviceState.rglFSlider[1]); + + // Torque assignments + state.lFRx = ClampToUInt16(DeviceState.lFRx); + state.lFRy = ClampToUInt16(DeviceState.lFRy); + state.lFRz = ClampToUInt16(DeviceState.lFRz); + + for (int i = 0; i < 4; i++) { // In banks of 4, shift in the sate of each DPAD 0-16 bits + switch (DeviceState.rgdwPOV[i]) { + case 0: state.rgdwPOV |= (byte)(1 << ((i + 1) * 0)); break; // dpad[i]/up, bit = 0 shift into value at stride (i+1) * DPADButton + case 18000: state.rgdwPOV |= (byte)(1 << ((i + 1) * 1)); break; // dpad[i]/down, bit = 1 + case 27000: state.rgdwPOV |= (byte)(1 << ((i + 1) * 2)); break; // dpad[i]/left, bit = 2 + case 9000: state.rgdwPOV |= (byte)(1 << ((i + 1) * 3)); break; // dpad[i]/right, bit = 3 + } + } + + return state; } bool GUIDMatch(LPCSTR guidInstance, LPDIRECTINPUTDEVICE8 Device) { - DIDEVICEINSTANCE deviceInfo = { sizeof(DIDEVICEINSTANCE) }; - if (FAILED(Device->GetDeviceInfo(&deviceInfo))) { return false; } // Fetch device info - if (deviceInfo.guidInstance == LPCSTRGUIDtoGUID(guidInstance)) { // Check if GUID matches the device we want - return true; - } - return false; + DIDEVICEINSTANCE deviceInfo = { sizeof(DIDEVICEINSTANCE) }; + if (FAILED(Device->GetDeviceInfo(&deviceInfo))) { return false; } // Fetch device info + if (deviceInfo.guidInstance == LPCSTRGUIDtoGUID(guidInstance)) { // Check if GUID matches the device we want + return true; + } + return false; } GUID Device2GUID(LPDIRECTINPUTDEVICE8 Device) { - DIDEVICEINSTANCE deviceInfo = { sizeof(DIDEVICEINSTANCE) }; - if (FAILED(Device->GetDeviceInfo(&deviceInfo))) { /*return false;*/ } // Fetch device info - return deviceInfo.guidInstance; + DIDEVICEINSTANCE deviceInfo = { sizeof(DIDEVICEINSTANCE) }; + if (FAILED(Device->GetDeviceInfo(&deviceInfo))) { /*return false;*/ } // Fetch device info + return deviceInfo.guidInstance; } // Helper function to convert a std::wstring to the ATL CComBSTR wrapper (Handy because it can be sized at runtime) inline CComBSTR ToBstr(const std::wstring& s) { - if (s.empty()) { return CComBSTR(); }// Special case of empty string - return CComBSTR(static_cast(s.size()), s.data()); + if (s.empty()) { return CComBSTR(); }// Special case of empty string + return CComBSTR(static_cast(s.size()), s.data()); } void DestroyDeviceIfExists(LPCSTR guidInstance) { - std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return; // Device not attached, fail - DestroyDevice(guidInstance); + std::string GUIDString((LPCSTR)guidInstance); if (!_ActiveDevices.contains(GUIDString)) return; // Device not attached, fail + DestroyDevice(guidInstance); } DWORD AxisTypeToDIJOFS(GUID axisType) { - if (axisType == GUID_XAxis) { - return DIJOFS_X; - } else if (axisType == GUID_YAxis) { - return DIJOFS_Y; - } else if (axisType == GUID_ZAxis) { - return DIJOFS_Z; - } else if (axisType == GUID_RxAxis) { - return DIJOFS_RX; - } else if (axisType == GUID_RyAxis) { - return DIJOFS_RY; - } else if (axisType == GUID_RzAxis) { - return DIJOFS_RZ; - } /*else if (axisType == GUID_Slider) { - return DIJOFS_SLIDER; - } else if (axisType == GUID_Button) { - return DIJOFS_BUTTON1; - } else if (axisType == GUID_Key) { - return DIJOFS_; - } else if (axisType == GUID_POV) { - return DIJOFS_POV; - } else if (AxesType == GUID_Unknown) { - return DIJOFS_; - }*/ - - return 0; // GUID Type not found, likely POV Hat, Slider or Button + if (axisType == GUID_XAxis) { + return DIJOFS_X; + } + else if (axisType == GUID_YAxis) { + return DIJOFS_Y; + } + else if (axisType == GUID_ZAxis) { + return DIJOFS_Z; + } + else if (axisType == GUID_RxAxis) { + return DIJOFS_RX; + } + else if (axisType == GUID_RyAxis) { + return DIJOFS_RY; + } + else if (axisType == GUID_RzAxis) { + return DIJOFS_RZ; + } /*else if (axisType == GUID_Slider) { + return DIJOFS_SLIDER; + } else if (axisType == GUID_Button) { + return DIJOFS_BUTTON1; + } else if (axisType == GUID_Key) { + return DIJOFS_; + } else if (axisType == GUID_POV) { + return DIJOFS_POV; + } else if (AxesType == GUID_Unknown) { + return DIJOFS_; + }*/ + + return 0; // GUID Type not found, likely POV Hat, Slider or Button } GUID EffectTypeToGUID(Effects::Type effectType) { - switch (effectType) { - case Effects::Type::ConstantForce: - return GUID_ConstantForce; - break; - case Effects::Type::RampForce: - return GUID_RampForce; - break; - case Effects::Type::Square: - return GUID_Square; - break; - case Effects::Type::Sine: - return GUID_Sine; - break; - case Effects::Type::Triangle: - return GUID_Triangle; - break; - case Effects::Type::SawtoothUp: - return GUID_SawtoothUp; - break; - case Effects::Type::SawtoothDown: - return GUID_SawtoothDown; - break; - case Effects::Type::Spring: - return GUID_Spring; - break; - case Effects::Type::Damper: - return GUID_Damper; - break; - case Effects::Type::Inertia: - return GUID_Inertia; - break; - case Effects::Type::Friction: - return GUID_Friction; - break; - case Effects::Type::CustomForce: - return GUID_CustomForce; - break; - default: - return GUID_Unknown; - } + switch (effectType) { + case Effects::Type::ConstantForce: + return GUID_ConstantForce; + break; + case Effects::Type::RampForce: + return GUID_RampForce; + break; + case Effects::Type::Square: + return GUID_Square; + break; + case Effects::Type::Sine: + return GUID_Sine; + break; + case Effects::Type::Triangle: + return GUID_Triangle; + break; + case Effects::Type::SawtoothUp: + return GUID_SawtoothUp; + break; + case Effects::Type::SawtoothDown: + return GUID_SawtoothDown; + break; + case Effects::Type::Spring: + return GUID_Spring; + break; + case Effects::Type::Damper: + return GUID_Damper; + break; + case Effects::Type::Inertia: + return GUID_Inertia; + break; + case Effects::Type::Friction: + return GUID_Friction; + break; + case Effects::Type::CustomForce: + return GUID_CustomForce; + break; + default: + return GUID_Unknown; + } } bool IsDuplicateHID(const DIDEVICEINSTANCE* DIDI) { @@ -792,7 +1006,7 @@ bool IsDuplicateHID(const DIDEVICEINSTANCE* DIDI) { LPDIRECTINPUTDEVICE8 DIDevice = nullptr; if (FAILED(hr = _DirectInput->CreateDevice(DIDI->guidInstance, &DIDevice, NULL))) { return true; } // L"CreateDevice failed! 0x%08x", hr - DIPROPGUIDANDPATH GUIDPath; + DIPROPGUIDANDPATH GUIDPath = {}; GUIDPath.diph.dwSize = sizeof(DIPROPGUIDANDPATH); GUIDPath.diph.dwHeaderSize = sizeof(DIPROPHEADER); GUIDPath.diph.dwObj = 0; diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/DirectInputForceFeedback.vcxproj b/DirectInputForceFeedback~/DirectInputForceFeedback/DirectInputForceFeedback.vcxproj index fece6dc..937e338 100644 --- a/DirectInputForceFeedback~/DirectInputForceFeedback/DirectInputForceFeedback.vcxproj +++ b/DirectInputForceFeedback~/DirectInputForceFeedback/DirectInputForceFeedback.vcxproj @@ -72,15 +72,19 @@ true + true false + true true + true false + true diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Debug/vc143.idb b/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Debug/vc143.idb deleted file mode 100644 index c9b5eb05fae995fd3313496f58c5945af5b1acb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912384 zcmeF42b?5D`S*)_?c^;1v%s-CLqiU;J< zrAekO;>Zpfx&8L=c{i{m^mj`M19+$&ezn>Zff#c`e&$9=pw zhW_4D;<#rmj^q6@xp5Ri`zD9Zo^q;?9V(Uk{Qw8brCy#)?aAe{m8qKzZ##GM&Y@f} zQyQvF?az^KX3pr$71Q~_OqM^V&6qZGyBV`*PMgs=SkV3q1y%Y|Ca^P=V!}JlzfDub!~)JkqVm(FVtTM# z&KA=nNe4AQmC5#05{*rznn{&=n*BH3WYd*uIalm$M&|_L z8WPwgg44}R$58H|z4&L!Im!=DX&dQdsZy`kvzdIpkjfROO}vFoIcju|tk zo6PGZEvRlorghR-i8kt_2C2!^Nm4CsH!I0HsWF6P>ZHa{Y*!SG@)N9+8iPupPHGIo zs7`9gr$&`XgDlfJsX<(*3YlP;Jib7)I_X2?n$$@RV$JKM27#5#{4RS!{jZJUMC)~} z+hDp}?Mzok2AZ{cqcjjk3o7vyUACi>FRE+EhH^pe)t@aFvw4$dhK_9@usc=BRx24h z_R%|-%S^mQsWtNw)Ne}~s^w>mAQ=kTLa98_&(Kl2rRx&Y10!7%ZSangnJt%#r6$px z_~&P1pEB?l^f(w>^#gpD}ntfiF(M4BaGzG@v-rES|p zTBg%ZSv$ICXToJ|O^j(-J6e!YS=&sMSy`(kS}SWC1e%q#4Z_UIS}n}HtQ{pumj^~= z?RXMR%Gyyf?U%KUU453y+EH3-Zq3SCEmD_`W@T-oG^4V%QJ7g-+gw_+vNlSk(p=ii zCMEX-q|qNiBg~Gh{%S#*!V_(i=y>{Vb1AUwsO3j7&1dv{LxE`KeOIM>1?HvwGl-bx{+?Ga;cCS7%-!x4Wil`!^e3^mVfaDDGh>~5c<%&L3vZ7S3gc$R}5W}vF6w`fn zbShS}<$NjKpUqg27nBp#zH&B|v6C|@Bb8jSN4PW37k=B#iYSKg@~QcDva3(m07I<# zY;P((f`V4^NnNfji6@l0t+40Iu~0D$m4@cdwiUa4t~+01*tBdVj+HD!z06*b%G`=T zDI+U<@Y|7wT~)J%YH6U9FZD{6GdC}7{WfK47HKNb!m2XP*K{gFoTe!yD8*A=CKFi6 zIl=b^qXks3rDhW?VrnOvom48?NoUmR%~(iWe)Xv^i0V_Gnk0SZrTq~#&`?2%=grrKzQlqpk%R+Tf7dFcZWzFYJ#WZJx zlq==56@|*#iFR&>zUCZkBLOA@>qs>3aM%^fq7K!j4em^ zTicT7$FB*82AbvhytgTlkD0Qb{%yt{v7Pvcx~@D%je|3OAQ_}dbnV${K38C#`6L7} zCY#%fL%N6W+_8m0>|ExFNtBATPj`}B4AGaCWKHE2y`?cRh)p(mJJ)O)MQlO3)Dmm4 zE7223rCjXE88=gTXr!?JK ze1WHoI~OGTiLCLynC%tDG|O09Frx{Z_QS{(lU?7EtE9S8^HYp|b?5T*eI^>IVTv0X z5MxSKd$dW>ooooh)$&YPXjLjE7>yhY40C)DpOh_k<#Uy>6~8^kirJwABf>JX>_9b_ zC|TZzWs`gxyCk9n$#gfX2JNw3pNj+UUEcV06U`F}FVT>Myrh?}(Vg9uDps2HjoYJ4 z>W?n^qxfbRV;HfsR3SCa*PK0l>shL1Y>6gx*6N2iquI=$p*KHKorhD^5=&>34MXOT zP=k)iH1?93+D#TUCK$pb#DN91R0(5k%OXvs!T?LY6Qrp-mt>V(9URCfsr@h`$Rn&j z80gETySxGl^Jq3sXfH_;&$u)#6E=-psnRo)Nib8Ty`?z`2EgpS1f|n3&L)~`i;RJE z`IGCK6y&k0<^o%f$i5xsa#+G_VeV%z3|1a!Rz<~$SzS;j-KH!|YHeznC%AOs2eee3=qoSE~84PAnxeraU&k zjx%Q_PW&ktDLhP5#Fvs9tXdh>tjaL1X>OBDTj=&b{+h^2!qU9iMcHN*dJ>`eoqCfL zHM%{Uel{c#F$Q*(trh#F-rvsIh73X=$r_CGT`nqF z-iak>90l8^Omt0pgEXV184a=w*Q9G{G=(U7$N7?&0AYRn)Hw;3v1Ft z(#Wo6Ytloq%+{ob1R1VL4@ojylOB@9d^qzp=^=SRIbpmeJtWe2O?pU{>6-MADC0Hh zAzAgc;}+JWHYDV%5M(`K(~W^A-fP?#ghXPZYtm~b;0-%Yd`ub`- zgkXD3`j`NuWSrQV^igDcVr-TTMr+bXsiy7EQ_*Zq`Y5?3Ytlyv(h3gowK3rp-_0c& ztx0b#(yoSH^V({@3Ho`g$~0J$K8i%cHR)qyjrYZDuT_)8n)JppNQYs2P5PK{l3bJC z7?}Mv>5U=SUz6S#LLzI@8v{vjO?qQccGsjgO0O-GO|WfbvL=00=|Q8}_L}rYKI+qG zl3A1fq2V5Z{TWKDWwAX0yrtVti0r4m?^-l%UqOVx}m(S)Axn)Fe` z==NPQYtkDzN@7j=m@w?G=WYz5t4q$9?#e-0u(_juZad988@ot02A6z zW}8}GpxzjQ)dlL8O`EyU-M`+kdwr$UU;Z&?pP&3|i9PRD>rDC58E5=q-ES&2-5XO@ z(+lP4GGV4NUAF)CZrO3a(s;{OrWNl;Sv^)7V&}0uhv5a!${Yjl$p}f~=v}#HdXK!( zlu9;}9jHui+^aN7Z&Ym;!a`?#a*t^KVS*=KBQ@@_>J?P2f{Pgs89Rky9g+KY=fJmMF8A6A;gj7M#}wpB!8$qjeL4+Y&O$pxT0%$kHC(?Keo znZb1bNN1*$9xP;w)kD>9AGRJTXmCCZ~c@qUJHB=f)`g#+%wm7X-;PDes ze;l@wY%h-oyP&iRFjiCwoedLrtx6B)^xCjfs}Rfy8@ouOwvsRT!1W3leA~B{3voWj3-!oK-&R4!WO2;o!B+C^kvOI&uT{`-qE>G?`umL} zAiI9rY%AdwIUCz2-74@ntkGW4drjCD>o5DZER{xyUgB?AvOmeGl~8*LOQ}4N(AQJ2 z2u_Z9oxJ#j=Nh#NHD(U2PqK^CUR;Lmb=M2(3d; zKKNSo>>pFmD!`a|BebN>rsSZestjalRmkRnl`e79wo3!b_WIhK+Kg_SG4YSokU@e7 zhH0L?$7Z%*9jw(j=?%~#L@8!|3T7URT3=>ab$WR9UR{95c&uYirdl%N@0l+Nx|JJT%M1x@bRS@Rog02PXT_52ATh7w zO0K<Z@ZmLX~=p{Y>1NxT-eKE%yLhat<%pY$ecnE`6JU_bZUh`1QO$9sGyXW zy|DQ%k!`J7Wh?VIjs3pW`ywVEwr)eq6xddw#o>{{w6^VrO}Rn(gga3Ni_vO0^Mul5 z4F@Y9TSd%bh?p<2Y?(y%Laa?oYZb{@xk5@mz5dFoU^c?yP#>9CKw%WYYGY~5V2QUq zyM4LRyAm9bZkdizI}o*!ZJuo!$}l-#(O>o7D(ILALF(4FhifI;daQ^f30B+xH2Lsr z1y1cesa9deqSO082pwVBN_Y~4Mk~8xN2}H!n}zhD~*+O;Ho?ZzgKy812o3ds64l_NeRE*e`NupTRdq!K1SiOTqwmPyZ zd{nmbx5}_7Uz;3BJ^(p|TwcyDwiyEH9^N+9s^~B|L*BV>ww0FK+gu^r6p= zptrd_=yq4Fm!XUA;|L+gDhKr!a+I#dID!Mh=)%y4jI~M*dxXi6f0Gv)Cj%7Z*xXhj z#$gXDtQ|9DS#Eu^ciV!!uGK_pYhCR5+nia}JG`^4P0?EET*RKCIQb)xohj$|4)nUA zB9sgE46L@k)pn*2CaL(FrMF59d+~`jY1d+So~g7X&t8Cf6N}bu1$$xY9Uvwz8NH=Q z?9`Tghz%W0+|s6$gME?@TDJ=Ha@tlQPM}z!(vA?7ID)CqLVLK|R2j*kgZ)}bj*+`( zHLflW=1V5He}?TNup47A?s#kCn&KEVRZFFOrBhbJcg`fd#vuLi)&x1Te*|`86s#YC z-57xNBd{9-uzLh{qjcLxV2_bMdWCUgUX4-=)i%5^JOVo;$Lt7fEvWvLM1gA(v$~*( zAAvnqsbCqriDHz`GK^g@-Ne5hK|LgHqE%g*{yMcIZQ@5@Yw~M+H9JKtPF}A^apFf{ zhm;yMJJAAJ#z$a>bTd8zJ0#2a2<(t7y%^twF7iWYTD_s9+5obloLb+6iJTyV`WeBn z_=BZjbB$me!bCBI>1BzAVrmm(4doaefgQ?_p_a0tMg@Z-utN$3iPj|b&6}WOztP6Y z8%YG^4=6X1oJ2?yJ_5Uz4AN=t_bfN+8>ha(YM7Rw*T-O&0{3_E2nwUn+R53ULyOu?~L282|uxo-OujyfQleF+=*e7xX_J<@#UpC!u`3UUs zL#u6^(MVGgg@~T&IT>LEJ!O*-l>H;H$4{@&(&Nd9T6hZBWQ0c}bmB)~*UaB5M<#v* zc36(V5!fLy5-rO|V2__g^mK;C^on1gPy7h%THK{14u)Gy>lhKGr@GZw#Wcp!yxh`V z-}M3U@k5KrX?;|*QSI1*yy;L)C^e7&*cO7dBd}}PB76k)_L4zt?q}K%f%^R1M$(hu zs*>uF*3=IcR_ZG!D0TT^N_}s>Qai4$RQ5up{&0m-H++H3KDmmED7DpIN?pC0e=q;f z*;T1KrYiNsCH}KNPE+dOvQl>r`S(|S9zRzq^*YbwI(c_~uPAj9@*gM6pJtUh=5VFX z-dU+NFH-7(%aywORNwDugT8z3hDtr$McCk^J(PNMF{PH8qf~x#-bbgO^6npwQ|ggR zmD-8F^B+;_KgTO|!KanlW*w#ee3??$eom>&_EBn`jg=}BzZ*WK)Pv}9?Gfx*dY)2$ zC5{IL@j8ANKV13$0mArss(vqj-B40$$`qxpI(_u>&%>2mHxZx0SxSB59HqX1UJo6t z)P^(QcUY<8&-eXY18;}yt<<7t!_`jyvs-rb-P_LeUH$)MedxF%aXv|@b1xumPFHH^ zNd4BitUAM1N&#j@<-`9q}E9(CKNnZNa@=6^xul`K`wG4Xks`?|? zV=LZ+OSw*13cZJv+P+_@;kA^iqR_6S(`oCWA89GqdZhQcgeTVt8!EN(y8howboj3R zfA2N*U-;1xt3Ohw2KiON?OLSq3QH@s@Up&#>_MarX?6wa)9gxJrPQh9qsK{uyV6R1 z4jxzErS5ah?UedGdF_kXN}9j-np*$u@%@$BbTg%l4w|354l3%DQ3)x(v)j@?43+mEk5TLvBFx|e(@*9yCn28Z~6FHc%L*-zero42sRW6^77 z7JK=q|ND6V|M(RDmpfMS-E)YGTtfjjhZBeJ^{tO!i{$GoRtP^;>ajup{!_DjcU#g| zu44nc_V4`vA0_|DwZqB2n<5_{N8Zrav!v%ngrl!+@`t{Bu(RqE!MO05Am3k5pdPCC9! z-0vX|T!;RjpnTQW&KKyv>h8g$?Z+sOwhQdG{>$jUM##5v9f<5h_VoXj|L1N{|9f-t ztz5UyCJzVc^xHW~edI#_`5$*xYH9d6V!Bf2%)qwx#fCmc{v&Tb&_P}B3F3bq_vC%K z9$$y@1Wv-&iNs5;b(i;D{r@KmN-Z`(dA*%d88|*V$b&1LNZvjSdtC)RmZ4slrqoJs zdLFtSeujQ~ta~PTwZGSYzAYTDOn#k#jQg>HW69Ge^Y@dxjD7Etz@C@ggEEG=T}pbb zNclUTINpf++yRuMXHjkvx5eP{8u(Y_;io=Iyw{{2JrXh#ljbj>pIk4Xk6cfzh`o|NOA|l2e#U!CpQ2O_uFoaBTesl%#j)R=udH@$=0_;?)hm6!-N=(`HDv1R;~!V* z-|*diB4x=^v;`>l-r}7(*xhaWDfJz~{nN$BCjRe{-rqcmIuE~ZV+TL(A^mZCj)hC! zyJ;)RF*w_Iwo)U6y$)Qx05`jmujayU2V8et;)i_Nij>i$!4U^wL!{%Ek5=mI6?7*J z*4R*~PV#6kVI6iV{Eg5SBL5seMEG!e0C688>~#l8H~wA`u3kPysj2X`!uh1v1tfEW zZR_~fT*5x?_}ZQK$HJ>AwE&&v+J7J4)&HL`NB^bNoAA;Nhxbn>oGztao#p?w40#~R zwK@4ZM_Nz++*sdz*pe+}HQTSa8=T!_39KW>Ng&KDHQ{Tz)6TGGq`)t#Gr5=1fut64pHjYxc|iXU&Fl?GO-u+{HjX9o01BtA9t0t zsJwBP#<0kT>dN(%O5vVF#w33=Ol%pm)3JX_YpV%IQNA8)yYr9wj_yl&oxj!t2z8oT zmtF4!;Ml(UVRo&;nfTY9PL+laOKyX&z2t+|of5-Q_dSf2CGli1W!IVs$gWKn zvT73k_;xyhY44T3sI}_^$Y6GLDxd2uTFxhw=h-5sSj~^P^f!*?eqF&Buw|Wttmp4t zn!t7rwUe`Y$|dGg+ddsCP`{Fy-}T>G)aB3PZe>>X>I14F(rKLbPVxuj45a%aWI>D3 z^$$yL#cv#2su#EZq;H$DvD3;(G2NFy`=h{ek>Ns=W6;dmANygLuFc|UMVEQ#y6K}2 z#%&d1oW%FHKWBy*cGNXgAIWbOhP_x(h^Gh3WvYsi$zDLISN$X(*(MptpOx1t=vZm# z&7G7oFG7(NQ}Cz>?X8rympMYGb5CBNdYP+#R(q>(V-iW5DlQKk`xO)o>AVusweGj3vz{HAt^44-WlpnKtGz9b5kBNsU(Xg(M#tqgaZ-W$b*R zyM+_knME2ZS?Zx&b%bU)by77Yn|j-hhqV8@*=r$@_7Gh$`4UI2mF-Ip+K9o%HBokX zG0(HQ*`rrXx5}yZLQG;S7BP+J&8t|(q1Q$x_BGj`$@E9-myM}6gve3G5i7(v!h;Me zlB<OWW#c%ptaXDV(L3Y|XGwkp_F^e5rjW=URQ02x^4Z>0nvy(6 z^4nHFH2d6UTI#-=`jJ|J;@+9=)8!cV*_ksn%OsP2BYKBzav`L@c=N1=!UkdscMi*k3(p%ngj*G;H3X zhfUpu=>QA3a1_&0)C>3B{Kz|}$(>S*fW-l`CA?`0INskf-$mwCy2~-(7-(Mxoc*_N z+BwY~1Evf(`!{9Kz3&)kUk050w{O}x%^d@#3^@BYWzfCv7-(Mxoc*_N+BwY~1Evf( z`!{9Kz3&)kUk050w{O}x%^d@#3^@BYWzfCv7-(Mxoc*_N+BwY~1Evf(`!{9Kz3&)k zUk050w{O}x%^d@#3^@BYWzfCv7-(Mxoc*_N+BwY~1Evf(`!{9Kz3&)kUk0)RmFbPg z5=B`oUpq-j7Ry`SY+K8Yy+=YE#r1ObO!Uno%$H@4-GU+F2HtUE#=Z!nj*7Oi34l(L zL^gEL!h5xQbn!rZQuKsV|vfF9y7%*kP*}o}+?tRBV`!e9{ zzkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*> zWx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P z$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB z)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP z*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV z`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSor zY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0L zDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis z;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw` z7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+ z?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{ zzkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*> zWx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P z$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB z)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP z*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV z`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSor zY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0L zDTD5P$3Xis;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis z;OxJB)6Qw`7%*kP*}o}+?tRBV`!e9{zkSorY3>*>Wx(0LDTD5P$3Xis;OxJB)6Qw` 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�J@%l~|Ht{B%=UbDbH0g&`G#|j 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 X@u!%9Vg`yCC}yCTfno+e1R3}rQdIi^ diff --git a/DirectInputForceFeedback~/x64/Debug/DirectInputForceFeedback.exp b/DirectInputForceFeedback~/x64/Debug/DirectInputForceFeedback.exp deleted file mode 100644 index a22a6d8a7e228f56293e05bce172c4664ba25234..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2979 zcmd5;O>f*(6upVlB>hO5p=}aMTc$M7mclTTr0KK@(j+tas7OO;nyL#6;jv#*E1vPl z_T&R0gam>vSg>FL5=bn%=z;|c7KjB)#DWDspbHlKfi76Ef^)CO&e&FVNbr<7KJUEi z=jZ$0J&yHpFa3>X4G_ITVJj%h2#ih#mkYf_7OoF*<#q|b3jPX~s<$^M)>z}Vq7jYv zg*?Ivjm$IWXGB^L$TOW^r2RjyJ=9AY_0b{frvVzI!*qm>(lHvMVLDDDl%tyMDKog) zY_)?$*E7|kQdZqCw+fcyP}NgLplWK{HdUvyxH!MCv4LBtwlKfGRHB;l1JB*-1a*4* zQ47s>LwWHmKE(oJ=5|$52&eXGNdMe;E=EiFfZ&Oa9CIkcwX42z~jP}fiDRA3^*ce1$aT&=fIq>+dzIR zjlKYKHE47f_@c0{fG33A2fifi8{kP{I`E>fN5E6U-T`uMG zeZ6T1d#`qFv);uM)$zW*J2S1<*gg)7DX85RmNlE>!uyS%FKrm<{Tcgr%QijNcQ=Ck zr8}4ND>ql)peOWtj?5kFUtQ=yuRv-SHGMWRo%1ww&CR0g0^M5 z`ebo(Qm?v=Mw@e_->d3(UDrYU8fa;{FonO;^{FYnZa4L1*AMO^Kb#}SZf+qHiqAti z$Ih8Bl~IW7%AvSlPeahLbCJoMM3;9oX*Od}xzaMG!vkD+vDbuU@8b-Wu^n9lkqMo~ zz+h@1G9$i;i!x(MXE4B(8QW08oK9hsYcw7WO==wSv5d@S#V^Ulnl!C*P`O+WGA~{o zmu|+y_(5F1Su^9Lb3yP(*YQBrm2+IlX>+TXZlhJOEgah({t9YT*}#XPP%MrhXQ9&l z&E;LzsQc^6Tda})?yAwiNqB-@7~^fWw$YKwkCZT~)fKbzrUxtdAyy_5uRHhTL0$ILSeC5VF6neW5KyOrhk^93LQ0E&nKCfuQLjN8=@B8^;6WvHB^4hD1T&>KQqbzC$H1OdBzgT nMf4JGmUgkEU1e-4V^6UV*;2O<*-^%ZVuMN8Pptmu{~P@SgULkV diff --git a/DirectInputForceFeedback~/x64/Debug/DirectInputForceFeedback.lib b/DirectInputForceFeedback~/x64/Debug/DirectInputForceFeedback.lib deleted file mode 100644 index 95dfcf37592dbf96d1ac72c7ecbe36e4a584c8bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5780 zcmcgwO>7%Q6n=KnBz2S6`KuxnP)H&bXqz7=acG5*oj56>X;L}K1(2MLy=g3**m5=n zq)HX2>IrTfN>r5s7kbGtJt37MRif>oQV)ez^iTlgY_br)Ls#$@uu}SYq<@+)N@F&lL2OF}a#wHzsn0ls=*B=|wH|E+muF z^HWpy8F0Sb6gFY*jrr-5$#`ro2D64%Fig_;&CE(ZX=BeCxxAB@${k-_U(pMip~v;J znUuc9zh+~P6?7@YWfWFiUo#5157<|@fXX|e8*CIcHFPdwVXEDP_MW2{@ulRLme&?D z*^H5q$~%uCHc%RYNaue3d6RXJTS>d}#?SZQC}}h*>)JzEsl2 zX4@$za%3x)@2OSH#-7ioahI)PRxbHSESr^LVjXrq?f|pi*s`{IMjz9%S?4z zlr;}oeXuh5lO;iA*Uc>H;i@k(5!DU~&pJ=;xUdP6mTX}eJ6qU?jo7Rt**wZzvRe84 zSxT6y_1MSD*^rNxJ66hP2>a<`we9XtwLVK)cvgiFJ|=30g@8#9<+SZhXR{FK6Ga7| z@T@NnN5Zo9NMEdi?jsL&dVN@dV2+@tH?1$OpXr%pJ%9whd@MS=jY4R&H-i~i>j{e? zOf~QrX@@hau#H0h4K5eqYv<7EyOS2*QYx1^1!6a|n5*^->xBWj}v>Q)&9Q}=O`lkFniew zuQK243A`w^WNyp>(?pdC}o^n7<1F{=nuxrezzdycV)D8x;6{zw1f z9(h-F3A)`BhyO;-gfV*8uEPrs-2*P#Zsg4Pw@tL;bR|3#$?^XS9dKhbfwpP@U{&8{kV z-+>`}T_3cuj`jZf+_O;{wVr$A7US{Vbe9h72f;W9kR|_UyVGb ztW%Hp>UE>C*dq?uHJ>#+p(DD1VRPH7|4dX?3#Z%{9QgWA^8ZHC!g_sjg|CGDpZomU zL$ZIch;F^5xx#z5zr#6uJ^t-|I%h*1--K9c?{h#uJahFoLT^HJ>#ftIiNk&HUo(26 A9RL6T diff --git a/DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.dll b/DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.dll index 83bb721abad732942a7ae15476dd3d6166496693..c821a5f37cb332aca8dbde8510d13e3032681bfa 100644 GIT binary patch literal 64000 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

    RY&PFE=@5W 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 literal 2981 zcmd5;J#QRU6utI1w)0`fOA_0JBy5Nw34vvI?KqprNNex*^3JQKe3JU%}3JNMX_s-6EXGZRj;K_UDyz}n7 zd2`>pXI%fNpZ-Q`3=zFVLCdMS;Tzo!E*JWV>bO3{mD?r!%J|FGRjso*wayy1RgGwJ zAmAaEX>5TxKO@xoK%VOULhb)~?W2CuXn+pUAPvzl9i}66l#bB|jnZ)%qYPCoSDF6J zR=eXbIj*Uel&aSZb1PT3ZK}A+@Ksf9Tc+xEmX;P48x7n-)y0L4lg& zk6LVXn#zr4@hB1yGrz0iLNK*Q%gUcOeQUe>Y!QMdRE)M!vuw+^a4W(Bb=}7k65Tap zht@Gq$9GKC@|DZI?j#S4)~2c$w#~0fxZCx65&^+!&)atN7M>`*5gTnBF%<<6a!SZE zA=_twhlFK;gTkhOIG`Bivv*op8#pYC&+Rk9eBfbWc_7cE(Jt_auo>W4VebNu3M&E6 z340&NtI%i;_^hxGfg{4oz^t%`z)@jU;CW%60FMh>0X`?}Q{b4eTfhs#J_BZi-2w7j zY4kaet3ji?z~_a12|OX}KJW!$Ujt7H(}5R-eFHot>@6VYMx#f-abb1fWntd}Cxkr! zz9{TF;G{4cctzOvz^8=`0H5HufSP`X`gqY)xuI`(%JuYW$K2Y}tB#4Y+44Po+45I9 zHGQLH`Fk(-Y_s0OW7YAVzB@akuPIv@o;olpr*_*|*j$E7?>An7v{5AZXYAl@%XA&j zY53VoYnQXPZmzyYkLlG6nLG7=b*Trv1gTwA^$q=w>ukD4GrMHj%G38(b1n-Ywe%Io^Y0@=oF&_8Z6Oni zPeduh-Wju%afs~8fw*5$BhayTq0O8`m-jSoHxp2~)>5{^16+EM+XRL0;S`my9X$h~ z4V}ioaAF{|Bfg2tGG$9=Fu=7L8BxrhPGOX*G#U+TY7+9Xl+1R;FUjQ^x2$YH? qiI{Q`y_lONT`X=_DVs{!QzV48)GLH`l(M17U}E+YssH(ZNB;m5;YGFp diff --git a/DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.lib b/DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.lib index c0e7a48dc9395108f35134ca8a8a5c1edae52888..0ae5ce7a7adb37e7c0fa2a9c7a920b73ad7bffa3 100644 GIT binary patch delta 1172 zcmaKrTS!z<6o&t?nbGZ>nKLuzcxIer9741(b0)iCP*#(4r6RJI$V^Aj%n>h%QTb9q z(L=E+%q)VSdWaBx2z&{9P>a$ef_mv83ekd+F3^Q+ZI9Dss1AIv*IxfxoAvK~&K6uQ zI=!qt5?Qh+H2v*K2T%ZrZ-7z@IC}v1O%tO7kazOI16%#)Re&BRaMKNR7(l?w17!la9C!JEP8N1~fEy|h)OgKgu`a0d zT9N^TB&=D$nk!tN#Wg{$SI(M4;ltyD5Wou=RBOD2edD_JHoM(eFmri4z7Ufv=-S>QfUn+lD4o5cEP$;U#DoD|bq#b{meLpgwpUTIC@;H}5~a(cWcR)A^Fz4eB}1#cmuuF=g}o~p-hUt^J4=t asZpg7VgJI@Hir&w8kfiDT$1!a*ybOYvL?9z delta 749 zcmZ{gPe@cz6vn?d|L^<%X5Q0D2aG`y98D)F|Ew$|s7sZtOL*yhKC4TM4=$?KjW^C7Q<-@M)uK>$OdOB(%WcHH52Pl=#qF5icDQtrG9lj zl*arx9Wz>}RT~J*k5}_rpAy=9lmAJx`mKMj9sELht$|9$nQ+_3>%X?>k={guY9nRM zN#FIv%=oUxs$!i~Xw`Pb*VE@-H*=~0?btanG}8P$!zxIlPC@)Wdv9q!s}R+kAzF&N zVtr2iEGuE!j2Fezts4tcMJSgjYRliU@3O3->~9KsQ|_=>P)du^5Tl%16f0L=u63~z zRC6y2`_;;iHdZQ)dIhm_wf|EGD~)R2m^gL6`-5CVr;)mX7P)P#A7o|l;0a~VRQ<59 tvJbw?!6xPEi=yGq!}qe;qFVi!cs%fIxt*0wBgvx3oVfc%Du*_b**~4np>O~I diff --git a/Plugin/DLL/DirectInputForceFeedback.dll b/Plugin/DLL/DirectInputForceFeedback.dll index 83bb721abad732942a7ae15476dd3d6166496693..02db0f6a7e3951c7f85c3599e012077261e5f3f6 100644 GIT binary patch literal 428032 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

    eDN$rz>iGl`Zuu*NGV)To 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 literal 60928 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 Mathf.Clamp(value, min, max); private static void DebugLog(string message) => Debug.Log($"[DirectInputManager] {message}"); #else - const string DLLFile = @"..\..\..\..\..\Plugin\DLL\DirectInputForceFeedback.dll"; - private static uint ClampAgnostic(uint value, uint min, uint max) => Math.Clamp(value, min, max); - private static int ClampAgnostic(int value, int min, int max) => Math.Clamp(value, min, max); - private static void DebugLog(string message) => System.Diagnostics.Debug.WriteLine($"[DirectInputManager]{message}"); + const string DLLFile = @"..\..\..\..\..\Plugin\DLL\DirectInputForceFeedback.dll"; + private static uint ClampAgnostic(uint value, uint min, uint max) => Math.Clamp(value, min, max); + private static int ClampAgnostic(int value, int min, int max) => Math.Clamp(value, min, max); + private static void DebugLog(string message) => System.Diagnostics.Debug.WriteLine($"[DirectInputManager]{message}"); #endif - ////////////////////////////////////////////////////////////// - // Private Variables - For Internal use - ////////////////////////////////////////////////////////////// - - private static bool _isInitialized = false; // is DIManager ready - private static DeviceInfo[] _devices = new DeviceInfo[0]; // Hold data for devices plugged in - private static Dictionary _activeDevices = new Dictionary(); // Hold data for devices actively attached - - ////////////////////////////////////////////////////////////// - // Public Variables - ////////////////////////////////////////////////////////////// - public static bool isInitialized { get => _isInitialized; } - public static DeviceInfo[] devices { get => _devices; } - public static Dictionary activeDevices { get => _activeDevices; } - - ////////////////////////////////////////////////////////////// - // Methods - ////////////////////////////////////////////////////////////// - - /// - /// Initializes DirectInput

    - ///
    - /// - /// True if sucessful or DI already initialized
    - /// False if failed - ///
    - public static bool Initialize() { - if (_isInitialized) { return _isInitialized; } - if (Native.StartDirectInput() != 0) { return _isInitialized = false; } - Native.SetDeviceChangeCallback(OnDeviceChange); - return _isInitialized = true; - } - - /// - /// Fetch currently available devices and populate DIManager.devices
    - ///
    - public static void EnumerateDevices() { - int deviceCount = 0; - IntPtr ptrDevices = Native.EnumerateDevices(out deviceCount); // Returns pointer to list of devices and how many are available - - if (deviceCount > 0) { - _devices = new DeviceInfo[deviceCount]; - - int deviceSize = Marshal.SizeOf(typeof(DeviceInfo)); // Size of each Device entry - for (int i = 0; i < deviceCount; i++) { - IntPtr pCurrent = ptrDevices + i * deviceSize; // Ptr to the current device - _devices[i] = Marshal.PtrToStructure(pCurrent); // Transform the Ptr into a C# instance of DeviceInfo - } - }else{ - _devices = new DeviceInfo[0]; // empty _devices when no devices are present - } - return; - } - - public static async Task EnumerateDevicesAsync(){ - Task enumDevicesTask = Task.Run(EnumerateDevices); - Task warningTimeout = Task.Delay(1000); - - if (warningTimeout == await Task.WhenAny(enumDevicesTask, warningTimeout)) { - DebugLog($"Warning EnumerateDevices is taking longer than expected!"); - await enumDevicesTask; // Continue to wait for EnumerateDevices - } - } - - /// - /// Attach to Device, ready to get state/ForceFeedback

    - ///
    - /// - /// A boolean representing the if the Device was attached - /// - public static bool Attach(string guidInstance) { - if (_activeDevices.ContainsKey(guidInstance)) { return true; } // We're already attached to that device - int hresult = Native.CreateDevice(guidInstance); - if (hresult != 0) { DebugLog($"CreateDevice Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)} {guidInstance}"); return false; } - DeviceInfo device = _devices.Where(device => device.guidInstance == guidInstance).First(); - _activeDevices.Add(guidInstance, new ActiveDeviceInfo(){ deviceInfo = device }); // Add device to our C# active device tracker (Dictionary allows us to easily check if GUID already exists) - return true; - } + ////////////////////////////////////////////////////////////// + // Private Variables - For Internal use + ////////////////////////////////////////////////////////////// + + private static bool _isInitialized = false; // is DIManager ready + private static DeviceInfo[] _devices = new DeviceInfo[0]; // Hold data for devices plugged in + private static Dictionary _activeDevices = new Dictionary(); // Hold data for devices actively attached + + ////////////////////////////////////////////////////////////// + // Public Variables + ////////////////////////////////////////////////////////////// + public static bool isInitialized { get => _isInitialized; } + public static DeviceInfo[] devices { get => _devices; } + public static Dictionary activeDevices { get => _activeDevices; } + + ////////////////////////////////////////////////////////////// + // Methods + ////////////////////////////////////////////////////////////// + + /// + /// Initializes DirectInput

    + ///
    + /// + /// True if sucessful or DI already initialized
    + /// False if failed + ///
    + public static bool Initialize() + { + if (_isInitialized) { return _isInitialized; } + if (Native.StartDirectInput() != 0) { return _isInitialized = false; } + Native.SetDeviceChangeCallback(OnDeviceChange); + return _isInitialized = true; + } + /// + /// Fetch currently available devices and populate DIManager.devices
    + ///
    + public static void EnumerateDevices() + { + int deviceCount = 0; + IntPtr ptrDevices = Native.EnumerateDevices(out deviceCount); // Returns pointer to list of devices and how many are available + + if (deviceCount > 0) + { + _devices = new DeviceInfo[deviceCount]; + + int deviceSize = Marshal.SizeOf(typeof(DeviceInfo)); // Size of each Device entry + for (int i = 0; i < deviceCount; i++) + { + IntPtr pCurrent = ptrDevices + i * deviceSize; // Ptr to the current device + _devices[i] = Marshal.PtrToStructure(pCurrent); // Transform the Ptr into a C# instance of DeviceInfo + } + } + else + { + _devices = new DeviceInfo[0]; // empty _devices when no devices are present + } + return; + } - /// - /// Remove a specified Device - /// - /// - /// True upon sucessful destruction or device already didn't exist - /// - public static bool Destroy(string guidInstance) { - if (!_activeDevices.ContainsKey(guidInstance)) { return true; } // We don't think we're attached to that device, consider it removed - int hresult = Native.DestroyDevice(guidInstance); - _activeDevices.Remove(guidInstance); // remove from our C# active device tracker - if (hresult != 0) { DebugLog($"DestroyDevice Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } + public static async Task EnumerateDevicesAsync() + { + Task enumDevicesTask = Task.Run(EnumerateDevices); + Task warningTimeout = Task.Delay(1000); - /// - /// Retrieve state of the Device, Flattened for easier comparison.
    - ///
    - /// - /// FlatJoyState2 - /// - public static FlatJoyState2 GetDeviceState(string guidInstance) { - FlatJoyState2 DeviceState = new FlatJoyState2(); - int hresult = Native.GetDeviceState(guidInstance, out DeviceState); - if (hresult != 0) { DebugLog($"GetDeviceState Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } - return DeviceState; - } + if (warningTimeout == await Task.WhenAny(enumDevicesTask, warningTimeout)) + { + DebugLog($"Warning EnumerateDevices is taking longer than expected!"); + await enumDevicesTask; // Continue to wait for EnumerateDevices + } + } - // public static async Task GetDeviceStateAsync(string guidInstance){ - // return await Task.Run(()=>{return GetDeviceState(guidInstance);}); - // } - - /// - /// Retrieve state of the Device
    - /// *Warning* DIJOYSTATE2 contains arrays making it difficult to compare, concider using GetDeviceState - ///
    - /// - /// DIJOYSTATE2 - /// - public static DIJOYSTATE2 GetDeviceStateRaw(string guidInstance) { - DIJOYSTATE2 DeviceState = new DIJOYSTATE2(); - int hresult = Native.GetDeviceStateRaw(guidInstance, out DeviceState); - if (hresult != 0) { DebugLog($"GetDeviceStateRaw Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } - return DeviceState; - } + /// + /// Attach to Device, ready to get state/ForceFeedback

    + ///
    + /// + /// A boolean representing the if the Device was attached + /// + public static bool Attach(string guidInstance) + { + if (_activeDevices.ContainsKey(guidInstance)) { return true; } // We're already attached to that device + int hresult = Native.CreateDevice(guidInstance); + if (hresult != 0) { DebugLog($"CreateDevice Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)} {guidInstance}"); return false; } + DeviceInfo device = _devices.Where(device => device.guidInstance == guidInstance).First(); + _activeDevices.Add(guidInstance, new ActiveDeviceInfo() { deviceInfo = device }); // Add device to our C# active device tracker (Dictionary allows us to easily check if GUID already exists) + return true; + } - /// - /// Lists all attached device GUIDs - /// - /// - /// string[] of attached GUIDs - /// - public static string[] GetActiveDevices() { - string[] ActiveGUIDs = null; - int hresult = Native.GetActiveDevices(out ActiveGUIDs); - //if (hresult != 0) { Debug.LogError($"[DirectInputManager] GetActiveDevices Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } - if (hresult != 0) { DebugLog($"GetActiveDevices Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } - - if (ActiveGUIDs.Length != _activeDevices.Count) { DebugLog($"Active Device mismatch! DLL:{ActiveGUIDs.Length}, DIManager:{_activeDevices.Count}"); } - - return ActiveGUIDs; - } - /// - /// Retrieve the capabilities of the device. E.g. # Buttons, # Axes, Driver Version
    - /// Device must be attached first
    - ///
    - /// - /// DIDEVCAPS https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee416607(v=vs.85) - /// - public static DIDEVCAPS GetDeviceCapabilities(string guidInstance) { - DIDEVCAPS DeviceCapabilities = new DIDEVCAPS(); - int hresult = Native.GetDeviceCapabilities(guidInstance, out DeviceCapabilities); - if (hresult != 0) { DebugLog($"GetDeviceCapabilities Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } - return DeviceCapabilities; - } + /// + /// Remove a specified Device + /// + /// + /// True upon sucessful destruction or device already didn't exist + /// + public static bool Destroy(string guidInstance) + { + if (!_activeDevices.ContainsKey(guidInstance)) { return true; } // We don't think we're attached to that device, consider it removed + int hresult = Native.DestroyDevice(guidInstance); + _activeDevices.Remove(guidInstance); // remove from our C# active device tracker + if (hresult != 0) { DebugLog($"DestroyDevice Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Returns if the device has the ForceFeedback Flag
    - ///
    - /// - /// True if device can provide ForceFeedback
    - ///
    - public static bool FFBCapable(string guidInstance) { - return GetDeviceCapabilities(guidInstance).dwFlags.HasFlag(dwFlags.DIDC_FORCEFEEDBACK); - } + /// + /// Retrieve state of the Device, Flattened for easier comparison.
    + ///
    + /// + /// FlatJoyState2 + /// + public static FlatJoyState2 GetDeviceState(string guidInstance) + { + FlatJoyState2 DeviceState = new FlatJoyState2(); + int hresult = Native.GetDeviceState(guidInstance, out DeviceState); + if (hresult != 0) { DebugLog($"GetDeviceState Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } + return DeviceState; + } - /// - /// Returns the attached status of the device
    - ///
    - /// - /// True if device is attached - /// - public static bool isDeviceActive(string guidInstance) { - return _activeDevices.ContainsKey(guidInstance); - } + // public static async Task GetDeviceStateAsync(string guidInstance){ + // return await Task.Run(()=>{return GetDeviceState(guidInstance);}); + // } + + /// + /// Retrieve state of the Device
    + /// *Warning* DIJOYSTATE2 contains arrays making it difficult to compare, concider using GetDeviceState + ///
    + /// + /// DIJOYSTATE2 + /// + public static DIJOYSTATE2 GetDeviceStateRaw(string guidInstance) + { + DIJOYSTATE2 DeviceState = new DIJOYSTATE2(); + int hresult = Native.GetDeviceStateRaw(guidInstance, out DeviceState); + if (hresult != 0) { DebugLog($"GetDeviceStateRaw Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } + return DeviceState; + } - /// - /// Enables an FFB Effect on the device.
    - /// E.g. FFBEffects.ConstantForce
    - /// Refer to FFBEffects enum for all effect types - ///
    - /// - /// True if effect was added sucessfully - /// - public static bool EnableFFBEffect(string guidInstance, FFBEffects effectType) { - int hresult = Native.CreateFFBEffect(guidInstance, effectType); - if (hresult != 0) { DebugLog($"CreateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } + /// + /// Lists all attached device GUIDs + /// + /// + /// string[] of attached GUIDs + /// + public static string[] GetActiveDevices() + { + string[] ActiveGUIDs = null; + int hresult = Native.GetActiveDevices(out ActiveGUIDs); + //if (hresult != 0) { Debug.LogError($"[DirectInputManager] GetActiveDevices Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } + if (hresult != 0) { DebugLog($"GetActiveDevices Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } + + if (ActiveGUIDs.Length != _activeDevices.Count) { DebugLog($"Active Device mismatch! DLL:{ActiveGUIDs.Length}, DIManager:{_activeDevices.Count}"); } + + return ActiveGUIDs; + } - /// - /// Removes an FFB Effect from the device
    - /// Refer to FFBEffects enum for all effect types - ///
    - /// - /// True if effect was removed sucessfully - /// - public static bool DestroyFFBEffect(string guidInstance, FFBEffects effectType) { - int hresult = Native.DestroyFFBEffect(guidInstance, effectType); - if (hresult != 0) { DebugLog($"DestroyFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } + /// + /// Retrieve the capabilities of the device. E.g. # Buttons, # Axes, Driver Version
    + /// Device must be attached first
    + ///
    + /// + /// DIDEVCAPS https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee416607(v=vs.85) + /// + public static DIDEVCAPS GetDeviceCapabilities(string guidInstance) + { + DIDEVCAPS DeviceCapabilities = new DIDEVCAPS(); + int hresult = Native.GetDeviceCapabilities(guidInstance, out DeviceCapabilities); + if (hresult != 0) { DebugLog($"GetDeviceCapabilities Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } + return DeviceCapabilities; + } - /// - /// Fetches supported FFB Effects by specified Device
    - ///
    - /// - /// string[] of effect names supported - /// - public static string[] GetDeviceFFBCapabilities(string guidInstance) { - string[] SupportedFFBEffects = null; - int hresult = Native.EnumerateFFBEffects(guidInstance, out SupportedFFBEffects); - if (hresult != 0) { DebugLog($"GetDeviceFFBCapabilities Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } - return SupportedFFBEffects; - } + /// + /// Returns if the device has the ForceFeedback Flag
    + ///
    + /// + /// True if device can provide ForceFeedback
    + ///
    + public static bool FFBCapable(string guidInstance) + { + return GetDeviceCapabilities(guidInstance).dwFlags.HasFlag(dwFlags.DIDC_FORCEFEEDBACK); + } - /// - /// Stops and removes all active effects on a device
    - /// *Warning* Effects will have to be enabled again before use
    - ///
    - /// - /// True if effects stopped successfully - /// - public static bool StopAllFFBEffects(string guidInstance) { - int hresult = Native.StopAllFFBEffects(guidInstance); - if (hresult != 0) { DebugLog($"StopAllFFBEffects Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } + /// + /// Returns the attached status of the device
    + ///
    + /// + /// True if device is attached + /// + public static bool isDeviceActive(string guidInstance) + { + return _activeDevices.ContainsKey(guidInstance); + } - /// - /// Stops DirectInput
    - ///
    - /// - /// True if DirectInput was stopped successfully - /// - public static bool StopDirectInput() { - int hresult = Native.StopDirectInput(); - if (hresult != 0) { DebugLog($"StopDirectInput Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } + /// + /// Enables an FFB Effect on the device.
    + /// E.g. FFBEffects.ConstantForce
    + /// Refer to FFBEffects enum for all effect types + ///
    + /// + /// True if effect was added sucessfully + /// + public static bool EnableFFBEffect(string guidInstance, FFBEffects effectType) + { + int hresult = Native.CreateFFBEffect(guidInstance, effectType); + if (hresult != 0) { DebugLog($"CreateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Returns byte[] of state
    - ///
    - /// - /// byte[] - /// - public static byte[] FlatStateToBytes(FlatJoyState2 state) { - int size = Marshal.SizeOf(state); - byte[] StateRawBytes = new byte[size]; - IntPtr ptr = Marshal.AllocHGlobal(size); - Marshal.StructureToPtr(state, ptr, true); - Marshal.Copy(ptr, StateRawBytes, 0, size); - Marshal.FreeHGlobal(ptr); - return StateRawBytes; - } + /// + /// Removes an FFB Effect from the device
    + /// Refer to FFBEffects enum for all effect types + ///
    + /// + /// True if effect was removed sucessfully + /// + public static bool DestroyFFBEffect(string guidInstance, FFBEffects effectType) + { + int hresult = Native.DestroyFFBEffect(guidInstance, effectType); + if (hresult != 0) { DebugLog($"DestroyFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Computes MD5 for FlatState
    - ///
    - /// - /// byte[] MD5 Hash - /// - public static byte[] FlatStateMD5(FlatJoyState2 state) { - MD5 md5 = new MD5CryptoServiceProvider(); - var StateRawBytes = FlatStateToBytes(state); - return md5.ComputeHash(StateRawBytes); - } + /// + /// Fetches supported FFB Effects by specified Device
    + ///
    + /// + /// string[] of effect names supported + /// + public static string[] GetDeviceFFBCapabilities(string guidInstance) + { + string[] SupportedFFBEffects = null; + int hresult = Native.EnumerateFFBEffects(guidInstance, out SupportedFFBEffects); + if (hresult != 0) { DebugLog($"GetDeviceFFBCapabilities Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } + return SupportedFFBEffects; + } - /// - /// Fetches device state and triggers events if state changed
    - ///
    - public static void Poll(string guidInstance) { - ActiveDeviceInfo ADI; - if (_activeDevices.TryGetValue(guidInstance, out ADI)) { // Check if device active - Int32 oldHash = ADI.stateHash; - var state = GetDeviceState(guidInstance); - ADI.stateHash = state.GetHashCode(); + /// + /// Stops and removes all active effects on a device
    + /// *Warning* Effects will have to be enabled again before use
    + ///
    + /// + /// True if effects stopped successfully + /// + public static bool StopAllFFBEffects(string guidInstance) + { + int hresult = Native.StopAllFFBEffects(guidInstance); + if (hresult != 0) { DebugLog($"StopAllFFBEffects Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - if (oldHash != ADI.stateHash) { - ADI.DeviceStateChange(ADI.deviceInfo, state); // Invoke all event listeners for this device - //DebugLog($"{ADI.deviceInfo.productName} State Changed!"); + /// + /// Stops DirectInput
    + ///
    + /// + /// True if DirectInput was stopped successfully + /// + public static bool StopDirectInput() + { + int hresult = Native.StopDirectInput(); + if (hresult != 0) { DebugLog($"StopDirectInput Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; } - } else { - // Device isn't attached - } - } + /// + /// Returns byte[] of state
    + ///
    + /// + /// byte[] + /// + public static byte[] FlatStateToBytes(FlatJoyState2 state) + { + int size = Marshal.SizeOf(state); + byte[] StateRawBytes = new byte[size]; + IntPtr ptr = Marshal.AllocHGlobal(size); + Marshal.StructureToPtr(state, ptr, true); + Marshal.Copy(ptr, StateRawBytes, 0, size); + Marshal.FreeHGlobal(ptr); + return StateRawBytes; + } - /// - /// Fetches device state for all devices and queues events
    - ///
    - public static void PollAll() { - foreach(ActiveDeviceInfo ADI in _activeDevices.Values) { - Poll(ADI.deviceInfo); - } - } + /// + /// Computes MD5 for FlatState
    + ///
    + /// + /// byte[] MD5 Hash + /// + public static byte[] FlatStateMD5(FlatJoyState2 state) + { + MD5 md5 = new MD5CryptoServiceProvider(); + var StateRawBytes = FlatStateToBytes(state); + return md5.ComputeHash(StateRawBytes); + } - /// - /// Obtains ActiveDeviceInfo for specified GUID
    - ///
    - /// - /// Bool if GUID was found
    - /// OUT ADI of device if found - ///
    - public static bool GetADI(string guidInstance, out ActiveDeviceInfo ADI) { - return _activeDevices.TryGetValue(guidInstance, out ADI); - } + /// + /// Fetches device state and triggers events if state changed
    + ///
    + public static void Poll(string guidInstance) + { + ActiveDeviceInfo ADI; + if (_activeDevices.TryGetValue(guidInstance, out ADI)) + { // Check if device active + Int32 oldHash = ADI.stateHash; + var state = GetDeviceState(guidInstance); + ADI.stateHash = state.GetHashCode(); + + if (oldHash != ADI.stateHash) + { + ADI.DeviceStateChange(ADI.deviceInfo, state); // Invoke all event listeners for this device + //DebugLog($"{ADI.deviceInfo.productName} State Changed!"); + } + } + else + { + // Device isn't attached + } - /// - /// *Internal use only* - /// Used to test C++ code in the DLL during devlopment - /// - // public static string[] DEBUG1() { - // string[] DEBUGDATA = null; - // DEBUGDATA = new string[1] { "Test" }; - // int hresult = Native.DEBUG1(out DEBUGDATA); - // if (hresult != 0) { DebugLog($"DEBUG1 Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } + } - // return DEBUGDATA; - // } + /// + /// Fetches device state for all devices and queues events
    + ///
    + public static void PollAll() + { + foreach (ActiveDeviceInfo ADI in _activeDevices.Values) + { + Poll(ADI.deviceInfo); + } + } + /// + /// Obtains ActiveDeviceInfo for specified GUID
    + ///
    + /// + /// Bool if GUID was found
    + /// OUT ADI of device if found + ///
    + public static bool GetADI(string guidInstance, out ActiveDeviceInfo ADI) + { + return _activeDevices.TryGetValue(guidInstance, out ADI); + } - ////////////////////////////////////////////////////////////// - // Device Events - ////////////////////////////////////////////////////////////// + /// + /// *Internal use only* + /// Used to test C++ code in the DLL during devlopment + /// + // public static string[] DEBUG1() { + // string[] DEBUGDATA = null; + // DEBUGDATA = new string[1] { "Test" }; + // int hresult = Native.DEBUG1(out DEBUGDATA); + // if (hresult != 0) { DebugLog($"DEBUG1 Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); /*return false;*/ } - // Events to add listners too E.g. DIManager.OnDeviceAdded += MyFunctionWhenDeviceAdded; - public static event deviceInfoEvent OnDeviceAdded; - public static event deviceInfoEvent OnDeviceRemoved; + // return DEBUGDATA; + // } - // Functions to invoke event listeners - public static void DeviceAdded (DeviceInfo device){ OnDeviceAdded ?.Invoke(device); } - public static void DeviceRemoved(DeviceInfo device){ OnDeviceRemoved?.Invoke(device); } - // static Action InvokeDebounce; + ////////////////////////////////////////////////////////////// + // Device Events + ////////////////////////////////////////////////////////////// - private static Debouncer ODCDebouncer = new Debouncer(150); // 150ms (OnDeviceChangeDebouncer) + // Events to add listners too E.g. DIManager.OnDeviceAdded += MyFunctionWhenDeviceAdded; + public static event deviceInfoEvent OnDeviceAdded; + public static event deviceInfoEvent OnDeviceRemoved; - /// - /// *Internal use only* - /// Called from the DLL when a windows WM_DEVICECHANGE event is captured - /// This function invokes the necessary events - /// - private static void OnDeviceChange(DBTEvents DBTEvent) { - //DebugLog($"DeviceChange {DBTEvent.ToString()}"); + // Functions to invoke event listeners + public static void DeviceAdded(DeviceInfo device) { OnDeviceAdded?.Invoke(device); } + public static void DeviceRemoved(DeviceInfo device) { OnDeviceRemoved?.Invoke(device); } - ODCDebouncer.Debounce(() => { ScanDevicesForChanges(); }); - } + // static Action InvokeDebounce; - private static async void ScanDevicesForChanges(){ - DeviceInfo[] oldDevices = _devices; // Store currently known devices - await EnumerateDevicesAsync(); // Fetch what devices are available now + private static Debouncer ODCDebouncer = new Debouncer(150); // 150ms (OnDeviceChangeDebouncer) - var removedDevices = oldDevices.Except(_devices); - var addedDevices = _devices.Except(oldDevices); + /// + /// *Internal use only* + /// Called from the DLL when a windows WM_DEVICECHANGE event is captured + /// This function invokes the necessary events + /// + private static void OnDeviceChange(DBTEvents DBTEvent) + { + //DebugLog($"DeviceChange {DBTEvent.ToString()}"); - foreach (DeviceInfo device in removedDevices) { // Process removed devices - ActiveDeviceInfo ADI; - if(_activeDevices.TryGetValue(device.guidInstance, out ADI)){ - ADI.DeviceRemoved(device); // Invoke event listeners for this device + ODCDebouncer.Debounce(() => { ScanDevicesForChanges(); }); } - DeviceRemoved(device); // Invoke all event listeners all devices - Destroy(device); // If device was connceted remove it gracefully - // DebugLog($"{device.productName} Removed!"); - } - - foreach (DeviceInfo device in addedDevices) { // Process newly added devices - DeviceAdded(device); // Invoke event to broadcast a new device is available - } - } - - ////////////////////////////////////////////////////////////// - // Effect Specific Methods - ////////////////////////////////////////////////////////////// - - /// - /// Update existing effect with new DICONDITION array

    - /// - /// DICondition[DeviceFFBEffectAxesCount]:

    - /// deadband: Inacive Zone [-10,000 - 10,000]
    - /// offset: Move Effect Center[-10,000 - 10,000]
    - /// negativeCoefficient: Negative of center coefficient [-10,000 - 10,000]
    - /// positiveCoefficient: Positive of center Coefficient [-10,000 - 10,000]
    - /// negativeSaturation: Negative of center saturation [0 - 10,000]
    - /// positiveSaturation: Positive of center saturation [0 - 10,000]
    - ///
    - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateEffect(string guidInstance, DICondition[] conditions) { - for (int i = 0; i < conditions.Length; i++) { - conditions[i] = new DICondition(); - conditions[i].deadband = ClampAgnostic(conditions[i].deadband, 0, 10000); - conditions[i].offset = ClampAgnostic(conditions[i].offset, -10000, 10000); - conditions[i].negativeCoefficient = ClampAgnostic(conditions[i].negativeCoefficient, -10000, 10000); - conditions[i].positiveCoefficient = ClampAgnostic(conditions[i].positiveCoefficient, -10000, 10000); - conditions[i].negativeSaturation = ClampAgnostic(conditions[i].negativeSaturation, 0, 10000); - conditions[i].positiveSaturation = ClampAgnostic(conditions[i].positiveSaturation, 0, 10000); - } - - int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Spring, conditions); - if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } - - /// - /// Magnitude: Strength of Force [-10,000 - 10,0000] - /// - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateConstantForceSimple(string guidInstance, int Magnitude) { - DICondition[] conditions = new DICondition[1]; - for (int i = 0; i < conditions.Length; i++) { - conditions[i] = new DICondition(); - conditions[i].deadband = 0; - conditions[i].offset = 0; - conditions[i].negativeCoefficient = ClampAgnostic(Magnitude, -10000, 10000); - conditions[i].positiveCoefficient = ClampAgnostic(Magnitude, -10000, 10000); - conditions[i].negativeSaturation = 0; - conditions[i].positiveSaturation = 0; - } - - int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.ConstantForce, conditions); - if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } - - /// - /// deadband: Inacive Zone [-10,000 - 10,000]
    - /// offset: Move Effect Center[-10,000 - 10,000]
    - /// negativeCoefficient: Negative of center coefficient [-10,000 - 10,000]
    - /// positiveCoefficient: Positive of center Coefficient [-10,000 - 10,000]
    - /// negativeSaturation: Negative of center saturation [0 - 10,000]
    - /// positiveSaturation: Positive of center saturation [0 - 10,000]
    - ///
    - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateSpringSimple(string guidInstance, uint deadband, int offset, int negativeCoefficient, int positiveCoefficient, uint negativeSaturation, uint positiveSaturation) { - DICondition[] conditions = new DICondition[1]; - for (int i = 0; i < conditions.Length; i++) { - conditions[i] = new DICondition(); - conditions[i].deadband = ClampAgnostic(deadband, 0, 10000); - conditions[i].offset = ClampAgnostic(offset, -10000, 10000); - conditions[i].negativeCoefficient = ClampAgnostic(negativeCoefficient, -10000, 10000); - conditions[i].positiveCoefficient = ClampAgnostic(positiveCoefficient, -10000, 10000); - conditions[i].negativeSaturation = ClampAgnostic(negativeSaturation, 0, 10000); - conditions[i].positiveSaturation = ClampAgnostic(positiveSaturation, 0, 10000); - } - - int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Spring, conditions); - if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } - - /// - /// Magnitude: Strength of Force [-10,000 - 10,0000] - /// - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateDamperSimple(string guidInstance, int Magnitude) { - DICondition[] conditions = new DICondition[1]; - for (int i = 0; i < conditions.Length; i++) { - conditions[i] = new DICondition(); - conditions[i].deadband = 0; - conditions[i].offset = 0; - conditions[i].negativeCoefficient = ClampAgnostic(Magnitude, -10000, 10000); - conditions[i].positiveCoefficient = ClampAgnostic(Magnitude, -10000, 10000); - conditions[i].negativeSaturation = 0; - conditions[i].positiveSaturation = 0; - } - - int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Damper, conditions); - if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } - - /// - /// Magnitude: Strength of Force [-10,000 - 10,0000] - /// - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateFrictionSimple(string guidInstance, int Magnitude) { - DICondition[] conditions = new DICondition[1]; - for (int i = 0; i < conditions.Length; i++) { - conditions[i] = new DICondition(); - conditions[i].deadband = 0; - conditions[i].offset = 0; - conditions[i].negativeCoefficient = ClampAgnostic(Magnitude, -10000, 10000); - conditions[i].positiveCoefficient = ClampAgnostic(Magnitude, -10000, 10000); - conditions[i].negativeSaturation = 0; - conditions[i].positiveSaturation = 0; - } - - int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Friction, conditions); - if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } - - /// - /// Magnitude: Strength of Force [-10,000 - 10,0000] - /// - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateInertiaSimple(string guidInstance, int Magnitude) { - DICondition[] conditions = new DICondition[1]; - for (int i = 0; i < conditions.Length; i++) { - conditions[i] = new DICondition(); - conditions[i].deadband = 0; - conditions[i].offset = 0; - conditions[i].negativeCoefficient = ClampAgnostic(Magnitude, -10000, 10000); - conditions[i].positiveCoefficient = ClampAgnostic(Magnitude, -10000, 10000); - conditions[i].negativeSaturation = 0; - conditions[i].positiveSaturation = 0; - } - - int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Inertia, conditions); - if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } - return true; - } + private static async void ScanDevicesForChanges() + { + DeviceInfo[] oldDevices = _devices; // Store currently known devices + await EnumerateDevicesAsync(); // Fetch what devices are available now + + var removedDevices = oldDevices.Except(_devices); + var addedDevices = _devices.Except(oldDevices); + + foreach (DeviceInfo device in removedDevices) + { // Process removed devices + ActiveDeviceInfo ADI; + if (_activeDevices.TryGetValue(device.guidInstance, out ADI)) + { + ADI.DeviceRemoved(device); // Invoke event listeners for this device + } + DeviceRemoved(device); // Invoke all event listeners all devices + Destroy(device); // If device was connceted remove it gracefully + // DebugLog($"{device.productName} Removed!"); + } + + foreach (DeviceInfo device in addedDevices) + { // Process newly added devices + DeviceAdded(device); // Invoke event to broadcast a new device is available + } + } - ////////////////////////////////////////////////////////////// - // Overloads - Unfortunately summaries don't propagate to overloads - ////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////// + // Effect Specific Methods + ////////////////////////////////////////////////////////////// + + /// + /// Update existing effect with new DICONDITION array

    + /// + /// DICondition[DeviceFFBEffectAxesCount]:

    + /// deadband: Inacive Zone [-10,000 - 10,000]
    + /// offset: Move Effect Center[-10,000 - 10,000]
    + /// negativeCoefficient: Negative of center coefficient [-10,000 - 10,000]
    + /// positiveCoefficient: Positive of center Coefficient [-10,000 - 10,000]
    + /// negativeSaturation: Negative of center saturation [0 - 10,000]
    + /// positiveSaturation: Positive of center saturation [0 - 10,000]
    + ///
    + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateEffect(string guidInstance, FFBEffects fFBEffects, DICondition[] conditions) + { + for (int i = 0; i < conditions.Length; i++) + { + conditions[i] = new DICondition(); + conditions[i].deadband = ClampAgnostic(conditions[i].deadband, 0, 10000); + conditions[i].offset = ClampAgnostic(conditions[i].offset, -10000, 10000); + conditions[i].negativeCoefficient = ClampAgnostic(conditions[i].negativeCoefficient, -10000, 10000); + conditions[i].positiveCoefficient = ClampAgnostic(conditions[i].positiveCoefficient, -10000, 10000); + conditions[i].negativeSaturation = ClampAgnostic(conditions[i].negativeSaturation, 0, 10000); + conditions[i].positiveSaturation = ClampAgnostic(conditions[i].positiveSaturation, 0, 10000); + } + + int hresult = Native.UpdateFFBEffect(guidInstance, fFBEffects, conditions); + if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Attach to Device, ready to get state/ForceFeedback

    - ///
    - /// - /// A boolean representing the if the Device was attached - /// - public static bool Attach(DeviceInfo device) => Attach(device.guidInstance); + /// + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateConstantForceSimple(string guidInstance, int Magnitude) + { + DICondition[] conditions = new DICondition[1]; + for (int i = 0; i < conditions.Length; i++) + { + conditions[i] = new DICondition(); + conditions[i].deadband = 0; + conditions[i].offset = 0; + conditions[i].negativeCoefficient = ClampAgnostic(Magnitude, -10000, 10000); + conditions[i].positiveCoefficient = ClampAgnostic(Magnitude, -10000, 10000); + conditions[i].negativeSaturation = 0; + conditions[i].positiveSaturation = 0; + } + + int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.ConstantForce, conditions); + if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Remove a specified Device - /// - /// - /// True upon sucessful destruction - /// - public static bool Destroy(DeviceInfo device) => Destroy(device.guidInstance); + /// + /// deadband: Inacive Zone [-10,000 - 10,000]
    + /// offset: Move Effect Center[-10,000 - 10,000]
    + /// negativeCoefficient: Negative of center coefficient [-10,000 - 10,000]
    + /// positiveCoefficient: Positive of center Coefficient [-10,000 - 10,000]
    + /// negativeSaturation: Negative of center saturation [0 - 10,000]
    + /// positiveSaturation: Positive of center saturation [0 - 10,000]
    + ///
    + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateSpringSimple(string guidInstance, uint deadband, int offset, int negativeCoefficient, int positiveCoefficient, uint negativeSaturation, uint positiveSaturation) + { + DICondition[] conditions = new DICondition[1]; + for (int i = 0; i < conditions.Length; i++) + { + conditions[i] = new DICondition(); + conditions[i].deadband = ClampAgnostic(deadband, 0, 10000); + conditions[i].offset = ClampAgnostic(offset, -10000, 10000); + conditions[i].negativeCoefficient = ClampAgnostic(negativeCoefficient, -10000, 10000); + conditions[i].positiveCoefficient = ClampAgnostic(positiveCoefficient, -10000, 10000); + conditions[i].negativeSaturation = ClampAgnostic(negativeSaturation, 0, 10000); + conditions[i].positiveSaturation = ClampAgnostic(positiveSaturation, 0, 10000); + } + + int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Spring, conditions); + if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Retrieve state of the Device, Flattened for easier comparison.
    - ///
    - /// - /// FlatJoyState2 - /// - public static FlatJoyState2 GetDeviceState(DeviceInfo device) => GetDeviceState(device.guidInstance); + /// + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateDamperSimple(string guidInstance, int Magnitude) + { + DICondition[] conditions = new DICondition[1]; + for (int i = 0; i < conditions.Length; i++) + { + conditions[i] = new DICondition(); + conditions[i].deadband = 0; + conditions[i].offset = 0; + conditions[i].negativeCoefficient = ClampAgnostic(Magnitude, -10000, 10000); + conditions[i].positiveCoefficient = ClampAgnostic(Magnitude, -10000, 10000); + conditions[i].negativeSaturation = 0; + conditions[i].positiveSaturation = 0; + } + + int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Damper, conditions); + if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Retrieve state of the Device
    - /// *Warning* DIJOYSTATE2 contains arrays making it difficult to compare, concider using GetDeviceState - ///
    - /// - /// DIJOYSTATE2 - /// - public static DIJOYSTATE2 GetDeviceStateRaw(DeviceInfo device) => GetDeviceStateRaw(device.guidInstance); - /// - /// Retrieve the capabilities of the device. E.g. # Buttons, # Axes, Driver Version
    - /// Device must be attached first
    - ///
    - /// - /// DIDEVCAPS https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee416607(v=vs.85) - /// - public static DIDEVCAPS GetDeviceCapabilities(DeviceInfo device) => GetDeviceCapabilities(device.guidInstance); + /// + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateFrictionSimple(string guidInstance, int Magnitude) + { + DICondition[] conditions = new DICondition[1]; + for (int i = 0; i < conditions.Length; i++) + { + conditions[i] = new DICondition(); + conditions[i].deadband = 0; + conditions[i].offset = 0; + conditions[i].negativeCoefficient = ClampAgnostic(Magnitude, -10000, 10000); + conditions[i].positiveCoefficient = ClampAgnostic(Magnitude, -10000, 10000); + conditions[i].negativeSaturation = 0; + conditions[i].positiveSaturation = 0; + } + + int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Friction, conditions); + if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Returns if the device has the ForceFeedback Flag
    - ///
    - /// - /// True if device can provide ForceFeedback
    - ///
    - public static bool FFBCapable(DeviceInfo device) => FFBCapable(device.guidInstance); + /// + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateInertiaSimple(string guidInstance, int Magnitude) + { + DICondition[] conditions = new DICondition[1]; + for (int i = 0; i < conditions.Length; i++) + { + conditions[i] = new DICondition(); + conditions[i].deadband = 0; + conditions[i].offset = 0; + conditions[i].negativeCoefficient = ClampAgnostic(Magnitude, -10000, 10000); + conditions[i].positiveCoefficient = ClampAgnostic(Magnitude, -10000, 10000); + conditions[i].negativeSaturation = 0; + conditions[i].positiveSaturation = 0; + } + + int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.Inertia, conditions); + if (hresult != 0) { DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); return false; } + return true; + } - /// - /// Returns the attached status of the device
    - ///
    - /// - /// True if device is attached - /// - public static bool isDeviceActive(DeviceInfo device) => isDeviceActive(device.guidInstance); + public static bool UpdatePeriodicSimple(string guidInstance, FFBEffects effectType, int magnitude) + { + DICondition[] conditions = new DICondition[1]; + conditions[0] = new DICondition(); + conditions[0].deadband = 0; + conditions[0].offset = 0; + conditions[0].negativeCoefficient = ClampAgnostic(magnitude, -10000, 10000); + conditions[0].positiveCoefficient = ClampAgnostic(magnitude, -10000, 10000); + conditions[0].negativeSaturation = 0; + conditions[0].positiveSaturation = 0; + + // Try updating first + int hresult = Native.UpdateFFBEffect(guidInstance, effectType, conditions); + if (hresult != 0) + { + // If effect doesn't exist (0x80004004 is HRESULT for E_ABORT) + if (hresult == unchecked((int)0x80004004)) + { + hresult = Native.CreateFFBEffect(guidInstance, effectType); + if (hresult != 0) + { + DebugLog($"CreateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); + return false; + } + // Try updating again after creation + hresult = Native.UpdateFFBEffect(guidInstance, effectType, conditions); + if (hresult != 0) + { + DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); + return false; + } + } + else + { + DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); + return false; + } + } + return true; + } - /// - /// Enables an FFB Effect on the device.
    - /// E.g. FFBEffects.ConstantForce
    - /// Refer to FFBEffects enum for all effect types - ///
    - /// - /// True if effect was added sucessfully - /// - public static bool EnableFFBEffect(DeviceInfo device, FFBEffects effectType) => EnableFFBEffect(device.guidInstance, effectType); + private static bool UpdateCustomForceSimple(string guidInstance, int[] forceData, uint samplePeriod, int offset = 0, uint deadband = 0) + { + if (forceData == null) + { + Debug.WriteLine("UpdateCustomForceSimple: Invalid input parameters"); + return false; + } + + // Create conditions array matching the number of force samples + DICondition[] conditions = new DICondition[forceData.Length]; + + // Set up conditions for each force sample + for (int i = 0; i < forceData.Length; i++) + { + conditions[i] = new DICondition + { + positiveCoefficient = forceData[i], // Force value for this sample + negativeCoefficient = i == 0 ? (int)samplePeriod : 0, // Sample period in first condition only + offset = offset, + deadband = deadband, + positiveSaturation = 10000, // Full range + negativeSaturation = 10000 // Full range + }; + } + + // Try updating first + int hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.CustomForce, conditions); + if (hresult != 0) + { + // If effect doesn't exist (0x80004004 is HRESULT for E_ABORT) + if (hresult == unchecked((int)0x80004004)) + { + hresult = Native.CreateFFBEffect(guidInstance, FFBEffects.CustomForce); + if (hresult != 0) + { + DebugLog($"CreateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); + return false; + } + // Try updating again after creation + hresult = Native.UpdateFFBEffect(guidInstance, FFBEffects.CustomForce, conditions); + if (hresult != 0) + { + DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); + return false; + } + } + else + { + DebugLog($"UpdateFFBEffect Failed: 0x{hresult.ToString("x")} {WinErrors.GetSystemMessage(hresult)}"); + return false; + } + } + return true; + } - /// - /// Removes an FFB Effect from the device
    - /// Refer to FFBEffects enum for all effect types - ///
    - /// - /// True if effect was removed sucessfully - /// - public static bool DestroyFFBEffect(DeviceInfo device, FFBEffects effectType) => DestroyFFBEffect(device.guidInstance, effectType); - /// - /// Fetches supported FFB Effects by specified Device
    - ///
    - /// - /// string[] of effect names supported - /// - public static string[] GetDeviceFFBCapabilities(DeviceInfo device) => GetDeviceFFBCapabilities(device.guidInstance); - /// - /// Stops and removes all active effects on a device
    - /// *Warning* Effects will have to be enabled again before use
    - ///
    - /// - /// True if effects stopped successfully - /// - public static bool StopAllFFBEffects(DeviceInfo device) => StopAllFFBEffects(device.guidInstance); + ////////////////////////////////////////////////////////////// + // Overloads - Unfortunately summaries don't propagate to overloads + ////////////////////////////////////////////////////////////// + + /// + /// Attach to Device, ready to get state/ForceFeedback

    + ///
    + /// + /// A boolean representing the if the Device was attached + /// + public static bool Attach(DeviceInfo device) => Attach(device.guidInstance); + + /// + /// Remove a specified Device + /// + /// + /// True upon sucessful destruction + /// + public static bool Destroy(DeviceInfo device) => Destroy(device.guidInstance); + + /// + /// Retrieve state of the Device, Flattened for easier comparison.
    + ///
    + /// + /// FlatJoyState2 + /// + public static FlatJoyState2 GetDeviceState(DeviceInfo device) => GetDeviceState(device.guidInstance); + + /// + /// Retrieve state of the Device
    + /// *Warning* DIJOYSTATE2 contains arrays making it difficult to compare, concider using GetDeviceState + ///
    + /// + /// DIJOYSTATE2 + /// + public static DIJOYSTATE2 GetDeviceStateRaw(DeviceInfo device) => GetDeviceStateRaw(device.guidInstance); + + /// + /// Retrieve the capabilities of the device. E.g. # Buttons, # Axes, Driver Version
    + /// Device must be attached first
    + ///
    + /// + /// DIDEVCAPS https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee416607(v=vs.85) + /// + public static DIDEVCAPS GetDeviceCapabilities(DeviceInfo device) => GetDeviceCapabilities(device.guidInstance); + + /// + /// Returns if the device has the ForceFeedback Flag
    + ///
    + /// + /// True if device can provide ForceFeedback
    + ///
    + public static bool FFBCapable(DeviceInfo device) => FFBCapable(device.guidInstance); + + /// + /// Returns the attached status of the device
    + ///
    + /// + /// True if device is attached + /// + public static bool isDeviceActive(DeviceInfo device) => isDeviceActive(device.guidInstance); + + /// + /// Enables an FFB Effect on the device.
    + /// E.g. FFBEffects.ConstantForce
    + /// Refer to FFBEffects enum for all effect types + ///
    + /// + /// True if effect was added sucessfully + /// + public static bool EnableFFBEffect(DeviceInfo device, FFBEffects effectType) => EnableFFBEffect(device.guidInstance, effectType); + + /// + /// Removes an FFB Effect from the device
    + /// Refer to FFBEffects enum for all effect types + ///
    + /// + /// True if effect was removed sucessfully + /// + public static bool DestroyFFBEffect(DeviceInfo device, FFBEffects effectType) => DestroyFFBEffect(device.guidInstance, effectType); + + /// + /// Fetches supported FFB Effects by specified Device
    + ///
    + /// + /// string[] of effect names supported + /// + public static string[] GetDeviceFFBCapabilities(DeviceInfo device) => GetDeviceFFBCapabilities(device.guidInstance); + + /// + /// Stops and removes all active effects on a device
    + /// *Warning* Effects will have to be enabled again before use
    + ///
    + /// + /// True if effects stopped successfully + /// + public static bool StopAllFFBEffects(DeviceInfo device) => StopAllFFBEffects(device.guidInstance); + + /// + /// Fetches device state and triggers events if state changed
    + ///
    + public static void Poll(DeviceInfo device) => Poll(device.guidInstance); + + /// + /// Obtains ActiveDeviceInfo for specified GUID
    + ///
    + /// + /// Bool if GUID was found
    + /// OUT ADI of device if found + ///
    + public static bool GetADI(DeviceInfo device, out ActiveDeviceInfo ADI) => GetADI(device.guidInstance, out ADI); + + ////////////////////////////////////////////////////////////// + // Effect Specific Methods Overloads + ////////////////////////////////////////////////////////////// + + /// + /// Update existing effect with new DICONDITION array

    + /// + /// DICondition[DeviceFFBEffectAxesCount]:

    + /// deadband: Inacive Zone [-10,000 - 10,000]
    + /// offset: Move Effect Center[-10,000 - 10,000]
    + /// negativeCoefficient: Negative of center coefficient [-10,000 - 10,000]
    + /// positiveCoefficient: Positive of center Coefficient [-10,000 - 10,000]
    + /// negativeSaturation: Negative of center saturation [0 - 10,000]
    + /// positiveSaturation: Positive of center saturation [0 - 10,000]
    + ///
    + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateEffect(DeviceInfo device, FFBEffects effect, DICondition[] conditions) => UpdateEffect(device.guidInstance, effect, conditions); + + /// + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateConstantForceSimple(DeviceInfo device, int Magnitude) => UpdateConstantForceSimple(device.guidInstance, Magnitude); + + /// + /// deadband: Inacive Zone [-10,000 - 10,000]
    + /// offset: Move Effect Center[-10,000 - 10,000]
    + /// negativeCoefficient: Negative of center coefficient [-10,000 - 10,000]
    + /// positiveCoefficient: Positive of center Coefficient [-10,000 - 10,000]
    + /// negativeSaturation: Negative of center saturation [0 - 10,000]
    + /// positiveSaturation: Positive of center saturation [0 - 10,000]
    + ///
    + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateSpringSimple(DeviceInfo device, uint deadband, int offset, int negativeCoefficient, int positiveCoefficient, uint negativeSaturation, uint positiveSaturation) => UpdateSpringSimple(device.guidInstance, deadband, offset, negativeCoefficient, positiveCoefficient, negativeSaturation, positiveSaturation); + + /// + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateDamperSimple(DeviceInfo device, int Magnitude) => UpdateDamperSimple(device.guidInstance, Magnitude); + + /// + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateFrictionSimple(DeviceInfo device, int Magnitude) => UpdateFrictionSimple(device.guidInstance, Magnitude); + + /// + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing the if the Effect updated successfully + /// + public static bool UpdateInertiaSimple(DeviceInfo device, int Magnitude) => UpdateInertiaSimple(device.guidInstance, Magnitude); + + /// + /// Updates a periodic force feedback effect with specified magnitude + /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// + /// + /// A boolean representing if the Effect updated successfully + /// + public static bool UpdatePeriodicSimple(DeviceInfo device, FFBEffects effectType, int Magnitude) => UpdatePeriodicSimple(device.guidInstance, effectType, Magnitude); + + public static bool UpdateCustomForceEffect(DeviceInfo device, int[] forceData, uint samplePeriod) => UpdateCustomForceSimple(device.guidInstance, forceData, samplePeriod); + + } // End of DIManager - /// - /// Fetches device state and triggers events if state changed
    - ///
    - public static void Poll(DeviceInfo device) => Poll(device.guidInstance); - /// - /// Obtains ActiveDeviceInfo for specified GUID
    - ///
    - /// - /// Bool if GUID was found
    - /// OUT ADI of device if found - ///
    - public static bool GetADI(DeviceInfo device, out ActiveDeviceInfo ADI) => GetADI(device.guidInstance, out ADI); ////////////////////////////////////////////////////////////// - // Effect Specific Methods Overloads + // Utilities ////////////////////////////////////////////////////////////// /// - /// Update existing effect with new DICONDITION array

    - /// - /// DICondition[DeviceFFBEffectAxesCount]:

    - /// deadband: Inacive Zone [-10,000 - 10,000]
    - /// offset: Move Effect Center[-10,000 - 10,000]
    - /// negativeCoefficient: Negative of center coefficient [-10,000 - 10,000]
    - /// positiveCoefficient: Positive of center Coefficient [-10,000 - 10,000]
    - /// negativeSaturation: Negative of center saturation [0 - 10,000]
    - /// positiveSaturation: Positive of center saturation [0 - 10,000]
    - ///
    - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateEffect(DeviceInfo device, DICondition[] conditions) => UpdateEffect(device.guidInstance, conditions); - - /// - /// Magnitude: Strength of Force [-10,000 - 10,0000] - /// - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateConstantForceSimple(DeviceInfo device, int Magnitude) => UpdateConstantForceSimple(device.guidInstance, Magnitude); - - /// - /// deadband: Inacive Zone [-10,000 - 10,000]
    - /// offset: Move Effect Center[-10,000 - 10,000]
    - /// negativeCoefficient: Negative of center coefficient [-10,000 - 10,000]
    - /// positiveCoefficient: Positive of center Coefficient [-10,000 - 10,000]
    - /// negativeSaturation: Negative of center saturation [0 - 10,000]
    - /// positiveSaturation: Positive of center saturation [0 - 10,000]
    - ///
    - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateSpringSimple(DeviceInfo device, uint deadband, int offset, int negativeCoefficient, int positiveCoefficient, uint negativeSaturation, uint positiveSaturation) => UpdateSpringSimple(device.guidInstance, deadband, offset, negativeCoefficient, positiveCoefficient, negativeSaturation, positiveSaturation); - - /// - /// Magnitude: Strength of Force [-10,000 - 10,0000] - /// - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateDamperSimple(DeviceInfo device, int Magnitude) => UpdateDamperSimple(device.guidInstance, Magnitude); - - /// - /// Magnitude: Strength of Force [-10,000 - 10,0000] - /// - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateFrictionSimple(DeviceInfo device, int Magnitude) => UpdateFrictionSimple(device.guidInstance, Magnitude); - - /// - /// Magnitude: Strength of Force [-10,000 - 10,0000] + /// Helper class to print out user friendly system error codes. + /// Taken from: https://stackoverflow.com/a/21174331/9053848 /// - /// - /// A boolean representing the if the Effect updated successfully - /// - public static bool UpdateInertiaSimple(DeviceInfo device, int Magnitude) => UpdateInertiaSimple(device.guidInstance, Magnitude); - - } // End of DIManager - - - - ////////////////////////////////////////////////////////////// - // Utilities - ////////////////////////////////////////////////////////////// - - /// - /// Helper class to print out user friendly system error codes. - /// Taken from: https://stackoverflow.com/a/21174331/9053848 - /// - public static class WinErrors { -#region definitions - [DllImport("kernel32.dll", SetLastError = true)] - static extern IntPtr LocalFree(IntPtr hMem); - - [DllImport("kernel32.dll", SetLastError = true)] - static extern int FormatMessage(FormatMessageFlags dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, ref IntPtr lpBuffer, uint nSize, IntPtr Arguments); - - [Flags] - private enum FormatMessageFlags : uint { - FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100, - FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200, - FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000, - FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000, - FORMAT_MESSAGE_FROM_HMODULE = 0x00000800, - FORMAT_MESSAGE_FROM_STRING = 0x00000400, + public static class WinErrors + { + #region definitions + [DllImport("kernel32.dll", SetLastError = true)] + static extern IntPtr LocalFree(IntPtr hMem); + + [DllImport("kernel32.dll", SetLastError = true)] + static extern int FormatMessage(FormatMessageFlags dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, ref IntPtr lpBuffer, uint nSize, IntPtr Arguments); + + [Flags] + private enum FormatMessageFlags : uint + { + FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100, + FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200, + FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000, + FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000, + FORMAT_MESSAGE_FROM_HMODULE = 0x00000800, + FORMAT_MESSAGE_FROM_STRING = 0x00000400, + } + #endregion + + /// + /// Gets a user friendly string message for a system error code + /// + /// System error code + /// Error string + public static string GetSystemMessage(int errorCode) + { + try + { + IntPtr lpMsgBuf = IntPtr.Zero; + + int dwChars = FormatMessage( + FormatMessageFlags.FORMAT_MESSAGE_ALLOCATE_BUFFER | FormatMessageFlags.FORMAT_MESSAGE_FROM_SYSTEM | FormatMessageFlags.FORMAT_MESSAGE_IGNORE_INSERTS, + IntPtr.Zero, + (uint)errorCode, + 0, // Default language + ref lpMsgBuf, + 0, + IntPtr.Zero); + if (dwChars == 0) + { + // Handle the error. + int le = Marshal.GetLastWin32Error(); + return "Unable to get error code string from System - Error " + le.ToString(); + } + + string sRet = Marshal.PtrToStringAnsi(lpMsgBuf); + + // Free the buffer. + lpMsgBuf = LocalFree(lpMsgBuf); + return sRet; + } + catch (Exception e) + { + return "Unable to get error code string from System -> " + e.ToString(); + } + } } -#endregion /// - /// Gets a user friendly string message for a system error code + /// Only execute an Action after it hasn't been called for a timeout period
    + /// Setup: private static Debouncer DebouncerName = new Debouncer(300); // 300ms
    + /// Invocation: DebouncerName.Debounce(() => { Console.WriteLine("Executed"); });
    + /// Source: https://stackoverflow.com/a/47933557/3055031 (Modifed) ///
    - /// System error code - /// Error string - public static string GetSystemMessage(int errorCode) { - try { - IntPtr lpMsgBuf = IntPtr.Zero; - - int dwChars = FormatMessage( - FormatMessageFlags.FORMAT_MESSAGE_ALLOCATE_BUFFER | FormatMessageFlags.FORMAT_MESSAGE_FROM_SYSTEM | FormatMessageFlags.FORMAT_MESSAGE_IGNORE_INSERTS, - IntPtr.Zero, - (uint)errorCode, - 0, // Default language - ref lpMsgBuf, - 0, - IntPtr.Zero); - if (dwChars == 0) { - // Handle the error. - int le = Marshal.GetLastWin32Error(); - return "Unable to get error code string from System - Error " + le.ToString(); - } - - string sRet = Marshal.PtrToStringAnsi(lpMsgBuf); - - // Free the buffer. - lpMsgBuf = LocalFree(lpMsgBuf); - return sRet; - } catch (Exception e) { - return "Unable to get error code string from System -> " + e.ToString(); - } - } - } - - /// - /// Only execute an Action after it hasn't been called for a timeout period
    - /// Setup: private static Debouncer DebouncerName = new Debouncer(300); // 300ms
    - /// Invocation: DebouncerName.Debounce(() => { Console.WriteLine("Executed"); });
    - /// Source: https://stackoverflow.com/a/47933557/3055031 (Modifed) - ///
    - public class Debouncer { - private List CancelTokens = new List(); - private int TimeoutMs; - private readonly object _lockThis = new object(); // Use a locking object to prevent the debouncer to trigger again while the func is still running - - public Debouncer(int timeoutMs = 300) { - this.TimeoutMs = timeoutMs; - } + public class Debouncer + { + private List CancelTokens = new List(); + private int TimeoutMs; + private readonly object _lockThis = new object(); // Use a locking object to prevent the debouncer to trigger again while the func is still running + + public Debouncer(int timeoutMs = 300) + { + this.TimeoutMs = timeoutMs; + } - public void Debounce(Action TargetAction) { - CancelAllTokens(); // Cancel existing Tokens Each invocation - var tokenSource = new CancellationTokenSource(); // Token for this invocation - lock (_lockThis) { CancelTokens.Add(tokenSource); } // Safely add this Token to the list - Task.Delay(TimeoutMs, tokenSource.Token).ContinueWith(task => { // (Note: All Tasks continue) - if (!tokenSource.IsCancellationRequested) { // if this is the task that hasn't been canceled - CancelAllTokens(); // Clear - CancelTokens = new List(); // Empty List - lock (_lockThis) { TargetAction(); } // Excute Action - } - }, TaskScheduler.FromCurrentSynchronizationContext()); // Perform on current thread - } + public void Debounce(Action TargetAction) + { + CancelAllTokens(); // Cancel existing Tokens Each invocation + var tokenSource = new CancellationTokenSource(); // Token for this invocation + lock (_lockThis) { CancelTokens.Add(tokenSource); } // Safely add this Token to the list + Task.Delay(TimeoutMs, tokenSource.Token).ContinueWith(task => + { // (Note: All Tasks continue) + if (!tokenSource.IsCancellationRequested) + { // if this is the task that hasn't been canceled + CancelAllTokens(); // Clear + CancelTokens = new List(); // Empty List + lock (_lockThis) { TargetAction(); } // Excute Action + } + }, TaskScheduler.FromCurrentSynchronizationContext()); // Perform on current thread + } - private void CancelAllTokens() { - foreach (var token in CancelTokens) { - if (!token.IsCancellationRequested) { token.Cancel(); } - } + private void CancelAllTokens() + { + foreach (var token in CancelTokens) + { + if (!token.IsCancellationRequested) { token.Cancel(); } + } + } } - } -} \ No newline at end of file +} diff --git a/Plugin/DirectInputTypes.cs b/Plugin/DirectInputTypes.cs index 36600ba..bc8f9da 100644 --- a/Plugin/DirectInputTypes.cs +++ b/Plugin/DirectInputTypes.cs @@ -17,14 +17,21 @@ public enum FFBEffects { Damper = 8, Inertia = 9, Friction = 10, - CustomForce = 11 - } + CustomForce = 11, + } - /// - /// Types of OnDeviceChange DBTEvents
    - /// More info: https://docs.microsoft.com/en-us/windows/win32/devio/wm-devicechange - ///
    - public enum DBTEvents { + public struct CustomForceData + { + public int[] ForceData; // Array of force values + public uint SamplePeriod; // Time in microseconds between samples + public uint Channels; // Number of channels (typically 1) + } + + /// + /// Types of OnDeviceChange DBTEvents
    + /// More info: https://docs.microsoft.com/en-us/windows/win32/devio/wm-devicechange + ///
    + public enum DBTEvents { DBT_DEVNODES_CHANGED = 0x0007, DBT_QUERYCHANGECONFIG = 0x0017, DBT_CONFIGCHANGED = 0x0018, From da616ca65d5beff4c2cd40aac565ed0a0dc8f621 Mon Sep 17 00:00:00 2001 From: Dan <90098128+imDanoush@users.noreply.github.com> Date: Wed, 25 Dec 2024 01:15:34 +0100 Subject: [PATCH 02/13] Update README.md Added new info for hardware support as well as new features based on the latest code update --- README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c124673..e9c176a 100644 --- a/README.md +++ b/README.md @@ -30,32 +30,35 @@ Next, install this package: | Effect | Supported | |---------------|-----------| | ConstantForce | ✅ | -| CustomForce | 🔲 | +| CustomForce | â„šī¸ | | Damper | ✅ | | Friction | ✅ | | Inertia | ✅ | -| RampForce | 🔲 | -| SawtoothDown | 🔲 | -| SawtoothUp | 🔲 | -| Sine | 🔲 | +| RampForce | ✅ | +| SawtoothDown | ✅ | +| SawtoothUp | ✅ | +| Sine | ✅ | | Spring | ✅ | -| Square | 🔲 | -| Triangle | 🔲 | +| Square | ✅ | +| Triangle | ✅ | -[comment]: <> (✅ 🔲) +[comment]: (✅ â„šī¸ 🔲) ## Compatible Devices | Peripheral | Test Status | |------------------------------------|----------------| +| [Fanatec CSL DD (Both PC & Comp mode + 8NM Kit)](https://fanatec.com/eu-en/csl-dd-8-nm) | ✅ Verified | | [Fanatec CSL Elite](https://fanatec.com/eu-en/racing-wheels-wheel-bases/wheel-bases/csl-elite-wheel-base-officially-licensed-for-playstation) | ✅ Verified | | [Fanatec CSW V2.0](https://fanatec.com/eu-en/racing-wheels-wheel-bases/wheel-bases/clubsport-wheel-base-v2-servo) | ✅ Verified | | [Fanatec WRC Wheel Rim](https://fanatec.com/eu-en/steering-wheels/csl-elite-steering-wheel-wrc) | ✅ Verified | | [Fanatec Formula V2 Wheel Rim](https://fanatec.com/eu-en/steering-wheels/clubsport-steering-wheel-formula-v2) & [APM](https://fanatec.com/eu-en/shifters-others/podium-advanced-paddle-module) | ✅ Verified | | [Fanatec CSL LC Pedals](https://fanatec.com/eu-en/pedals/csl-elite-pedals) | ✅ Verified | +| [Fanatec ClubSport Pedals V1](https://www.youtube.com/watch?v=jw52Dq3SZaA) | â„šī¸ No ABS Vibration | | [Fanatec ClubSport Pedals V3](https://fanatec.com/eu-en/pedals/clubsport-pedals-v3) | ✅ Verified | | [Fanatec ClubSport Shifter SQ V 1.5](https://fanatec.com/eu-en/shifters-others/clubsport-shifter-sq-v-1.5) | ✅ Verified | | [Logitech G29 / G920](https://www.logitechg.com/en-gb/products/driving/driving-force-racing-wheel.html) | ✅ Verified | +| [Thrustmaster TX(?)](https://shop.thrustmaster.com/de_de/tx-racing-wheel-leather-edition-eu.html) | ✅ Verified | | [PRO Racing Wheel](https://www.logitechg.com/en-gb/products/driving/pro-racing-wheel.html) | 🔲 Untested | [comment]: <> (✅ 🔲) From e9b50d5d3c6fdd72ac00d38902eb84e1b2bd82de Mon Sep 17 00:00:00 2001 From: Dan <90098128+imDanoush@users.noreply.github.com> Date: Wed, 25 Dec 2024 01:18:22 +0100 Subject: [PATCH 03/13] Update README.md --- README.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index c124673..2525805 100644 --- a/README.md +++ b/README.md @@ -30,32 +30,35 @@ Next, install this package: | Effect | Supported | |---------------|-----------| | ConstantForce | ✅ | -| CustomForce | 🔲 | +| CustomForce | â„šī¸ | | Damper | ✅ | | Friction | ✅ | | Inertia | ✅ | -| RampForce | 🔲 | -| SawtoothDown | 🔲 | -| SawtoothUp | 🔲 | -| Sine | 🔲 | +| RampForce | ✅ | +| SawtoothDown | ✅ | +| SawtoothUp | ✅ | +| Sine | ✅ | | Spring | ✅ | -| Square | 🔲 | -| Triangle | 🔲 | +| Square | ✅ | +| Triangle | ✅ | -[comment]: <> (✅ 🔲) +[comment]: (✅ â„šī¸ 🔲) ## Compatible Devices | Peripheral | Test Status | |------------------------------------|----------------| +| [Fanatec CSL DD (Both PC & Comp mode + 8NM Kit)](https://fanatec.com/eu-en/csl-dd-8-nm) | ✅ Verified | | [Fanatec CSL Elite](https://fanatec.com/eu-en/racing-wheels-wheel-bases/wheel-bases/csl-elite-wheel-base-officially-licensed-for-playstation) | ✅ Verified | | [Fanatec CSW V2.0](https://fanatec.com/eu-en/racing-wheels-wheel-bases/wheel-bases/clubsport-wheel-base-v2-servo) | ✅ Verified | | [Fanatec WRC Wheel Rim](https://fanatec.com/eu-en/steering-wheels/csl-elite-steering-wheel-wrc) | ✅ Verified | | [Fanatec Formula V2 Wheel Rim](https://fanatec.com/eu-en/steering-wheels/clubsport-steering-wheel-formula-v2) & [APM](https://fanatec.com/eu-en/shifters-others/podium-advanced-paddle-module) | ✅ Verified | | [Fanatec CSL LC Pedals](https://fanatec.com/eu-en/pedals/csl-elite-pedals) | ✅ Verified | +| [Fanatec ClubSport Pedals V1](https://www.youtube.com/watch?v=jw52Dq3SZaA) | â„šī¸ No ABS Vibration | | [Fanatec ClubSport Pedals V3](https://fanatec.com/eu-en/pedals/clubsport-pedals-v3) | ✅ Verified | | [Fanatec ClubSport Shifter SQ V 1.5](https://fanatec.com/eu-en/shifters-others/clubsport-shifter-sq-v-1.5) | ✅ Verified | | [Logitech G29 / G920](https://www.logitechg.com/en-gb/products/driving/driving-force-racing-wheel.html) | ✅ Verified | +| [Thrustmaster TX(?)](https://shop.thrustmaster.com/de_de/tx-racing-wheel-leather-edition-eu.html) | ✅ Verified | | [PRO Racing Wheel](https://www.logitechg.com/en-gb/products/driving/pro-racing-wheel.html) | 🔲 Untested | [comment]: <> (✅ 🔲) @@ -63,7 +66,7 @@ Next, install this package: ## Environment -This plugin only works on Windows 64 bit. +This plugin only works on Windows 8+ 64-bit. Latest verified Unity version: 2022.2.1f1 @@ -73,8 +76,8 @@ Occasionally calls to EnumerateDevices will take orders of magnitude longer than # Support -If you're having any problem, please [raise an issue](https://github.com/MrTimcakes/Unity-DirectInput/issues/new) on GitHub. +If you have problems, please [raise an issue](https://github.com/MrTimcakes/Unity-DirectInput/issues/new) on GitHub. # License -This project is free Open-Source software, and is released under the LGPL-3.0 License, further information can be found under the terms specified in the [license](/../../blob/main/LICENSE). +This project is free Open-Source software released under the LGPL-3.0 License. Further information can be found under the terms specified in the [license](/../../blob/main/LICENSE). From ba0898b22c35c0faa96925e0652c3376fd46dd15 Mon Sep 17 00:00:00 2001 From: ATG-Simulator <16223109+ATG-Simulator@users.noreply.github.com> Date: Wed, 25 Dec 2024 01:22:22 +0100 Subject: [PATCH 04/13] Added the correct demo app --- .../DirectInputExplorer.deps.json | 23 ++++++++++++++++++ .../net5.0-windows/DirectInputExplorer.dll | Bin 0 -> 74752 bytes .../net5.0-windows/DirectInputExplorer.exe | Bin 0 -> 126464 bytes .../DirectInputExplorer.runtimeconfig.json | 9 +++++++ .../net5.0-windows/DirectInputExplorer.dll | Bin 0 -> 74752 bytes .../obj/Debug/net5.0-windows/apphost.exe | Bin 126464 -> 126464 bytes .../ref/DirectInputExplorer.dll | Bin 0 -> 15872 bytes .../refint/DirectInputExplorer.dll | Bin 0 -> 15872 bytes 8 files changed, 32 insertions(+) create mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.deps.json create mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.dll create mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.exe create mode 100644 DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.runtimeconfig.json create mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.dll create mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/ref/DirectInputExplorer.dll create mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/refint/DirectInputExplorer.dll diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.deps.json b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.deps.json new file mode 100644 index 0000000..b059cc1 --- /dev/null +++ b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v5.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v5.0": { + "DirectInputExplorer/1.0.0": { + "runtime": { + "DirectInputExplorer.dll": {} + } + } + } + }, + "libraries": { + "DirectInputExplorer/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.dll new file mode 100644 index 0000000000000000000000000000000000000000..477d40ba1761ead5528f2e09c2e218208433bb22 GIT binary patch literal 74752 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

    c8qpu z7viyIAn7>nxKV2Mc(!WF$&g!RIS#^QZC`Bj9N%@UE|10@%zDc(ewAaV>;{Zx6&TNW zrOI;?>YxrgRJ%a2LGE-_9MaQ?nHKuzwp$#jqxh-X@u76I#CkMJwGLdX;S7hC4~r_e zE{9Kz+(I-3TDe6@U_)e@gx%sCgmz8M zwpcrQZlv|k5usZ4kiDqm8gNh8lzL_u_5>+Dl|WXx8Sy#{^Ei?}+} zjk@N_&x}T?5+g3d_9EAvNPjc9(Ec4rp_p4PQr`e+C}k}yT(Tt9;zq&M;Uv`w`1~T{RzznyGMqm_*4|U>z07S6!5Y5?K8; z=pEW`l0nY7^nU}id=q9`O5ZGzwd5?x4x~*kJ@@#tEnOjPUBa&Gezq4WZbVCAdr#b5 z=r){O7InvP2(+YBR*|!iqw*d{wM@=bVktdRmrP-+Je*n525V`k-8&HGh8CMF;aW=C z39EL~Npu+HZI$yIa^ZZ1WBwJ8nKP0$)NbsLlK4XMCg=5^mzcKgjr7*GD0y7Nz-RkJs6j!O-)&r;XAFL5N{U4xQVkDlsYfn!Kw2E@5JYmwtJM?KmL&Ulg~ zD?w?OXtV?c70WWmUC{-)wNw=X()r5f4w<9uwD`)pUP3C)Me8e z(>W{rr|OSoR4XaEw5en5YN<4OuNtHI8j4XLO zerlet>V&1$EuF2A8c~;C@6&#@?kB`S9bjTTs<2h)u~79f-Sgh4780$2EdQAHS&CY! zGiS(u&i2W5lU*|-u37_B{{iF}MM+x`tJXylmO}OB^s52d60sG{o()G)hD5Ik;hsp% zDH57t`#y-;xsY75S6)h_y;JK3Y%gkTnp;BlyTq&~VLMZ6P}xOYzsbF3_MAl9Bi&NC z2BFq!)V+L_zTcVY7Jwi#5SV>Ifp!yA0ty8TS zYjcy?57vXL2e20Ryu9=}8}qvyJ&&uCx=;C1#uBw+pcrX++GKB4tBthoRr0QaQn00{ zJ9MQ9mRz+?wjAn&tLurG$J`c~eTFmF7GREUY826Tm|COhxpK8uNoUoj(&vSwQE>?? zlv*10u(`^v%4?M;1dS(bKm$rb&FJyNIv-`e)-^e$?L__0mFFL?@40ePIqLPzI@F^c zp;YTtnwh(I>UCeP%Bs3j`bh1y)F5e&0A|mq^u0u)y>mv!mZ0h}-Tgmf6LSrY$3Cv)e0k6JY#1!vvr zsy2Bf?pxR!bsk(FOss#*MMF+oO)cuXpJXn0FWVv!SH{$xn(7HRL7pZ^Nvo&RwW9Ra zIgPfzZ+1R0yC$NLfHlot#nE2RXH|RP`YK(zJtU7tYW?KTS3hbrPhTUdUjF>$rRG}E z+PQ|xQAL+Dv5Kkd&RX_ArClDzXq$Td=gULOl9<&cW)|#WYR;kW+|-Opt^BaQ+2Z-6 z*LrP$Ciq0R9I}>UU3>#zJ^BsjV_YW>VZKm?cv{5(e!PQKvFj1u1X{M>3b+E2TJu)+ zLibD^$~Ard)bnxGj?`Gec?kPk@?9)@0b@8nWx3n%Q%~WWkss%!nu5;(I7YIJZrp3R z<<||kuC4BF-))L;ZFy+@#x+ofn+7ig$x zYFfMQ+A>e5A`sl@DZe%tT(_}&!-j@+jTP#lf#T`*#f@!=5-Qg`Gr)ZBd*c;CBj zZXo7Ft;wcl$2Mi?cw7F)b`F|Kt-j`lZrzux~iQOh{HsAmGQ$?B@GV>c&c=A<+ z&zSrb-%4SvmdYR7#Kfm<0^hQkGh4=-x5Q6d+)P9s`eNIXVfZ6o>t*%De`FKYpRoyi zE5}Nb0C%j)a@H=8(vczlD$N|NMe{*#vYX}HtnPhOgf zHGlHAURGZh(o}yIt*##Ak75g@ogb1Ns^m# zoVUa~;}@2LJk!a+e5{w%H;pv);EQh=SxJ)Ilp}13?|B0`$TOWB%*T3JeO+ivlZeN+ zldL33Zt|SA#Je6$-!8~YbFtP3`CBimFOI(C2S0qH$x4#sW=xkQ{+Pv0Lh{g;HDB_z zURK{3q&bK9u@o9jPg=g0Hf4z~c*rIy0n9%RJl93utUF#-d6=K|ng(6E`f5(Yn<>e& z+Y%pEN;?ieso`mpS6_DC}ZX4Yy$5>Gg;b;<*K*D zcfmcE?IQ#7Os6;IW4)}tDYVTqh>xexSn0`g(h@%ncRKq=UYd839xQ1!U(&H1RrKl< zuyJs|QQa{;j{Zv9j@%Yrq)Tu{KS7!?#N%CRM$Nhynh7{#iJyl1&B{cE%!6g(Wi3DR zwO&?V9BHZ_wh6prZ6%p;Gn732miS|EzZpG|ce?(@{H#}!?M^%WycGx-DNx){@KiSMzvnT9;{Wvv(TwO&@A`$w?kemyM2$fNj9+Btli z?YlyJ4)BrdY$Ee|n-~DRSZNdCt>B5-tsAHZFVL;}2c+L@6aRvj2`6`;J%eZM-m1Mt zx873q%S$qDyz8TP+<3$p9ik*vn+^mH`1r|{18WaN4`5?-OH-gR7Cq3>aNB_+E$t;; z8_G*-@lp|9KRD3X5ead_^MS_JmIL^1jC5mDbbBy>uLXq;XgV{hG#qR|7V>JuKY!|EeyT?2JuJ!C|&Rd0&6x8JoPPHpAADZVX|Twn}p#_$}$f)RStzYNPuk z<^veCN>!F}-d{}p%O)O?^S?2$GW~MV!3$g1j~8i68~EicUWWWGE&8XdBjGm0s|fYg zR^eziN$@BC<>om=UeGD>%IAr^GFSMV9X1VmD!vkb8v%|Snx@ho{>AZUA9tKXZZ?M@ z9A$>bmSq=ND3d47i%OnwD> zf-JrYXYm7Yj4;2fX6!&5FXw-E8UJlY_A8>?sJCC|sIZqnm${4VViDwBRJK6MJAq`y z-^JhW0Xf;Leu!?pVUhw*@lR~QpNoHP{(10c4Cf%vLbD7kbKVH-ZXy1R#Ugj{Jh3?F z7K_U-6^m^}VnG<+)dNihqKmiU?*`K4RDzM+FPaTg7hYQ)^hjOSL6^`8^=Vt=5Q~D4 z6@JQVn`aaA8c?WghsZ9^7TFP{jlz8BGh%q|c@6fAvaN86#dV7yLylM+$(hU!FYwRA zS#(ahCLm7pck%bHQm$zSq$@MPW0g}ZEiVvDU$JN%I=7G7u>T4=UkFDYz{onW7|qxI z_r}N39YmpLfw;7Mzqr%}lRt&LC$h$^bykHWwcua88;&7BkxakUxruC^a!9l_Qz7Mh z%D$-z3yA)93il03mZ?I@q-UN=YFBAYpYziO$%|h%p0js3YO^lM{ZXQ_Cjv$87~! z_y!{Y;ROgUD3j8Ja|<1!uq=OaNqDh8*X#1Io=-!Z;-~QU9KezDI$QIVm|I*^jb+8L ztnV8^`)3@Jq6pInQ3!hWL8hAmxzxdL;4q4e!jv{inmiaGNpmqA#sQ-+rHz&A_$`cI zZ9oMgm8M?P1W0p-k-OA^_P0PRtz8_>^}D>x=T1Zw-;2Ko0NGAw4r{pV1ZGc_?K@DG z;;i|G$aCE0EVm!yJ07b4%t!xmibb^x!nrAOoh3iE{TJY{SBN~;4a@#j;G%3%6a>^Q z5Jlx#qNuE3YUyO&#Nu&RI9K++1tPmlwQR~(@OkiBfxl9KJ&Sgvr|iUyutUyWhVdTz zb+AH(MNaTqB#I)E*EmbYv~@^Q5x`$3;C+CsEcYHvIX1nz8~>h)_sCvpw>#dAI3u^4 zbHeow*DwU`b>tiNdPkkTHLFtCvJBc%ueJWhkVMwa6HI%ZVU0VBApf^zxKO%rimY0P zw2S8vT>MMMJwm&B?j|VtI?7SXzpNTjYE;>a9o0~CQlD{yT;_Kr9QLckHt00nI8lx0 z;5-I z`e+{d=o0kN#p2TEq^`XjFUFDPHV_s+1IPCO4%t6@%FfoKbh4LvotcLHTaJTzIrnFU=lh*r+VM)z z7Z%SK%Yzq*<>kx8a$BB|R^GHj{a|xHd43*_F9VbvipvsCX5TGVXBe&a-?5CFq`oh6 z!tUh3<}4BU&zYPc+Z2*Yef1YUaliCcLLz~g)f{jb{o0hBR!VWwDEez{m^ zTP4u8q-{S7lHwQe_aeZa#X(l}ai>QtH!=5qdlN4S=vzr$YeXh8PZ}8K$Q*l5tZl7+LbBX#!7q0FmT5}9(ln< zmv9Me#s?S123I6o+RUQAg+5o~?`nXN(?q>&%rHdm61!MZK3^;;TO{eKNVgk*^#FU$ zeV{9S0)O^%MuVI~k@s^m^Df!0xn00hMIHR*V>KWGri=yG>LDV;a5P9wq=Uv#Jus$u-%{GF{E9t z2b+h;GXO^i0PO>VdR$hL&2WBS)Em#+J7u4g@|9nLHn22p8|X#yLGl`bC{$Ggw!2;_n#X z0YH`-gFO{{W=3JdFzh{uLQQj7=(Wu3_le)yziSwO;VjO=$eg=mo>&rGhPIb4mcUMA zhgH9S8fl83#otQ+XU@S!f$J!8ioHSmf zK2~GQ#5lQNYX0QBiJ4xb?tekHlJ@QaIKBWd?VZfGQjHu9w0CzYduKCTUl1{Sv*Vde z`-JnhtdAQ`c?`CiORU0N;xf!7E=ih8yb88Ipj^L$WAT%E&SY9pTZZgc56JiJa0E#&$0@(8G1w5)SUmeaagFg}hJBymSeRk| zjhc_h`@L-3?=676z6;%*{roBr%)XT`KdtRKv5`FZp{>hJok% z_A&p+axy`AI0@+Xam zy~cTPepX3lc5Tk4tofPQ_W(^fH`e~~@4!Tx0=ezJY`;Dy` zB4T_b1NV|#o13TB=6KJKxsP6l%H`Y|hw|jr0fR=b{S}RK{)4}30EWB=_SM!!D4@d-c1Rrp8d?DCUTDm?L5>jPpbk zMa*ZKl|np;i6H&&{UyR)5u#-~@&L9ONRGM8e7TO1SQ{X{0s4F_jxNXj$X%c(-UIMk z{4%`gjj}2*=JD}V%xk7G4JjSFJ|&${z98rcy~fi-_5j%^MLEB6qdBx z6s;{E_lGgwBhEuv93sCgcT$xT<0#}=bU#-)aUW&aMaEL$F#I-I7rK0gEkhUxw}Fab z66E@d3+pRb4*?HzO+>D**e=P!xRE0+DO)~OFu8OhPp*`>yoFc8hBxOxml&g_vL~}9 zoa2sgrXN;VjJ-|O-@_g}FI$Uc6g&$f{@NPY7vK}{^Fq&2>(8}@w~*^_wtTKD&v2sd zI0t_P&!x6pZ4=K!AH?)O0i0p-*?5gjTo2Ik+OOl)`q4s^4{Jy%>qoYWV0VJJf2+g& z8}5}ZdPU9q=F5AHY}7T%i8L6arj|_RPUyC|vcM+(vQV|_j{+YB5VK^&^V8ImZVTT; z{MO})_GaM1tFWeJTRUq$&bG(Ovn|hp&BznWA6Yt;H@SGiHLmW1)ja-+wCReKiW7AV zxp>X2>9cR5Kd1WVTh`^YyjxJ8VZb=_O{}lpCCYXD=|q^0WB(ohI_A!J4wHK6bQ5XP zad4eNc){1wrzJ1$x#Fdt?-nrZhcYPXk9)*;S?Ri8N+OXSEsr00re2h%8{rp{hkLJh zS@U^4jXXM^Gjrr~{tfcs-m27mp1eSLJbypCJgk@S8`Mkl9O=3do~}Om%so}E`>ssR zn|iE9zH_w+%5{7Wxz42UF9xlXm7a3V=r@i0B-Qb*G;Nac+|$F$T94Ca8$x8?Sg-SZ)@ojd{{i=q7iYap}^tLti12cnDd*fVmCSMXvepyJKFg{>iq$ncZM_CZWiyC z(rw3wv_rya-;FP9w`{`^X>}bp<0Q51%>ld<#~KjqmPgNhnDW1*;& z_MbCqIs(C(mIi!i_vlt3o+cd&xK$sMcag11egr*L^eY`Yv$~EM3B+K=uISAjM>dpe zC5i7@bC7x7xTAK@j+%94>ccJ{G)0Z(trx^l%@K&kPNOTT0rZCETA0y_7^capqrJsHAmm$=VW+Yz!$BI5eQ8;{x%` zp+MLgEoPp9%iJ=kB3lVkbHQMKEu{Db`_o{q@QP=IoIapVGeuJ|P4q~$&ois-PQ{q3Eh$Wd=7A`hd)!F=00 z&{mN7)znF4@|)%e6t)a%S)PPfhi0}lO6y0LxXYsLy)`fz)jWvr*VKbj z0Ce~t^m!ZWI+%*_$o*aR+CWPbV@abv2oq=^?~~_L@Kg*O(V+~uj?ssR z;!rpr?Wp?3KF;s zQqc_o9xzF*%Q7lbv-Y7m=8L-U$*gTEXF1GJl0!JJ(d@h819C(NABEZfZ+!7yoHOSv zvyA%Q{Mm!<=bE1X!yn2X`qz>NaEMFiaYaB{uC=UjE5DdlSk1l@YY=9vTtC!q;twr0 zp13XGu86$rqek98#mknw_Qa2VF}kkc=Wi?d)~ZKu8}%QxRgxFiA$SGXRWvqMlwDgA zT36mwQeM7(UCG8^Q+dhS(6t*kgf=#<4dTo6ma9sh@4KrV(~KQm;a1E=B9^b`SqR^9 zzNLY;H1I!81NyrPa~1smSA0c_vU6IF((AYG*SAy{_~e=Hm6-ikRw{~g^sOC-S}-{B z_I8FeEuB0qA(=289Zn_obu{_pA;+3wIy#(?fI-)s0-A*B=y+lRrWlp_tOU)IB}zwc z-VP-RnvRb7%c-4(VLCc>h;kCUwE2=B&xWwDOH1cdbLk|8>GDn0&0OV`<=~kXazdic zw6MxBS32KLoX-`L$5qUbr<221)6v+{7Oqs2pBYlJO% z$yZ5?)6uKxHqTE>kfx#AfBh;+S?Rm^jp*7t+k6<|L5W1>Ngue|_vy2%5U~&3ungpj zMQ~_SbcUzm{3iH^d5<`gEUmueT?E%WbSIUX{jc@s!ULqM0SAWhz8>(~O}8KT{ieGI z_-{@3IPi~6_Z09ly!XkpZs1DO?Fa5Q-Fz>!1N$oEJ9oej04hP>3+%wNAG-MrXp`y2 zxx?ZiKsCb80rUA;9o)oxrbT+t_c-vqc+SS~9^lUdnD6tzeEvpxh&{_yIPtBf`vCAi0-hv2@F8r& zw2xrV0`NZpDCarg(?!^4gm9b#E`9(Yf1Cv_-U+BfIL-qXFPd)L{)uWpGs1Bmxac?C zI0Ib#8qkGsEIx@YKsVC@KL_Z6dlES2#xp{O1AiaDa!mp+S)ugf2KE7-1dSi~Ie;uL z@K-Mr;w6MX4ZIzj%8T&&6gQVg0pEi=2K;#s>Iv>~;4iI3+EZ`?uU?0;z>V8pQM3U% zhnu(rGj{Ut2EM*Rh+_z^1m;l+bQ4z+K*Lv>K4-dnf#0`D$$t#^^|zs1pg+DDG5{vw zehl~p0MniW4sB6-<2K=^0Sw2PS^_WeNIl@3EAaq;x;+8>E5PgEGY#B#y%6p(yn_k6 zpc3y~!<`M>VYrvTL381R+bpij_T1N<<6_1F(wxE*zd@FL*9Hr+kIYpN8D2l#Qo zY0#Voeg?pHau)cO9ndqv4*-7(@8?p7CxBN}qh1ic3V7`^qp;lzApNqipk zz+VQC=Q!|byoywTaN_>}Fr2R^UAhPQL^xmIxe@Rr+%>>20;so_fIWP92yWsR0MCPl zFBDzm#k1%~P)6W~0Uo&ffqx6|!~HsNpjOHD81O(Hp4TIM82E~P_*M#i5+U7u72nih!R16h8_XfH(i83MbwTApM=d58Q(Cg60J9Kivu)k{;N9 zK+zMw@DA+NVmR=_e(c$TyC3*h0oX2VL!AcBY6Ks+vw=SisE0ca%rS{4-UIyeJ78bno&xTB7t+Gr5B$IGL|?)i3O&Gk-;H{QyAJq^?}2{d z9tVEMd(rpc_5;`6h4xH0aP422Zs5*)U?Z@_zZ>}D_bPWB_|*H9dkpw1?^o_|;CUZJ z8A0y?ej9*guLO>m?rz{mO!qkO6(3Uly&8BLK>3Ns?o)2!f9Zj)z;hD#uRadh;C6ok z;|qW`^B&-Tr06il7KHw9dGW#9y@c&kB;-8*S{r6?y2S20g zw-@+#pH*%VhaCX)gU@N;Jr6=QxV^y7K7_Jk>pC~s8=q6w&oxr~Zbiw^P zaLdyev*2z8e(r0^race5@9RoGXV0KtKMVbW#tY1?v)5odFYyzAF}R-uj=z9>;U-@8 z9rRyphb;iE|32v9CVp%Zbp!WV;Ls0LJvIXm0jQH<;2#6nuFeBr_Cw|7%b@!K>?7PW z_Lvz?{C@zPZ*cEc#Y>8w_`LvzbMF}UTahR6wCN_k{@)Z$CGh)A_c7pp0OuRT-!$E4 zfq!ATr+}CINYUg0Uu(K6fWHiwLK(+_H~d(&jY{AX0G5&Xc>v}49^K~!CQz8S0N?Zz z=p1Riz)t{3|0M7W0G9n6u;ZsHtrK{Y>D~-{7(kkC;73jOlfY~LUD1~VKME*EUf%=G zei?lSZsNBAD9>i#Q-FGej{&#;OofMmoj+Id5Z?pvgNFEZ0O?o#0`nOFW$*)^2i${j zF(t$$fa7o%0|x=ji}=$3(#L^+VursAeB_skrVH5h3Ur6G#N_~{B|d1n{lK3x-6wz_ z1(4@B@V}ek;y=)j08Bd$JOLmL@lQ~(r`cLgQmL|_z!^BS*~B9 zjR9!WdVs$Va6Sb)2Aub6m6sd%6#(_~DsX5T>q_S}z|(-upegzt+8cm0b-+CUwiDvBrh5W-#qXhW(60jC`3JOB%wfF1cLSKV zA2`Q`y@8-{0k6Tn?mD=qGVrRO9d;cw*8sm4K>ppp_XC*rW56d(cR%nrK6>bOq2w)0)J_h^* zfP5x^e+ppQmx1qdV(k4Y@&z6P6u>D$~jSKin(|rx_zXLd4ybQc?sVe(s z;J*Tp=RLqDP4^h^Czm1LQKW3~>DO>Kj#;U9a4HG5ga1((s*Xz64Dgz9`IB zaT!j0i|OWzvU~}a;lz9wmhKmUE4N|{`CG^Xd=@}H#4iI#LtL;;x%m=emFeb7M87lL zeD{Ozb38e&FyDt@T4KKMaQZ2QpNIP;xQV%spESgLmw@5Ke2-xKs|tU`baRh7zr96z z?@oNy1R&c0@XrBk8&klgH=w>C!+-Vb=deZ3&qo^u_yGS5_zGYQ-~l`f_&DHw02knM zfH0sMFom>_FTg9zfCm8|1>6gGC*UAp7hpZ$N7?u!4dB~=zXSXY;6cEL0Y?ELz_uKl zcpIPua48@ckO6pYp-uc4@Ld3}J-Ie+U<&*VA{rFW%SRH`aH$Z@lkJ-$dWJ zzRA90gU1K^2Tu>489X<5esFrwIaDxIJXA4MJybu`Jk&LGZ0Pt<|Iq27GehTw&JRrw zIfn~|i-#+QtB31{n}@rGj}0Fm?jJrqd}jFE@cH5CVdqG}NbyL;NcBklNb^Y7$gz>* zBmE<%N6w6#8#zBRJ>ncK7%d*H7_AwMo--*lhoclNvb3;Nyt#r>ZCivG&} z>V9v3eZRlIxj)?R8K@Yj9H<^}4!Q;l2Hk^|gWf^^V0f^5uxBtnI5s#wI59XmI5jAS zTtn_5&rs!%cgQ~!9_k+I8Hx{$4UG>?3{4JA4T)jbuzT1uTsiC=_78`LyN7#*BjJ(mk)DzG$k@pE$i&Fx$kd1!b&a}5J)@PQ-ckQ( zc(i-8XEZ)KHab2!F*-RqH7ZWIPPtEcPF0@rp7NgxpXxrQTK5QAD*#e<%~3TUhvI;)4) znxVHYXzmzv2RV8$76Uay7ssFt7utjet)dcTKZepDA3@|K#!!;RyB_X;c;eydhux^% zu9NYTXHHI?EI=D>MtePjT6Ck%y87e&VxV{c3H}FNc3DA1J6fL*BCzIK^}W? z?twnbZ#JjLB#j6AJk_rpCmeXdpc-Eb#2tn_cYtR?@SMFp!1^5cDx5aJ(h<%iGxfLyf=f3bP z;8uBF*xYikUa@}k#jk9>zN@X(jm^J2N_5N0wWXew?hv=xV#n~7mHX;;mQ<{CC%zK9 zW#!RObmjHeEzDY&wK))thT0lhkGjF4J-TIOXQX{ow6QtV7KoO#wKPULq8&}K66~wn z6o|H!9$vfB-4~UPVMsdK2)X~^3Jc)gi@|3NV>5z9cg#DYy)AS=G5_)GRcM!W&AWu-h}+boo1 zvL=l*TJ$wZvTt59qXZCaUZZR1IvC|j19ld6SQ&9Kz1Y{kkudw&8o8GxuJNr0W#k|NH%Z??0f? zoM+CNIdkTm*{&q7I{so6R7!>Ldhb1@?#4U+9VzMllf5V&-~8?I>W<@5@^R#k#5=WP-qLy_C;IbU?L|3o{76sHA=234n?11Lm$pKXc`nrVywcf=4Q$DU#)ZmGNKFXkH4<&aGfnHn(eNiTT zb@X=G0G~YD&e**GL^tRtl{Vnr_;)0vUwAPJG9O2hs79jd+%grJQ8g#1_P_v8 zGp1@wDpdk)g-cP7g?cus@CC5GwU>H4!(3t#wQNQ*uC^-FdVq?=LdC}?;sC0OMBP{@ zR+NB>tv8Tg#X@zPszR|)cweY091G8SO0|wtwb@!#tD1rK*|)iPN8H9T7ej@TaAFE7 z9gPK4C|omI!MD>%Kt(9qs)+<*u0+chsplY%n2%*H6nSg39PCPr7an0g-9o*KVY9lb z(Bd1wuJHuCI$Roo?W&4mMKjl`rVEzK_}Z-)nd@8XDg*Y1kxNX6{PivM_GW=6L=r&5 z*S9n{K%=hi`osa?kM*NR=N@_lf0(= zYmI`TVk(2$N=hsSB&PRB`e4?f1D$KY3E(RypZ1MPmByk`g27(_=R$j-GK=$ZcwD$L zxUZHIL3#-oMp+cq91StD{aCn5XSaG@^GN`&0Q}&F;IRVuP0=@-z&=GV9DoHOz zQqqcA6Nj=<6%paYDva7zFv+ws1}oEWBPCa>NWax0F_yooTe_M`kW_&pjhnn zB`95S9G&HuovA?V3``WE5=5evI06zwu(eh8QG(G3mqA!OGXD*(yS_3Q?)NE!381hY zg8OMFD`T`%AhS+MCt79&r?*C|^vSf?41i?J1#eSlz$T$H#$z39nN>IajB&{93ts?< z3<9B~WiLz8CrS-^J)RCb!IrVir2w%WBc4k}Cx8p%id@7Y+E>HWA)L1n41TCKUV-sQ)S-z{(s?X!=urF*FTMAkX2U)#JW4E& z4c=V9Ml6pFF;KupERPMIoue1&JQhSp4hv}&soPW<30;`l7b=S$V!ij?d))28f_g5% zA~H+aI2XL1nG|bCk-PfSu5ZAUnBHTm?gARJq_(W}qbeLVZ0iuUVnvUjtsEklZ$}zv ztTI}~tAzdc2G*i+0w?5W;GaT0L*`X8s{+NvVM0@xh-64PHUQQrZtz4 zXx2nQz{<2XMwtY&TZsg)OE74ypwX|g=#mF9ASx0M9jW&646x*E($3~MXQGqs@%x(S zcILFf6Y&R|C>N>L4>YmjwC~KU^sOS5fvsz4>tOZ10FG}}%03t?lD>DS9k+M`%7YiC zoJ9t!(1|J>3sn~BNw=~n7zhwgy6@GSOWo~t~wTU(Y-gVj6Yxm;h6Ed!gGB`k# z?8W9h6u%t4k-@noyq6nWbgywvL=6M1qkpS2mV>h-&fTbFEu1fEC6_oJLUbLT>nEzj z3NTiM?9Xy%7D^liO77ySie7IGC%QnEg%ig?q$CQczACKjqL3Plh0{kHtlYeyZJtMv zs^gAV^%$qX)m8@A1tp_6SBI?31ZHu}2s!tGm`p}-qJ{E}IAeSQlJ(F%gPvi_XpOdV zlN}tLi8q`9PXda~`byR@1CTYsno4WSB9#`;O0a@8!gj(VEKaW$==IX*%t$1$hQw>u z2wQW?*8)m>2nlYcu0Y+Hbp*PRq}L;vK0}|a=BVa1ycVE+Erre~^aA$PZKXGWwWKwU zQ@}>#aCS={i+9)-lS?tEO`srya+t7W){FWShXKr<;&eOX)vTr2GaOu(jl`^x`Ouh$ zw4iZFvrZ>!oSuF{+w+{}CkLN$4r=?CYmoMEk~Z7J;n^y)PA7`?ik(woPJ8)s(%x8d z8(}yquTN*e^vN968OH-<6M{yAp>&_XULc@v7X4Z^(k#}gm?f>mZ1B|5ne{EtNmlhJ z#u2`STS+=Y;$u>YjN4O?ZK5n^`tWpXU-%5XXK;}z*9l>q(83?}5U2uVi0dHSIG3a3N|e;{u*k8sMy@3z{IevD3QI~`Ya{Ge$O6rMH81x{~u!p<#?>96j-T!QPcOT&i`Ff4S=)=mleV5Pgt;zI{ln zL|fDSi`rSVzs~up=QJYU%({a^SRw-@&tNvu4^+auCo9qG$qwXhWJzf_J%Bv+p)UoXmBC}52g@eXD4dls z;Y&UE1QWi+gF8+5yB<8-gkSXFIum}|gK(&5Ivjj68 zt>@?Ek^g4Z>78t87n1*G1&PzqEvVHx4I$yHnb<}f0na3N{Vy9=9!HjZdu+r02Zycw z|713Qi~WZt6Gv-bb4-fok^a?0@)&d6FTEQ>UKMGb6LXd=%#nersES308K?9(9x<%e z@>o>IWO@%I5XsJh_Q>nCF}_z5=hi+ZHa27I`Z1|E|ibtDx6a*@8(8UKWUFA|_T6z)ewfL`? zm{6=*tl_0!1t84ZryTXsr6n#it6sVu)Z#}q^Nr_z;ui~NK&rlS&*e++a;46{zx_wE zyQKnhEG?zTXSB#Co^JZ(((7H$SLgrYFS9oY=hpKddw1#M)Z`R$R@kGknXF-l{GI3q zjb7!U{1D0FBQ*MD4=u*ZvG_oZ-szzS62-xc^*-XEcp|74{~HHLpx%mkNQ&sMH0mvZ zhn!FJS&e$j=po-Adap*kRrHYOh~B7CZ&^I#uS74>sJDh5Qjax%@g4{DG+Rov7bqUY zW#jDkC^y5LZkF|x1kP*W>5C7_mzo?NOX^HGlv#iKn4DbmOwOMF2b|}PS!ceU`{(45 z6?QlP4+3+n_l+^@XYUd?+(PP)Fno^G^ZS>=R0FAd^QHc|f2s8%bq=Jg@C4JYlOtn| zm5hMiKP+A;f_0`~+xrr%62T@@@Rau@_zHa23OAa9pM76~Ul751Q}B`ZCAeJ#8%)99 zyf49nAZSWqogO1-=vL!Q))iy2()v{)lXuttd5cWmFYli>$KPJuKX1gWH&Q%S*F;|| zB-y#+;QjL!o4nih&zmz7T(N)NoK^6V{qtgPkk$9^`{y0kTyg=fn(z_3Sm@f8x>(V* zE%mYRwJj53k!xETV$o|`8e_%Rwlu{`u5FnZE4{X5QmpLSmgeHvxNED%TjALF;z$Bp zi7-BRpg&*6`?dG5&P>Bgc6kAf< z`sfQxEeqrvuOjt2Hc{M@!nW%97u1aD$j~-l1Jd&TYy-7&ZF59vuAhn}g1DlW-ZJC# z5myRve256_*>2(1!0gn4?9@ixsfn@VL>9S8h}I-&}nAd(XTJ~bv99E7`|(8!08p5Fsi z_2mS8iEzacE?VL6(F@dJVEPG=e)kkGU)~k~GM1p^>cyIX*P9%^=G|Be+oWWGg}= zDT9oKMm}PYm7$SS46-UTf-SZuTOAs~Rf|W~ghp`N;*qc_?pHh##>CBqN5Y1f$~+QA z#5IOT!iw-UkAxX zXawh}(17C#6|O5J@L-`NeV#ZZTpVYdsA`8d9l$uTMy`g8J-u8FHaZR!9BE~(7_$J} zNc$%~^%@+R1sE<99GNYdhTzB?GGa6X*Bg!a9-H`F1rIfroE#80&fXF}iruD;Gn6)$I*LU`a7OeLi)26a2<;*xI4OF4kGp+unGhMlAYybQjL)j zY!ckErpU-yS!!Zr1QVTGHYqZKY1O5giz6eLQ$4aIGJ@c9NW&08xfjK(cWBPN=TI!S z$JWSWkhaeP986%<3nxCA9kAAe{AHa>OGoxxR;fo=weE1IiAO!uvF0BPK-!#M>B^Zm zqu!8sjbw+*Q{KI_)pxcyh^qwsDSz;@6B!->)u40Jt&tnu?wUPiJr<6o;-;9tXTk-p z03((@eaAW;-6EjxR`?wLQ{<&wk!r#mBLA$+`9Sr9kjw?l^4i|wXTnQHakGvr&ch|6 z^mNe45$MOIGTk8J#NWunxm@S(FpDgMLA>m$HVJ zC3_jOuSoVY%)TmFsrNO>UQYDKk`=MnB`ab-k*tWlAz2Z7Q?erVQ^|_h&m=2iKbNeC z{X()L_Dji%*smljVoys}#Ga9?h&?M=5qnOuBKEvwMeGI1ir5b&D`G#AtcYQE1(S%_ zOOh3_A4pcj9+#|$Jt0{Uds4C@_LO8r>?X;I*!LwXVs~bME^mfULW_L?gG<#UGqS-xJ-fv4*bhuZtB6eSv_rD}7H9R6& zQSyGtir9A~D`F2wR+@M)%lnXIrG`f(D`MZ3tcZO%%kVwPN)2C?th9EAWJT;Nl9dQ} zOR`eK+maQr-$_=)elJ-O`$LxDk6DI4Wf}gQW%x^$;jdYSzhxQzo@IC^%kYmZ!@F6A ze`Xo}m1X#MmSJC(;k_&aw#IHq2P7-Kup}$p#ATby5Xv$XWf{U*hDeqnnq?@?GT{2n z4F+7KAuEIR>#RDz$?E&ttiJz8vN9GoWEnWKI&yh=O8!FNyz2l)Z^luaNIm+9G8dljEi%2aq~|bJe*Wq{COk)g2D46 z1LwTq@^j*F+v0TL;+!PhJZA})=S~CXgE}(E)QeW z%`-^dJVVpXGdA5kBht+?B;7m%(akdw-8|#Z%`*VqJj2e-Gw$3xqs`4T+}u2a%*`{( z+&p8;%`>>%JVVOOGmzXo!^h1tejJ-5obZ6xhw9T;Y2PPNm%chnG?z7(Wj+f!{kbe? zZ{c3*nk*21CWz;~b(w3)h}dHo>8cQXE`jIk8ElF&h{2LHHW0+oEOvvaZHiLyw%Q4q zFR~C?x`pwdvgTYBMCdX@1p>{9y!Hv!r=9jiyt&DCi{uuDO$ot|3odg2&~ zP`n~kU>D-HRh1nY0?mDSb|Kj4sv{yz6ge+jw`UiYLV+Pq0mm*F`B40{LIsH1GYka? z6evKj$yGo^It&E}cnXk!0>k+Vz|TU>SzRb`__%P@yFNBCUxCSC&-*2eHj(ZxAXpAGUb2T9B zqXA+2Uxo(4_sK#HhO?SX4{Ww`Y+t z#)Zta?zl)*oAT7~#)XP_Rw0o$c@eVvDD5ahpgEamd4gWQMZ`R5O91J9zYIp#R}J`e zfB0wquxyi@5Hl)~olznD1OG~H@`q)sQdr4-{@f4v!?Fi4D#;&RDs9WXfn!txxuZ*D zjL~ILojbZx)oI4)>QX1_#N68QuRzMRyaB)J55MLQ|2PkBiZ8bELWp(SXBiGdAbx28 z(b}0aoe}p|7!tMVJG5s@6?{IO#>SM+FTlk{C)pX#Ye`^FV9q3j?CT6A2sD>BkI&IS z*Mj(98zN#hs!N@VCd8FedmXlKXW48%OLe1^)i$4;x26;H_Btf&J7^-u$OO>E z5wDB)>bmI)o~=nVHOF(hK+Jx|FgAhaj=U*?ptrvfk=KpJ1;BS+yd4HT&8{VIpH_oF zt-H%2k@znZr0+LN_hgCYdFk&M)X{lnX9Z&JG(wo;LqNB8O%{j)<$z)3^;Tgr*1C&~ zNSQ{|r4MGSfJIO9Ec%efWwz5%`4iOUMx_D2;Say*5C1d|j(;A0Rv4MA-#(lsy(X(i z{A&8-ikvQz(ThwHUSvuY{Dg<=Gy<$O#*H2FyoE$wWD>Ib3?&E@M5eCgI<2ONn2qXE zCo)O+MJ7$?MJ5S1jPfIsWpVrfipq0qQ^qGU3yXatlWaCW0pJ>)KtW^@^deJ4cGE;o zWD@X;OuB<-YZCd9NzA^|FgAgL$Ry}Rrihr4DS#Q7^fvoTtkj820$ya2$cao{>O>}q zY-9?xHZL*>=0qj|-JavN!U4z2k4)lTWQvq&L|yuzb}15mktrJv9hpA|iyN5+{0o2h zm;SI^?l>C(RuVrVh{#-O<*k`4vY#`?NqEl*po<+jkxAU!XOZwCQ>x&ntX!uN;4Rj9 zp6)X{U|oGoW>!;0*k#yAo1 zTQiA!kx9afOsRsOt8|@4fD2it6PfIg=Pe}iB9oB)6+;OE1(B(1aUxSh%tm$TjXG{g z_(dj7=tU-pu_BXYe!E#y#wRihi+v-LY&JjO=SC)hg2*K3MW%?{M-w@bNx&~M=?6u?ZAJCP6PUMZ}Cu0nEsxx7mMSrA}lL@FJ5$PGss*Co)N7BU7mS-7LYJ z$P|D-5|aL|9&rL%0Vh<24YgelD&k~&ll$GeM?eFpzP!`!gGR8@GeYUp5>(WkKknkdtgw3xYxK1O$ zUs$ITne33~EhO?HlaO6q4*|!{1PUTk*Wzd(B4(qy)QLb z;oJP-+wYGcO=W?aKU2oy{{x)x{h5fM`vU3z1-LBGj|UgAwYB*vP2 zSQg(z16@D^eHPWa&+SbypZTY-*mwRRo6WCbx$_T!g87G_H~)yp>$DPb91sG2^ADZg z>m`Y?ddV{BW%Kr&E}AkvU1YJ%FI>606DZJ~pr^Zt{L9dtfUA~#mD9PcAJtuBv0v91 zxL(&txOL=TS+Y!btv#n}ri@S53X6S5k8C!-@a9^8K!F7adKM6oNfWZ8N5HR(oP@kC zk{GLtEYn?_l+#61#;1#g#lBr6o6T?kxm_es&_#k?7e!>5(M1A&UF3x7txP0xRwiBQ ztV|@bE0a+Dg)vE7x|)7K`ws#81ghdJPQvlaV8OPLxHsL2lo?^V)LEQJpf?52D!2}K zvm1$~_(l1X24VYLLmvY8;zjNUTnKtAzKEF02=H~*;Y_y#pb#wOd=}_Sy7OFtJoA#s zF|RIl%u6C`UZMK)CIf;wwk2RcWb{Qid~8eHv#m&(Gk`92Y%5h{zuj$(5b!fLmr>8y zB$}E(lH>iv>^~UV5h$=ULC?}6VyY%UQ$yC$1pF+`)!VZ)i5yGoQpeIHvX&OAzd3hq zBA8=o0n9rJ0`>wb=D4+R_?Vu!XL^w`rygDEn4W~6rMU(1EKQ;bPp8d=keJ)}@Z6Nn|Z8RDW~s6iG10(gK*4CSc!ebWS*Y zEKS_Av`CpVpe}VRO~TL8+`f61CXs($AZ9;jC_|umM&9f}(6h9Nn3@RiH^b5d{49Mp zaA&XmFtb>vxY;n^d;DQMX!qmBGx8j`DSmArZ%f6x?Qmn(tqI8fH1FXKanIPAa5kq> z1;57cZjJ~^h?s{{ z0_ft1*F`u1yGR%DY)vBH(}~#~hOr40%qavtPZtrhaRJPeF#$hMr)PR|3W=OKMVIc; zij&CBDMIDXDFk!o6amaRg@8S1bWS*Y<`m+dn~Rj$KV9m~DJ0Oh(>zN*q!q>;fE&gC z#jF#>2KvW=+ z0Qy@H#q6XPJS4^n9+vq9k1695JcY%+!9zBizYpOC4}pT$N!e!;^5 z^MZ#&-b6*n{)1tE0tFM5uEm+CM8veWE_Eg<5>TXIqN0mry9*No1o~sQf41mL{lwFTMBbc2$bP|4hCsobqHDQMcThyk(buKUoI(PM6wE2~OfQN_UHKTLF;S<5cJvSFAvwynO ziC_}wTR{ZB1>A|?x0!Wz(}eTCxIj$*itROeRv?i3#RVc`d~tzAjqVp0q^jCU*`Oof zeJw>4vC)P#@;l(JP6qsYfA|mn@E`r*Kl#Id_J{xC5C7F4{+mDicYpXDfA}B%@Vox- zKmFl<`NRMAhxhrz@A<=uUng}u#uy!bP22~TFR>PK%lBCeVSbg|rxN+bYazFM`Lz({ z*Ufz@k*~)Va?3Ym3t@gG-KP@yE^Q(Aul-H+8-Mt>{_y|FgPWRba~47x+n&exaYB)R zEQIkM3)|jn5j^gfY+2-ewt|HB*$S!UMPn@#;7B7Z8Gbf@C@%ed9r6UcwTHx5YY)q0 z?TPc(D07rI#e9~Z!eZa$hio=~?#?v=2>7i(oL{{4heT7H zf3q#88-(po7-K-7d1KzyrGS%N1w`gbLjeKqGAzz1%v)SYffRi;>OdPxHAhMxemO1oXa|D>9~42>7`eS0B5g z8I|MWhXx|x`5cL+_}lsY5}{=ja^jvq!L~=hN$xm_%sR?APA`DD@8OE)`5cKHpVOs| z&ymRboKXGo0`n8k@i_s^Ee-*Dx6u*d@bNj~&E8kRMa;A=0ng`1__-LD?i?2*;JFxy zv0RL0+Qq(^KNO~zkBb!+`??s}Z2nTDJD>y#TueakldB?Q8i9bHi*av~<6;Cn7bDRW zzdgTSB6O=UG6V`-OhE5zVj^R@m;k1WaX;j_7>OJg)1{7!k;uB3Q2p@&^Apc;F#${$ zBVa#ZbVN9OT#R_LcT5m5)4Bva7bD^4V%*r}xEKM?#Yl|hVl2}xc6$C$m|{LIR#@!o zVq~-V!=0$zyF2>!m=VBysTuhfbE=D5jVnX%D3(QYE$HfFNU5tPojb}|O96l~ayxBXciI{0! z0-lSJ@N+S4`*U23fahW)#&R*1X%{;xe<(~b9~Ubu_H{9`+58<{*To1FxR`*|?y@8@ zrV$AExfstiIW9)Pb1@Q4@uTzmB|=9UBSWCT#RRNzH4+)q#RM>2jAtp&#Yp71m@eI; zS920s7Za*KUSNLWIW8uE>0$)zwMIvT!^g#lH&?lR5i!%c1Uwfb;pbvJ6y~@X0nf!q zjOAi1(=Jw>KNO~zkBb!+`??s}?1K##BT(RC0>)e;h>U3j0)8&WQ*Vxo5%64$L{pr9 zhBasZFG8O%MutFviwRiiY9unIiwR)57*E=si;>82FTTl3DqAjFhB7e7ZbpA zF#`6LMn{Ch$Hj;@SGauU3j0)8&WJCPh0BjC9hiKh6^^ZO-2&ln>^puoihEO#{$ z8PmlCFkOuIFrJH%$Z;`U>bMw*tcwZNA1^RJ@f;Tuz;rPJ_8Ue=gu}g^z z)NwHqSr-$kKVD#d;yErRfazic?CC~Fgu}OxSf*X<%>1D+#e7_>u-Mnd$Y%3zFt{#8puoildN%|jV%mU!pNH`}HOIpUcpgTg zDSmc-w?yb9V_*mrc$k32?x={2>0ttx9>yzN&%;RMc$hAAJd8xv!-VRO7g(Qoj)w_g zdKdw_-{^>N_;?s`??OnVOyd&p9E^mYgYhal$H54A4n|@u2V3Wuk zn4Tqo=~=wj_dJV4j%Vpo$FoReJxi$mJhKzbaVr5#w<2KQW^_V0eB6q-cL^j?rd0`e zZbib+t$vMNnP*WFdC#y3+57_*?(h;Qc!sTOxlSK+M8tfEpi7-+*d(CHF7LA6Vn0UG)|zvoe6rkRU%@#vjC<$^HGxL&Lnc&S(iHQOd{*fLghcaCYa;S0+{Yh z!2Y%2&cfm2&cwYd5s@;Ds7oKzgFwR1oo@i{JiLa#c@OCf_)B?k{xfZ|>OZ9Gn4CcF zGi@ScJkw@TgZoTds+uwdv2&i*nt=CAoBDZ!PogRJN9zdLGb!yTLZG=T?`e{*#fdx- zS!OiI&c+vp@TZM)W=X>K2}aezcM;a<=7V#d6cYDFM5KoDYWIG1m8BSwv%I(lfQK0I zU!(Q-Q+!l*Er7(sf+lRdIlsYrvx%Uq?w~n5pDRGFDnPExBKBS=n9vrp&(A6g)lQ{q zk5Gw6rAa`8uC|HC1d?Bctxf+x6Q4)5IYjz#T>x`u3rM&HUoZ<^&L>>1S1Iv?uIk4| z{&iD;ge&ld!GyDxC;T&0fP^dX3xnxbM*eA2fP^dXtiklWk$=GyAmIx9$Y6TO$isA5 z(~xil&|gpQr;PkfrT__700$FK;A=)6{^H@c7<5_n87DT!H^Gn7(7=A20<-xB{5OJXP_?)ywmPW}ZqUT!F6|OkXkb{E&<%@OD1o zO7oev>u-Dt>*oJxi!jqnqdc#?5oNb@N;(+&rgW&sroL1Jx!Z;Afnx>Jm>P zET<>npe3p{fe0y4nKUMe#52s!;NJ$a)NG~Hf%sc4*31Lr-@m5m%#zyD)@mz~Mi7;R zd-yvuf#XXeb(=~fR{A+$2U)FehG)#?A6^OX9S22ccz?GZe~x_#P?bfF)_+gP8Yu^( z{B5gj8QSIFBI9o~LY0^`QUM{&d zGFl04E6zvo350UVXccK|gm0s`CB$Dt5DoznKLke_QC?D3X(e97`>b}Wwxwj0O@)Yr+`dUj(nCV3aj@C6J$v#>2*lay+MCb!?UKtcQXaPYZvQZ-uhX2*XE58-OL6 zVFT%WDgOGr^j(hz1+2*E6u!aY6YyRcfQ`q?XgndK!NOAObiNs#rzGl<&cg}VinNy~ zhv+E&e0fN>uZuL=1XO{UrRg`()6t2@wVn!ynKag>lF>mcL{{m@c`wq0-v22;6TKwS~+~R)ft5uB1 zY9*q(44s?WJ!Gc_wq?k%37XEF3T#8S`q+R{6~Lyh*wEF1_sc-v01c)t>rZ2V?ma+hsLBU9VN|i zVn3?zVz2l@z{-0u-dTrI@9_^j;~)M;XLa4Au)18*>nkssSgt-iiTJ##OKZYvwEBh# zVfAVi(<>#tQ_^Du|5+vR?ZSDCr0Gi5_SNcL^^l#+^pllL6H|88m#FrJcP5socdOo+ z7*-L%{{%d&&Z*s1KVG$23yZ-C9m48SNxv6k>AO;AO%?IAbqnH^>U+VPTYA-_7}K*A zK1&a6ubDv3bd0U1157V$V!Ek;_;ZcS@0A+vm3(J_ZH-FWB--9oPaQrb$Yo_aYwmSw z{wj2+Rp-}V8gEc1HeFL!tCB63#%tAA8kk;O$Mo1HrbmOPR@Ig>9T1)mH!}Z_aGn4p ztbW`~eWp%)3i;oav*zcT$#WcJ!|G_U$sMB4CfFpb9;{(Hv6g)wS3w(Q>S(>5iNyaN zV0wtPtA3LDS^1jADeC&hn_H%0KCga_G_1OX=jxVS^`(KA1R1F#=RYSLJuR$CC)1wqLjSOu5@I@i z8q?p2)YoCj+3FBvsV3W(xvf3)Te4F)i9Y-r4w2DdId|TinZ$}kmr>$+HG@SL7d*)R>V}I8B@TC zmH%u$%%kpt7m;H8Rj5Ar`(em4Vk*>6sw8p~aB;70Ngcg>bD`{jp^Pdv@QAuBvG%4xnl2!}nnUY$V8QzBX|S((5N~L;CxMex!Bvry`wNOXRQBOqVw8MEXp_ z2-1tDF+IJA>9do_f8{i$L&ZeOYNZB|{aD#vAm@!c2kBik%&#B!Nu=07w=@NrCgO38n2DRH}$$RDDt`IlwH|4~MyTw07b5T7)j z_`LDNyT()M)F$HJ7yL!Re=GP<*+sx_sbTudDASq-rrVpCeo1R3e&GC~%OZ=ERdiLPRu!vj5IZuX zsv{~f|ERYcuSY%Mz?YFuvY6gyEkSy8koj4GuOXdp-2qOQ{~jPsfm)=+*8NCtlJw}{ zBgj7*JO=53p=Xfp4iWiwh{&t}YCxQJAl9CYynu8!s_O-myrIk zIf3+w3DmhiToG9t$1)aWsIxqZW&F2ST^_%E+GZ~24)w(x z>MIl9GB|6>eiz}HLCYNk3QMv>O{n~HggYc%_Rh3_LOYkbcTzAK^{9I$mPT<7!#}pZ za&l#q#~V#ejaNo-d~>K*CpSd(8HAj_0TuJg9-llp%5#gBJ9+Z&Fpe&DX>Dt?&ZFK_ zmC<_j={Nyxr3Up`p)OHtix;Q{b)!cuRTI@W94c6Ql!~i|gt|PsrgUy}vU<#+emij? zsAnAN2NRcqdP!4iWequJPFDDLxq<~llhqv#by9IB%KqX|2iCR)C#x5xXwGL_+JaNm zQByTFq4MbHRCS$0y)$iXbeej{q3)TuG1{U&F->#cJL$uqcp7~P5rXE zEqH)h;86EY?ujPU#~kW6pk}BS9O{Be+oLnpG@Mvj%gK}5g0s|+Lw#}D+~{oeJ%yV7d0Bo^7RPM;EIaT!JcfiTY6adC?`R z!=ZLfdMk8@+AY-Os(Q*r(L>ZTxVfO*ITcq$4^#JXg9+;M6`zkDq2Az88Pp>vTdtm% zrK#IM9i{G@t*H)BN2{9;($uDkuSQp@`njYoQ9CMbi>^^u@Bofl4y?T|x?bJjP|vp9 z7u}$~=};3YABt{N_dC=((;kZ+s~&f#dnY{;-K1V}sF%v`iyo(b;ZVPI)9FsbXC5PIaq8 z{cCb<@gDV{P&yh?bJQK0QXeW?RD7=5w2)jpu;S0E+a2mUwD&pn15L?1f312!sE5^qWd{VVRe#SZ zt3ZIT@1H5o6kn_UT|euWP3AF=hxLc4)q@7ZdI=x;gr>9if>bg9;vB? zXzvbHeUzp)Rh(UXmzvY1sT~y;6@Od3Bhowb!9yCEdjj zs5mb9*!sKC!-^kLgKISP3R?fJx?8C4sXxW)g5OtvaLPVEHLM<1^>>o<67^jDTcL;5 zp+a4%me+o^_+b`!{_==J(O<4Be$1nuDF0IN4?K$F{-oNe>l9CZN}VN?_VTCHr-V8i zw{2ndl)5aZ>>8)+G<9q7Q|eZu>}hqMP;Umlhuf5=)!uKh$u|RM#b$vzODNsKGwOV& zjGWJ?=(n?+&!`fiH0QIbTBx(tDeA7`XVqm!*>ma|r|jd<8}o^9!a~aqN6?+eRrXZmGps@!Wi6+^xq_cVI!+H5cZC>P?puwVhm^tszy!{L9t6 z!F;ivBQ+7Lm><&RNV%=#_reb^)Fe+z_uA>Zu7MUfG~()@HOWm66YJ^p2Uy45UfZyY z(Nom(4z6I`($8XR6vU|=H`+L_^Nx8oQl8g&liq>UW?uK*MBKi! zzbSZ80HZv&RHwr-A@vEQMe5&;w0UCZ{Xc=#1E3J0Mtmbxj= zdY1ZHEo)t0m?YSPM5lU%0yY>7H+FEJ@v<;~L4f!da zS7_f0sdK~*8qbb`i)VY3+pk5^Q?p0EmOg$>M#QwLjxVNu_Sf})T4o-dZm6TJLS>EW z0@Z|9vEq&*hBS<4T8H5|#DPe0$0_L&N!ujtlJrB89w%v!q$x>HMH*J;A+1qgK-#FD zMLJo%iSz*VHd53t^ZEpt&)Wh-dL*4-F~3K6E|K&=tEq8;V!Bk#wQiZbOf9iC#*R`i ztLBOmRhM;aO;UZxYHc_L`Ilm+@`+sKSxDp4K7n*)-DmKu=em|#)N$5#YHpVr?pD>P z`4N?}o{K$+boR7gf#;^;zaaf*^)12^43w$hv;zWjtve>S22z26nj->i>m;Pd*L?)( zx`}C|FSqPQx~=Zaz^Phu>yX-uAp2zXb%9G{mr|yxo9_xVse>jy9+;-?pZW&U?@jwf zAYlC|7FK6k+hTtToM+uuzAtd5_0Q@*1!AznBdQC%sIj`F7iD6H4_PIRCs&{rYVaOwcFO^QF9dqxi-M0? zeT`xDm~~U}p~1P@*0rn-#;lWSs)DJ&yRp&W+ksC(leyOGEgwVv3e+64 zZlC%|r0e4sL-v-*mj~apZYaGbn6iF0ND5+e*CH6 z%YpCW!wzp_i~`{NZuRrvENOfN_&wDJ1m3pJnevv%mWKXeUEDG)#BrY;nj4r@-fPVb zgv)xZSnxYF9l%GY94)15Low^gX^0N%)%ue{mjt-iIxtA@{eojF=D#WVdysx4^q}M) zlk{0h-@PSofkAZK!!STAViF45XE@3f1KxR?Rs; zCSycC1mqD&ttvS`bR6=R0)Kbv=R>Ck|Jp?B{a5Yzu;#}Cx`tA;btY=YEMa}T=8n*_fhmowd27wRp|=A+Ej~X) z3qKHgGjPe&=YwwsuBm5wiKNq@Rm@62^Yem-*FTK>ubQ3+y&Op6gElXNlj$oJ&jXoU ze?HPnfIJ(}I&W#HP?rQ|qxCOHA1?{KQu7LIejQqjSwqvP! zGn|BP3O+dHw@AOy@JEbVVDi6_o>+T8;E(DX4Yfs#h)GBvYnfKGQeEA2NYQ%r7QAjr z;MtOu$iFw`HN?o(O}#}228bURcn|e232bOMwP;D882jli;Y?W*rd?2U0^;cFMST)S zUBc5PJTdH`!*~W(rrs2`Gv($l4MulgkNA5#}0{e-#<>G|p^q!+7ekzS_0i1bSJ z6{Me2w;;Vv-G=lA^(~}dQTHM33akznt5ry&s>b>=(zx{?(rFeoOjr*iooP|GIo9Jy z7g*0AU2Odj>7mvuNRPCBg0#b;o<~{i(Ms#*NY`3#BVBL(4(TTADztKO=y9Z%g?@W!Mi2>u(|_OvhTaKTMZ1e0DB>M% zId*^wPcC_(aYSi0y|#QY_Mriw-KF9oLsC`%yUgb&9Ys2;7mx9&!D zKR&bbVxZr;#(Lgb9-LRyQS_yvyYUFTRNX!e`UJ+QFUos4?mJ1xR81M*tJFdAUZW=9 zBYi4Rr`{313F=;auu26Q)jh&LQLV(soK&D$O^x$?vU*kMsp>cK-l86t_XBV<$?^l$ zrTo@&pjEvGdmI_KU6qwvc)wFE#e4iBH=y@OqS zKK4|+5Idy+d%Eb-0_@?UB{)^&*S7|H^n7f#4|bZ5>`v@@^JTw=p5VovGer`}UrJZOOy8xcK3{n>Tl)GK2j+d)oVZG8tjc2N$r0d~og} zq8-UC>EVH1sS#w`&`?kBc2*B!+3?U%dZ2S)ct_Ii8A@seGMn4`Q@y8XmJJ>4!Py=GWxCgMRY&Kt4J+oVLz8IOX>)x~=9I%1 zZr%(u-QVYc4siG|@%1Svxi;P3zj-~h1JLE@y`?{S@?5pnPWGjG(Fx>P8Q$7@hf?VQ zhi==|lNw6epj^43G^v%T%n;uE`#D#Q-JQ8=sAtRCo^8pw&S)ywXvbXDyFJ-^%Chus z7oMj!bPWv6pQqNR^?OIx(QA(DUf;I9bDlcXPVPwWOqv}AxU0t=z{lp;N2{Q;}3}n{D^(>4J}~-!qu(PMwxKY~BKOXm@Xq z6B`+rSjR`^@IC|x3aQP4F|=8*A8i(BZ5DXipsxHtXv^#w=w(B57dm6SPz)zlTh*~p z9oi=$%Mn^Qh7Jq&qk~iHLQe;`nML9=a~C08JGxjq0N+4dw4d4+X`L5&wWB&(>)I9jxm**zED*G3r^opL!PSdKN>IC1Z#$*^l@VExtq@x+>i_+@CyL9lF*|?Sv0^ z?HKG&?nn;MjneRzp`KKK=5RgJbhNE+Q(I)J%d}x~*s^^2GM8Sa7A>0BzG(6Ch4U6J znz#7i1@jgyS~z#{qQ!IP&0lcvlEupw&Rw=(;iAs@b2=Ax9^BrxpncJt({rnALX!^LhWs<+dEfgWzoooHgv8#Ze8c9H5)sZw{^K?8@fB!b#yN8 zT1{S7*|}=NN=z{ws&hAHILs#UQClhM=xpm)*0$PVT)So^D$yO#qRW>rZ|mq(%h#-1 z)wX`~s?P52wiTV5m#S#^c*Q{E*vU9yzVCX6ALhD}Z9u`!x zwsUny*Xk9%4R^0!$D$Ro=@xTi>@RzR6)$6TxdwGpr5)y|&&;pFDcs(o44K++yc z^{5qIZo^<7qIF%erw=Pz=GfHGcD>ej^bGYVW7i<`R&F{ZhrNyJ-jf+h?wH+k^RoEEq7;M`%kcOxCD&J|Gala~+=~aEZRwXkTtlM3E$gjj^YgiMqd~aTv z?&(ul^>n7KuaBmYSswYME^@bO8qrJm=3J09v~wqr?9&TYpTex8A#4uv%XAB}uDI;1 zVIwW+0+in{*pc2fkc*SCJ4u@)`??1DlDl1j_VkV|X*8xQ&-gQKOAfipsEm=vUL|Sw zr`Z9)I|q8O(b9QZs%MCkii^tbYQsRLXKQlJ0NTZ53~dxE@5&U=J=l)+V*`SjdR_9= z;Uva2Yvy%&M3UvNXmdOL;rp+9@@arP#K zI2pMICC@?d_C{GfS!9? zYKNZ6l{-=BsZXV`1I(VKW&T>(V{db&(wwQqm~&O$^kNoq4#UuO?(UW2Io22i-%f;v zT9(|F8gTNMqT720IZ?Wc5VKu8zNa$+uNxj1!m)07D%sz66ecDVI}ndN4uVdTT5hLz zxX3csjC3<4afm}z+0rk*25SI|1 z&%1~AKp#>ac3KuKjVwuPp1yV1gDG07s7vN>BA_)o?%dD?OQ^ z4lLi>pa9)nd#)(QX?=LxwxqqxPVW-`(eR;%&)vLPG*-Mv*p7vx5BEBD3Wpqc-i|Fv zZdI}fofj@+%XSIP7)2h_25yNw%4wM{o5fZSW6{n*3iQh|w`DTP9b5YMtWOP@brg(5 zR>G~Udnh@GKBb4ZZO<02XZQ{+x8WkY()KCYg6`qL!L*G&t?6EiEyY%BO|perst|XZ zIw}Q24P^OUr5RuwlXeDEaA9HB02`6rOHcopTv%|nrnU{^S}muN4FfxR24LwvUgWT7 zZ92uBR<;@3%xueKNj-MXUa7xlx8#g+SLL-jF0z8|XhD&oXg)t?$NN|)_{Z($7d=2JpjfxpT>EXIxp*zD&=AoK<8~iJLtAy;gnWx0y>)dw)7ZW^Tq!x=-TX zXrROH*+o)ZaAkU%-VzDrSjfy{a4=yhiFIzcIHe6D$j!XgMUYiJL))eME0Y7;kmcB? z28NS7XL*woT5lW3q?CkWdryD=7HmN|A?nf6OQ?rqan=m%8E1CsqTCSYjHtdeHoK66 z=#DrLPcpJs$YIGpwi(PTFdGcYv57a+3JV-VP%A-~jwn>M>Ay2kd$REu9{K({V4`uXyu}%GD`Jdm!0Af8Ojq z5VL2WVE(_he;9j#6R<*`(2=sST67Iyu;328$>qr;4kEp$h?r5>xqGlbZ6|HPy(@09 zad)qcHs#o;_fVT1ggxfSqL_OoH_MxBH;>t18|F&2eN}RYI7AnY&Q8x558K=Nx23UM zZr>q3tfMeBz$nyt9g(t&QOnZl{$$U9jw_x9982jFoSYTZs-Dz<+JV>6n9p!tI;zL+ z!!{{hr;WNd4C=ca8GY2+J(M1FN1{8~I}DfIGrQg1 zGdM*59^4Kh<1t|CcPdsRMA@<)8}%fSuIXsUd@2vXY+Ql$x9Op0c6m0tF`IRAxZT&y zbSG_|BoI(L`Cv=Wnj6!pzEyHHuxvQh@4=jga^XV{AKJWmi^G#i;&#SX{e#Pfv6r-Q zv9wC|0?1`&3l}mLkxq`VJ_y)Gz+*!PDsxIVo;dL`92CaXR&)|vf8%BhOPAi9!@^F+ zXvv*=q!Q=x7&oA9wv+o3*Z8@!;cRYx#r3fBvemK_CmzHx3Guvv-tG7SIA)h&IN;w(+=yn}K6a#VD3vS3jN|!ktIkDCM$BW}%w%Lv zH1BFMa_BH_-GoCsyw{Mk(V8vmPkPXCv4UdSoZEJ<+-LA+(@*Bkwh_s^t;skWcgzf2 zwzPiExf=ERJxF7pbnv>TS8n`Lkd?5_2R&{%=;pBIAo^y|80?H{6R(hw&t#vYtxt1j zsWp{Nq-O_rGFoe=cF0ukmE?J2Ap;z#4@V}kPG)vtx&K^Z@b&F#+YO~?-JT)mwn290 znECW6NK=?ixnCDXXAdah+GYdX%=^>z+fx}l?pm;U^AK~ZQdrhA>8(SUWBZbA13mqF zGJw5f4D8*8CpPZ=!BEl#oDHhCd!5bLhr4a>8Nh}_+mDftU4bUJG?UG$>e3p(4 z2g@*rI62hgJ=$ld6*r(pu9gJHpMZ|a?%iMd-n6EpUDCTv>5#BpD;&Dn*?O4T*c ziwi(Dm_1T@6OBycxV&MpIPb76dDl&pp5oM7~3VU zH*i?Zdh8)O9@kWDN=)o>qsi+TP_*-oq(e9- zD2KuVAtx2>Mmoz7GS(Zdk_oKB=T=r@Df?!^o{tJ;?XqlZ#1| zo`|0eYZtB_l;K7Zubq&?XV37NwB_JSsea`9)FGhf;L~R+$X8scx#Y#Z2hwSLtKxk~ z&R+qEp&ZU`(7NR@T3fO|nRSreHI|+SYsoh0e+s?I?OkRpxf4x^c#gJlwFCCZAf?W| z_}u4Y)Y73=;=e=G2<$V8Us)s4m1k#`&PAzeE9_4@Y8%9Bi`Y7anp0xgF)Xss9IxdV zqh+d7ZN-0jq{omtICr$(x7>q>DLjO)PI-}rzkmYV z#%l+7sRs@(N~JbP{B4mM;!=NHqHze) zLR`(ltJ9DVZ2o`O(&1<;P`)00+X7E#O!V@@t}#aQ7JSD*&o6V8DyF>#prM-34Rn|E zH;r^Vq9hG^K&hJi5{`nZVsz8eS=+1Fdh{;^oR;7SsBzuuRE!ht464nXv0U3G!A-5m z&oQBmQ({}rbF_IjdQ{N{=%uPSOKyW4qj6Y9K^3(l(%7CJY1X1OCkIEFahqm;8r$Wa zBSTHGhJn`JL-|2zpFL3HI>5m`N^P;_Qo{M#si~aa#WEs2O4a%Mq?${u$8Oc9HcaV<2R+>)I`=6xF`r|N*eL_PA*Bw;FJOc4c@-P0s?Ok7N97h?S-P^m}vy-iN-O!72muxOc(<-s!e~FzCw{hzlS8`Lg zN!%70m5Y68L(h)!*=gMJ=dOUDNC^5+BpxaOq7s#;D5zCIRY8?1p(2XJ0}_3x1OgsF zs;Wxu1L9Bl{bqLeX7A39W8Q$h+u5C&Z@&4yZ@&5F&+g1#Bm8k8KB2dFddag6|Hmy| zqBXr5_I8$g4w^`-#1<}Tr-QJ!CC*(72Y0Ad6{u^Gg$-b}=J2BhXI`qGOACJ6I(0=n zdM!C#D_6yJaxG%nlAdq-I;oeK-j`rMMWjw(``G~fFT8msIo*qPE`W_=@8Oc{AJ3yd zD|V@VEc+7dGt-Jw+Oqfh#GB_Ksuld$&|#88c7ara4m2Hl+-+eT6Lz4{yg&30g#HIY z|6u6~S$1hpdGmBXP)MVaV|qOGHP%?5>lt8EoUJ zF!f6|Rait%KNf;14rZ_{CxVNpoZpLCN2V!oO98JVj z4v2`KiI~cPn41ZW%7~i@jmn6diI~d4n41ZW%E6c)hDKBl#vCy;qH-|gXc^tCd2}d$d(92KJuGYt#E9{Vcn$w~;J zRENC`J@skX-bPrI=$l7X(fHzVSqSX;vJcCCjT*;``q#-9tNddzL5gUGPe8BPg{>w? zWehudm$3j?XI7EP*fD4>hxLj?n@lGv3c5!+P}se%-#4mlj*@O-_YGI>$Z0crzPWEF+G1SMjJpN)|?*eGy9 zk0G3c3Qj#REqSM62}}yKpG4R&)km9^j*~r&35X5T?qP?20V;V39A1LfD7{isM;PXM zXTZTjh+)%x4vH&!bRD__{I1GURzs)e$r+Iz{hjr;v1bZ=od*uQV*xj+s+7tF;1)ae zP&F85IGVbhdTzSh#P)HVtc~3OO>t~WT{CnPGrb|TNtO)5>uFs?{04Jva#I7 z=*IDSxu|KVgf8rBp^sumBOfi)RtW42 zU_h|vDuXqR4?rJE($m1*O1;=Ynwp1s;s!-mOL&WXF}T^+4AmwVjXn;Cbow@t`UcY2 zI%pO<6_ssbTIj@}?LaHs#*`vWzfS3<((hDdoE)~Zi!F9VW!)yOg#ESwmN!pjMz*{qd|z`&oBVf>{$@C#l~8kB z8yt!9-vqp@$@-)%rxW-~gzeFNZF1FmMOT58c0h+owx4=Tn|$_A7pQ}cp;%&KexIVf z86shc(C6I{M^AI=h81f=(Qu>wTvIwcN^3lVxTci5IMK!N0(;&cLs~xyH2Bb=~ikr<16S0Zh(DT|79!vly@StC`B|MmTPT)ar zWlMNa-U&R-y@t)o2hvaA*{Yl&SFL{wsc(rZNL9lEnQsXTWU66-#J7ZHs}h9-v+-kF zZ5+pb2xoEeXi|=>)jh{;>_hP}DeB=3`p8;K(W&1nYq5YCJ8?*VaIePbY6^=}%vaFM zsz^H|N7A3Z4;Ek)iaZjhB1WbsPR2cq*hSoxWq#^K3C^$V z#hWtX_V){4{rKxIPyM9w{hMB&wXO&&FboH;xEN{Ncpkm3yd9J7UD7Sn^%pX9YhTNV zR2By=4vw@iUDve))7dH0G_$ttG zCLNeYKDVPnwQ5X*z)kmbDH(vsoa35~>({<*#aC4;er%<3*Goa;4 z-o!p~M!pMWXP`JJhkQB^Ui~fy6s|eALAlrOG5j^quyQ2XG;c4ttPJ`|++5xdi`ecc2@10@+e`{5SB1}E|jVu$?|J&D(aqLg>@)e zko6sPd6pNy{#<8Z8SXZ({v)sck_viW0lcbwS>=0;Wdw~ei~?*BB=d#}4=*w!zy2F= zWqS3upoj)l3?$Kpy6dm0?uFkEYX?a4H+_@WG~O8spH z;m5M(y;8WRpm27Wx&yX~Hmqy6(b>^J$zrQLZFiW&U6DN0zO@bYivA@EIE-7$wXt8) znjueIy*}pY*PfSo^6K@`|!|wz(IULkF8r!syV!w&%jaF51G%(b-8y)ZiF&Ogbq#7M(Pm44n@@gu_>{ zEOCl=$k<|lg$*jz6&`+hv5Ve-4l=gzHCJI=Z|*kD-BxOMt!5S+S)EoI2lbe<)NQZeKW^#On< zk@X6bzRDVsmNg^|P0n?(v2k1*_RsC|Cd2D^c%4GcaJmX%H0mqCy!~0U^0>gt1BKy# z5=CmFFd-ilUnn3*nMT_1CfP1~<1qK4AaAFL#zcCA7hHJIyvdwRw+rn#F%Hp%BGWyL z+z2gmLppru$u?bDs%+L)QBGE*O}F4=oh*`|?FUY8QeDQ?Wy;MvmBLfnKm`>yXUSt+d7>ln>5e%6?V7c5jVLRSRE}QMjWpfB|rQM==2uOK0Ncj)I zs(wNmBmV&#rVV*a!j3WAn~Y+H2=9+DKJVB5rmpog?Hy@?*?mvlBV+0U>@iveDHfT< zVTA~kNknTYu!Sv^uhGfEK}%Ej}CgQz(9scHNU2e)I52zJ&O zT`aGzESD;WgXz`tSha%p^yQ+Y(euN@rK594kM$oP94hyX9N*WPnc9FQ$`cDvqyRt| zkLj^-{z)^B@BZS(Cxmg=G(moV^ZlcScptl^M+fh^aUR6^?PG@cHZ)2JUdGgCYeBia-gO773Uom!K_QC1pPtD%F0x?%-;}zpvAX%NATdH6s2hLe8 zz*+0jv`1fO9;xr=+6B&H4biMr>Dk5d3Ut5cQME*_9dPf`{CRO^atvD{ijdr!B61-T z^OfqhnLk~(?eF(}^N(M77i>pI7F!RCAo3-zf7jrI!20#&JFZ~E6|Nd*ahJ<-1-wl2 z;Q7Z(nZXOGx*x_3U~t zy!0kx8)X%GDOf;3J8rS(*)59)jL+qMI+C9mP2W8S|d*2zcQm$`WK>f`0(_^MId&?*d|nk%C%v zOdQ8=5dL}G^B9q3IR=g3d-r_ZrUFR@(0Wd7Rby>#(803Be&geY_-j;^;D7g(pP#(- z%0eZ;+CT1`FS%FwdGSOQI|MA0syz$Q+T$K9bUjh3F7#gRF9z6<=;8&eUyB-BnIDh^ zL5%E9?2@#CrYAuYTjXM}hz`|g@vb#(>yF;i(o*q=!hpT7s@MkQ!lg~pGf@tV`2P5MvE6pm1;R;N+LPZhMI`=cGHhGZZw d4Jd04)L{bDZN^{;gvLOA3WM49-7gtkSpW}?6JY=V delta 97 zcmZp;!`=WyTNra*`kOMCFr+dhGnfNuLm-{RV8CDo6fp#nDGZ4~YzY*#1oA-G49HGo cumD0!hBTlYNEW2h9E?pF(zfq@$>_=g01}H6TmS$7 diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/ref/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/ref/DirectInputExplorer.dll new file mode 100644 index 0000000000000000000000000000000000000000..8c8d1647e6df71332d74144883e511abab4f7ee0 GIT binary patch literal 15872 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 Date: Wed, 25 Dec 2024 01:27:46 +0100 Subject: [PATCH 05/13] Update README.md Added Demo App Preview Screenshot --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2525805..3175779 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ This package allows you to easily integrate both the input and ForceFeedback fea The package will create a virtual device inside Unity's Input System. This device can then be used like any other device inside the Input System, allowing for easy rebinding. ForceFeedback capabilites can be accessed via the DIManager class. The [DirectInputExplorer](../../tree/main/DirectInputExplorer~) is a windows forms application built in parallel with the C++ library to enable quick development by avoiding the need to reload Unity after every change. It also functions as an easy way to examine DirectInput devices. # Quick Start +![image](https://github.com/user-attachments/assets/dd76f79e-c4ab-434a-8a4d-0275e1dcb1ed) ### Installation From 68e21ef70bc2c502334320e381161cc979fec59f Mon Sep 17 00:00:00 2001 From: Dan <90098128+imDanoush@users.noreply.github.com> Date: Wed, 25 Dec 2024 01:28:09 +0100 Subject: [PATCH 06/13] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3175779..2525805 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,6 @@ This package allows you to easily integrate both the input and ForceFeedback fea The package will create a virtual device inside Unity's Input System. This device can then be used like any other device inside the Input System, allowing for easy rebinding. ForceFeedback capabilites can be accessed via the DIManager class. The [DirectInputExplorer](../../tree/main/DirectInputExplorer~) is a windows forms application built in parallel with the C++ library to enable quick development by avoiding the need to reload Unity after every change. It also functions as an easy way to examine DirectInput devices. # Quick Start -![image](https://github.com/user-attachments/assets/dd76f79e-c4ab-434a-8a4d-0275e1dcb1ed) ### Installation From ec3287e2471fe1fd3c24dd596cccdb4f71051a20 Mon Sep 17 00:00:00 2001 From: Dan <90098128+imDanoush@users.noreply.github.com> Date: Wed, 25 Dec 2024 01:31:13 +0100 Subject: [PATCH 07/13] Update README.md - Updated the Demo App Screenshot - Added a notice --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2525805..e7bf30b 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ This package allows you to easily integrate both the input and ForceFeedback fea The package will create a virtual device inside Unity's Input System. This device can then be used like any other device inside the Input System, allowing for easy rebinding. ForceFeedback capabilites can be accessed via the DIManager class. The [DirectInputExplorer](../../tree/main/DirectInputExplorer~) is a windows forms application built in parallel with the C++ library to enable quick development by avoiding the need to reload Unity after every change. It also functions as an easy way to examine DirectInput devices. # Quick Start +![image](https://github.com/user-attachments/assets/5398f792-d075-41fc-a292-1a7a585dbdc8) ### Installation @@ -70,9 +71,11 @@ This plugin only works on Windows 8+ 64-bit. Latest verified Unity version: 2022.2.1f1 -# Notice +# Notices -Occasionally calls to EnumerateDevices will take orders of magnitude longer than usual to execute (up to 60 seconds), this is caused by a Windows bug attempting to load an absent hardware device. USB Audio DACs & Corsair keyboards are known the cause this issue, try disconnecting and reconnecting offending USB devices. For more information see [this](https://stackoverflow.com/questions/10967795/directinput8-enumdevices-sometimes-painfully-slow) StackOverflow post about the issue from 2012. See issue [#1](/../../issues/1) for more info. +1) Occasionally calls to EnumerateDevices will take orders of magnitude longer than usual to execute (up to 60 seconds), this is caused by a Windows bug attempting to load an absent hardware device. USB Audio DACs & Corsair keyboards are known the cause this issue, try disconnecting and reconnecting offending USB devices. For more information see [this](https://stackoverflow.com/questions/10967795/directinput8-enumdevices-sometimes-painfully-slow) StackOverflow post about the issue from 2012. See issue [#1](/../../issues/1) for more info. + +2) THE UNITY INTEGRATION HAS NOT BEEN UPDATED TO THE LATEST VERSION IN THIS REPOSITORY. # Support From 398227d06c216d26a39d1cdd117da96c82a0206c Mon Sep 17 00:00:00 2001 From: Dan <90098128+imDanoush@users.noreply.github.com> Date: Wed, 25 Dec 2024 20:35:37 +0100 Subject: [PATCH 08/13] Update README.md fixed Thrustmaster links --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7bf30b..7a1fcd4 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Next, install this package: | [Fanatec ClubSport Pedals V3](https://fanatec.com/eu-en/pedals/clubsport-pedals-v3) | ✅ Verified | | [Fanatec ClubSport Shifter SQ V 1.5](https://fanatec.com/eu-en/shifters-others/clubsport-shifter-sq-v-1.5) | ✅ Verified | | [Logitech G29 / G920](https://www.logitechg.com/en-gb/products/driving/driving-force-racing-wheel.html) | ✅ Verified | -| [Thrustmaster TX(?)](https://shop.thrustmaster.com/de_de/tx-racing-wheel-leather-edition-eu.html) | ✅ Verified | +| [Thrustmaster TX](https://eshop.thrustmaster.com/en_us/tx-racing-wheel-leather-edition.html) | ✅ Verified | | [PRO Racing Wheel](https://www.logitechg.com/en-gb/products/driving/pro-racing-wheel.html) | 🔲 Untested | [comment]: <> (✅ 🔲) From 56117a03958e5e666b0ec27b92eff7e0b01e1b63 Mon Sep 17 00:00:00 2001 From: Dan <90098128+imDanoush@users.noreply.github.com> Date: Wed, 25 Dec 2024 20:38:03 +0100 Subject: [PATCH 09/13] Update README.md Updated hardware support items --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7a1fcd4..e0ea8d7 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Next, install this package: | [Fanatec ClubSport Pedals V3](https://fanatec.com/eu-en/pedals/clubsport-pedals-v3) | ✅ Verified | | [Fanatec ClubSport Shifter SQ V 1.5](https://fanatec.com/eu-en/shifters-others/clubsport-shifter-sq-v-1.5) | ✅ Verified | | [Logitech G29 / G920](https://www.logitechg.com/en-gb/products/driving/driving-force-racing-wheel.html) | ✅ Verified | +| [Simagic Alpha-Mini](https://us.sim-motion.com/products/simagic-alpha-mini-wheel-base) | ✅ Verified | | [Thrustmaster TX](https://eshop.thrustmaster.com/en_us/tx-racing-wheel-leather-edition.html) | ✅ Verified | | [PRO Racing Wheel](https://www.logitechg.com/en-gb/products/driving/pro-racing-wheel.html) | 🔲 Untested | From 484370b08e99b57086526cca83d44b3725e83b9b Mon Sep 17 00:00:00 2001 From: Dan <90098128+imDanoush@users.noreply.github.com> Date: Wed, 25 Dec 2024 20:41:10 +0100 Subject: [PATCH 10/13] Update README.md Added some clarifications --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e0ea8d7..781b04a 100644 --- a/README.md +++ b/README.md @@ -55,14 +55,14 @@ Next, install this package: | [Fanatec WRC Wheel Rim](https://fanatec.com/eu-en/steering-wheels/csl-elite-steering-wheel-wrc) | ✅ Verified | | [Fanatec Formula V2 Wheel Rim](https://fanatec.com/eu-en/steering-wheels/clubsport-steering-wheel-formula-v2) & [APM](https://fanatec.com/eu-en/shifters-others/podium-advanced-paddle-module) | ✅ Verified | | [Fanatec CSL LC Pedals](https://fanatec.com/eu-en/pedals/csl-elite-pedals) | ✅ Verified | -| [Fanatec ClubSport Pedals V1](https://www.youtube.com/watch?v=jw52Dq3SZaA) | â„šī¸ No ABS Vibration | +| [Fanatec ClubSport Pedals V1](https://www.youtube.com/watch?v=jw52Dq3SZaA) | ✅ Verified | | [Fanatec ClubSport Pedals V3](https://fanatec.com/eu-en/pedals/clubsport-pedals-v3) | ✅ Verified | | [Fanatec ClubSport Shifter SQ V 1.5](https://fanatec.com/eu-en/shifters-others/clubsport-shifter-sq-v-1.5) | ✅ Verified | | [Logitech G29 / G920](https://www.logitechg.com/en-gb/products/driving/driving-force-racing-wheel.html) | ✅ Verified | | [Simagic Alpha-Mini](https://us.sim-motion.com/products/simagic-alpha-mini-wheel-base) | ✅ Verified | | [Thrustmaster TX](https://eshop.thrustmaster.com/en_us/tx-racing-wheel-leather-edition.html) | ✅ Verified | | [PRO Racing Wheel](https://www.logitechg.com/en-gb/products/driving/pro-racing-wheel.html) | 🔲 Untested | - +Note for pedals, only input readings were guaranteed to *likely* work fine. [comment]: <> (✅ 🔲) From 42dd405eb073e18f9ce2b2302ae8502c00066cd1 Mon Sep 17 00:00:00 2001 From: ATG-Simulator <16223109+ATG-Simulator@users.noreply.github.com> Date: Tue, 7 Jan 2025 02:20:49 +0100 Subject: [PATCH 11/13] Final modifications from ImDanOush (ATG Simulator) ## Updated the Unity C# part - Added periodic and custom effects - Fixed the way the native DLL was wrongly called the Update Effects functions - Added enhanced Ramp and Periodic parameters ## Updated ReadMe - Added additional info - Corrected typos ## Improved C++ Native code - Ramp effect now uses Start and End - Periodic effects now use frequency as well ### FFB Explorer utilizes the Ramp effect in the old simplified way ### Cleaned up the repository and added a Unity Sample Scene The Custom Effects keep returning the Wrong Parameters value, so I hid it in the Unity Inspector but the fundamentals and all of its functions are already in the project. --- .../net5.0-windows/DirectInputExplorer.dll | Bin 74752 -> 74752 bytes .../net5.0-windows/DirectInputExplorer.exe | Bin 126464 -> 126464 bytes ...CoreApp,Version=v5.0.AssemblyAttributes.cs | 4 - ...nputExplorer.csproj.BuildWithSkipAnalyzers | 0 ...tInputExplorer.csproj.FileListAbsolute.txt | 54 ---- .../DirectInputExplorer.designer.deps.json | 11 - ...tInputExplorer.designer.runtimeconfig.json | 16 - .../net5.0-windows/DirectInputExplorer.dll | Bin 74752 -> 0 bytes ...tInputForceFeedbackDemoApp.AssemblyInfo.cs | 25 -- ...tInputForceFeedbackDemoApp.Form1.resources | Bin 180 -> 0 bytes ....GeneratedMSBuildEditorConfig.editorconfig | 8 - ...eedbackDemoApp.csproj.FileListAbsolute.txt | 36 --- ...putForceFeedbackDemoApp.designer.deps.json | 11 - ...eedbackDemoApp.designer.runtimeconfig.json | 16 - .../DirectInputForceFeedbackDemoApp.dll | Bin 16384 -> 0 bytes .../obj/Debug/net5.0-windows/apphost.exe | Bin 126464 -> 0 bytes .../ref/DirectInputExplorer.dll | Bin 15872 -> 0 bytes .../ref/DirectInputForceFeedbackDemoApp.dll | Bin 9216 -> 0 bytes .../refint/DirectInputExplorer.dll | Bin 15872 -> 0 bytes ...rectInputExplorer.csproj.nuget.dgspec.json | 72 ----- .../DirectInputExplorer.csproj.nuget.g.props | 15 - ...DirectInputExplorer.csproj.nuget.g.targets | 2 - ...ceFeedbackDemoApp.csproj.nuget.dgspec.json | 65 ---- ...tForceFeedbackDemoApp.csproj.nuget.g.props | 18 -- ...orceFeedbackDemoApp.csproj.nuget.g.targets | 6 - .../obj/project.assets.json | 77 ----- .../Debug/DirectInputForceFeedback.dll.recipe | 11 - .../DirectInputForceFeedback/Debug/vc142.idb | Bin 248832 -> 0 bytes .../DirectInputForceFeedback.cpp | 3 +- .../DirectInputForceFeedback.dll.recipe | 11 - .../Debug/DirectInputForceFeedback.dll.recipe | 11 - .../DirectInputForceFeedback.dll.recipe | 11 - ...ForceFeedback.vcxproj.FileListAbsolute.txt | 0 .../x64/Release/DirectInputForceFeedback.dll | Bin 64000 -> 0 bytes .../x64/Release/DirectInputForceFeedback.exp | Bin 3391 -> 0 bytes .../x64/Release/DirectInputForceFeedback.lib | Bin 6558 -> 0 bytes Plugin/DLL/DirectInputForceFeedback.dll | Bin 428032 -> 428032 bytes Plugin/DirectInputManager.cs | 41 ++- Plugin/DirectInputTypes.cs | 2 +- Plugin/Samples.meta | 8 + Plugin/Samples/InputSystem.meta | 8 + .../InputSystem/ControlScheme.inputactions | 0 .../ControlScheme.inputactions.meta | 14 + .../Samples/InputSystem/FFBInspectorDemo.cs | 302 ++++++++++++++++++ .../InputSystem/FFBInspectorDemo.cs.meta | 11 + Plugin/Samples/InputSystem/Sample.unity | 295 +++++++++++++++++ Plugin/Samples/InputSystem/Sample.unity.meta | 7 + .../Samples~/InputSystem/FFBInspectorDemo.cs | 80 ----- README.md | 16 +- 49 files changed, 682 insertions(+), 585 deletions(-) delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.csproj.BuildWithSkipAnalyzers delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.csproj.FileListAbsolute.txt delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.designer.deps.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.designer.runtimeconfig.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.AssemblyInfo.cs delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.Form1.resources delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.GeneratedMSBuildEditorConfig.editorconfig delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.csproj.FileListAbsolute.txt delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.designer.deps.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.designer.runtimeconfig.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/apphost.exe delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/ref/DirectInputExplorer.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/ref/DirectInputForceFeedbackDemoApp.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/refint/DirectInputExplorer.dll delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/DirectInputExplorer.csproj.nuget.dgspec.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/DirectInputExplorer.csproj.nuget.g.props delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/DirectInputExplorer.csproj.nuget.g.targets delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.dgspec.json delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.g.props delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.g.targets delete mode 100644 DirectInputExplorer~/DirectInputExplorer/obj/project.assets.json delete mode 100644 DirectInputForceFeedback~/DirectInputForceFeedback/Debug/DirectInputForceFeedback.dll.recipe delete mode 100644 DirectInputForceFeedback~/DirectInputForceFeedback/Debug/vc142.idb delete mode 100644 DirectInputForceFeedback~/DirectInputForceFeedback/Release/DirectInputForceFeedback.dll.recipe delete mode 100644 DirectInputForceFeedback~/DirectInputForceFeedback/x64/Debug/DirectInputForceFeedback.dll.recipe delete mode 100644 DirectInputForceFeedback~/DirectInputForceFeedback/x64/Release/DirectInputForceFeedback.dll.recipe delete mode 100644 DirectInputForceFeedback~/DirectInputForceFeedback/x64/Release/DirectInputForceFeedback.vcxproj.FileListAbsolute.txt delete mode 100644 DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.dll delete mode 100644 DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.exp delete mode 100644 DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.lib create mode 100644 Plugin/Samples.meta create mode 100644 Plugin/Samples/InputSystem.meta rename Plugin/{Samples~ => Samples}/InputSystem/ControlScheme.inputactions (100%) create mode 100644 Plugin/Samples/InputSystem/ControlScheme.inputactions.meta create mode 100644 Plugin/Samples/InputSystem/FFBInspectorDemo.cs create mode 100644 Plugin/Samples/InputSystem/FFBInspectorDemo.cs.meta create mode 100644 Plugin/Samples/InputSystem/Sample.unity create mode 100644 Plugin/Samples/InputSystem/Sample.unity.meta delete mode 100644 Plugin/Samples~/InputSystem/FFBInspectorDemo.cs diff --git a/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/bin/Debug/net5.0-windows/DirectInputExplorer.dll index 477d40ba1761ead5528f2e09c2e218208433bb22..54c136c687a273a6cf1af20a3764b00cf8ab8196 100644 GIT binary patch delta 1457 zcmY+^drVtZ90&04DW$uIS6jxQn8K*TuqkS3Z(nG!%Z6b~HZ;ru>f$KWX_Up-X(CfP z1~fC-0$roU&G0a2HZ!q`O;($LvPay3jyMdqlDU{7RgF{unUlM3PqcaeZ;%}yYF z>R3}D6R|14*#Stsy@2NSgh|z>CEoCP{n5-a^Bcf~n1AwAz*r@XdLQk&aiJckEsC}j zCWJjW!?pN8LU;y~T*dj*!d^^st(1QwG-96X%hCm*2|sXM*CvE!{KmCZkPx25zjrE4 z-wDq_9k413{?51$`CKPTe->WAMy~y)gs>l#Tt-8;(1L0%*SaOai#o1?`~MKy(8$%R zTNMt#$2FuQ^kp38y27&8@UFF1S$>@Hbwqf$o#_xh=4#UA(l-&~N}CGlTevJMXmFQk z@HSFmI=1DZG_QD2TSa@&FG@2@6@Ef|AAI?`;TO}cJ+0pbot?YcfX zg|w_7KBI1W5uTk=7DNGiGhd;HOP|$1lPKS%j9V4lbQ*{1A-#<*++fRpjYPc^&frgd zQO0HbEvpMdn>3h(aZ<`cxMsMeo`olTB3c{hQ2GqpN^YrB2+C3pLkfMey0IP_q%d$# zHo~(GL}?1KyRvyCW!)q*VRCoZjelN{AQ%oLQRtgwLoCwVB9E+B{f)9;inAWxQ3 zx(I`;ZoGmEbP)r0W!Eq=5jlS;k8GZ3PJX{r7aKIL`>Ato+e!0FGkYg%Rq^fFq$6vy z=oGCEv)AnOxm;eG!|b%%EcVvc7N@mM6unl5#pZKby)JKjX#=@Ps*=6YDUe-Hso0Lr zv9`jls+A(;W|DR({aVjj1#6@1#u|-$TSPYLvOj;UbI0!J?x6b7x?I6o84(O*$ijOc zndQA~^6Hx9gXH+xm3YH3cgbJ;%42gO*TJSP3z-VZT4dQk%o(gNvay)_8qd3r9L%T} z*#Q?}g#%`IS#!b%7kj+0$$d_C9&E6%?^gD-u-u9^HbP_-(kKf{eR8i?8Wq1!n3%GYlk%>?0}7{$Py8JaB)@MF(Wi$1DA2-HNlTsu6F%R zVHbQ{y?R2Q$17apEZc*2aih|HknttNc({S-Wqin0uU|^{BFVL2HPP2FBCEsVE!N<5 zT!=00UwvPeSKO;Br*ERuAzfLjAne(nQiLb8F4}?mn6Lkh(6Cdk5K8lQ(KxbP9;WwU zcPUv&*Gxaab6jzzBj{Fyb$MQT6e+HRu9hCd1x50G_24^MV;IqvkskbeTc!`Wr50^? zj|OQE7Puw~_R$0ckCN%kL3$kDa|LpPv=3RXzfD2<5i*rZ2!-|}&;VBrU*O}dDy*@%u!~UqEX8l2W z7Fk&x_>_9-5UMswSqF^l$$W`cE<x*aAlL*UFUWQ4$BP)VCp}{1& zZp*rP)`BFRMDmvG5;C%`lF?EPE}=Cob-hZ$hWnYqvXl-}=zN5SQt1=~_Ag&7okFfG zrF0rbSrNQ|({vhLw`7;mojN)&l21xf+lPPNq+dT*{Pwod^kZjUJYgGsTK#IeI*+vE z+5(MDqUaPIc2Ts89-q(eEBA>Net%%6FW_-I9gVKaO403irT;7-L!{vN_&s5e&5x_t z9i3!jj%`zO@h{B8oReUiQzHJOnXJ+;^hE}n-A&bRebzAYK-oT1Tx%h{6@1pVILof3 zIv3P#{avS>uRHwP{%d@9lYT9AvpuaOYBiDh_?(5<Su0hYSi3I|*5LM1yyWB@iYtn1aPD7|ehyBOsX!go!|T dV}=x<4ilgXkS-&jY${kZ38ZWL?w5?NECAQ95{Cc) delta 97 zcmZp;!`=WyTNra*`lm4@F{CmW1EDDpn=lxF*&xz_ArS~ufY=a-jTwx9>=cGHhGZZw d4Jd04)L{bDZN^{;gvLOA3WM49-7gtkSpW}?6JY=V diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs deleted file mode 100644 index 3b1554c..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v5.0", FrameworkDisplayName = ".NET 5.0")] diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.csproj.BuildWithSkipAnalyzers b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.csproj.BuildWithSkipAnalyzers deleted file mode 100644 index e69de29..0000000 diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.csproj.FileListAbsolute.txt b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.csproj.FileListAbsolute.txt deleted file mode 100644 index 8b24315..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,54 +0,0 @@ -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.exe -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.deps.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.runtimeconfig.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.runtimeconfig.dev.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\bin\Debug\net5.0-windows\ref\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.pdb -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.AssemblyReference.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.Form1.resources -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.GenerateResource.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.AssemblyInfoInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.AssemblyInfo.cs -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.CoreCompileInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\ref\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.pdb -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputExplorer\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.genruntimeconfig.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.AssemblyReference.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.Form1.resources -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.GenerateResource.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.AssemblyInfoInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.AssemblyInfo.cs -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.CoreCompileInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\ref\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.pdb -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.exe -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.deps.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.runtimeconfig.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.runtimeconfig.dev.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\ref\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.pdb -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.genruntimeconfig.cache -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.exe -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.deps.json -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.runtimeconfig.json -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.runtimeconfig.dev.json -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\bin\Debug\net5.0-windows\DirectInputExplorer.pdb -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.AssemblyReference.cache -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.Form1.resources -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.GenerateResource.cache -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.AssemblyInfoInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.AssemblyInfo.cs -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.csproj.CoreCompileInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\refint\DirectInputExplorer.dll -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.pdb -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\DirectInputExplorer.genruntimeconfig.cache -C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputExplorer~\DirectInputExplorer\obj\Debug\net5.0-windows\ref\DirectInputExplorer.dll diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.designer.deps.json b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.designer.deps.json deleted file mode 100644 index 74b9003..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.designer.deps.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v5.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v5.0": {} - }, - "libraries": {} -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.designer.runtimeconfig.json b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.designer.runtimeconfig.json deleted file mode 100644 index bfd2041..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.designer.runtimeconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net5.0", - "framework": { - "name": "Microsoft.WindowsDesktop.App", - "version": "5.0.0" - }, - "additionalProbingPaths": [ - "C:\\Users\\Ducky\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\Ducky\\.nuget\\packages" - ], - "configProperties": { - "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true - } - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputExplorer.dll deleted file mode 100644 index 477d40ba1761ead5528f2e09c2e218208433bb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74752 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 -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("DirectInputForceFeedbackDemoApp")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyProductAttribute("DirectInputForceFeedbackDemoApp")] -[assembly: System.Reflection.AssemblyTitleAttribute("DirectInputForceFeedbackDemoApp")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] -[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.Form1.resources b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.Form1.resources deleted file mode 100644 index 6c05a9776bd7cbae976fdcec7e3a254e93018279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.GeneratedMSBuildEditorConfig.editorconfig b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 7694274..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,8 +0,0 @@ -is_global = true -build_property.TargetFramework = net5.0-windows -build_property.TargetPlatformMinVersion = 7.0 -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.PublishSingleFile = -build_property.IncludeAllContentForSelfExtract = -build_property._SupportedPlatformList = Android,iOS,Linux,macOS,Windows diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.csproj.FileListAbsolute.txt b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.csproj.FileListAbsolute.txt deleted file mode 100644 index f57f6c9..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,36 +0,0 @@ -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.exe -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.deps.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.runtimeconfig.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.runtimeconfig.dev.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\ref\DirectInputForceFeedbackDemoApp.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.pdb -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.csproj.AssemblyReference.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.Form1.resources -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.csproj.GenerateResource.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.AssemblyInfoInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.AssemblyInfo.cs -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.csproj.CoreCompileInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\ref\DirectInputForceFeedbackDemoApp.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.pdb -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.genruntimeconfig.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.exe -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.deps.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.runtimeconfig.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.runtimeconfig.dev.json -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\ref\DirectInputForceFeedbackDemoApp.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\bin\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.pdb -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.csproj.AssemblyReference.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.Form1.resources -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.csproj.GenerateResource.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.AssemblyInfoInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.AssemblyInfo.cs -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.csproj.CoreCompileInputs.cache -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\ref\DirectInputForceFeedbackDemoApp.dll -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.pdb -C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedbackDemoApp\DirectInputForceFeedbackDemoApp\obj\Debug\net5.0-windows\DirectInputForceFeedbackDemoApp.genruntimeconfig.cache diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.designer.deps.json b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.designer.deps.json deleted file mode 100644 index 74b9003..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.designer.deps.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v5.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v5.0": {} - }, - "libraries": {} -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.designer.runtimeconfig.json b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.designer.runtimeconfig.json deleted file mode 100644 index bfd2041..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.designer.runtimeconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net5.0", - "framework": { - "name": "Microsoft.WindowsDesktop.App", - "version": "5.0.0" - }, - "additionalProbingPaths": [ - "C:\\Users\\Ducky\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\Ducky\\.nuget\\packages" - ], - "configProperties": { - "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true - } - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.dll b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/DirectInputForceFeedbackDemoApp.dll deleted file mode 100644 index 3a7d9c17e228ca6542f074b7ed5f3386d68d5219..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 a^YbU_0W9+Pu^?r-{zUEjvsu5_1OEdeu;au4 diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/apphost.exe b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/apphost.exe deleted file mode 100644 index 2c13837f014252b4362cd816372b2497b79ff828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126464 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

    c8qpu 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 diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/refint/DirectInputExplorer.dll b/DirectInputExplorer~/DirectInputExplorer/obj/Debug/net5.0-windows/refint/DirectInputExplorer.dll deleted file mode 100644 index 8c8d1647e6df71332d74144883e511abab4f7ee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15872 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 - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\Ducky\.nuget\packages\ - PackageReference - 6.4.0 - - - - - \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputExplorer.csproj.nuget.g.targets b/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputExplorer.csproj.nuget.g.targets deleted file mode 100644 index 3dc06ef..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputExplorer.csproj.nuget.g.targets +++ /dev/null @@ -1,2 +0,0 @@ -īģŋ - \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.dgspec.json b/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.dgspec.json deleted file mode 100644 index 259aa3e..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.dgspec.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "format": 1, - "restore": { - "C:\\Users\\Ducky\\Documents\\GitHub\\Unity-ForceFeedback\\~DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp.csproj": {} - }, - "projects": { - "C:\\Users\\Ducky\\Documents\\GitHub\\Unity-ForceFeedback\\~DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "C:\\Users\\Ducky\\Documents\\GitHub\\Unity-ForceFeedback\\~DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp.csproj", - "projectName": "DirectInputForceFeedbackDemoApp", - "projectPath": "C:\\Users\\Ducky\\Documents\\GitHub\\Unity-ForceFeedback\\~DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp.csproj", - "packagesPath": "C:\\Users\\Ducky\\.nuget\\packages\\", - "outputPath": "C:\\Users\\Ducky\\Documents\\GitHub\\Unity-ForceFeedback\\~DirectInputForceFeedbackDemoApp\\DirectInputForceFeedbackDemoApp\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\Ducky\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net5.0-windows7.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net5.0-windows7.0": { - "targetAlias": "net5.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "net5.0-windows7.0": { - "targetAlias": "net5.0-windows", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.301\\RuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.g.props b/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.g.props deleted file mode 100644 index 8936ed3..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.g.props +++ /dev/null @@ -1,18 +0,0 @@ -īģŋ - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\Ducky\.nuget\packages\ - PackageReference - 5.10.0 - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.g.targets b/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.g.targets deleted file mode 100644 index 53cfaa1..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/DirectInputForceFeedbackDemoApp.csproj.nuget.g.targets +++ /dev/null @@ -1,6 +0,0 @@ -īģŋ - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - \ No newline at end of file diff --git a/DirectInputExplorer~/DirectInputExplorer/obj/project.assets.json b/DirectInputExplorer~/DirectInputExplorer/obj/project.assets.json deleted file mode 100644 index 7a4c022..0000000 --- a/DirectInputExplorer~/DirectInputExplorer/obj/project.assets.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "version": 3, - "targets": { - "net5.0-windows7.0": {} - }, - "libraries": {}, - "projectFileDependencyGroups": { - "net5.0-windows7.0": [] - }, - "packageFolders": { - "C:\\Users\\Ducky\\.nuget\\packages\\": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "C:\\Users\\Ducky\\Documents\\GitHub\\Unity-DirectInput\\DirectInputExplorer~\\DirectInputExplorer\\DirectInputExplorer.csproj", - "projectName": "DirectInputExplorer", - "projectPath": "C:\\Users\\Ducky\\Documents\\GitHub\\Unity-DirectInput\\DirectInputExplorer~\\DirectInputExplorer\\DirectInputExplorer.csproj", - "packagesPath": "C:\\Users\\Ducky\\.nuget\\packages\\", - "outputPath": "C:\\Users\\Ducky\\Documents\\GitHub\\Unity-DirectInput\\DirectInputExplorer~\\DirectInputExplorer\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\Ducky\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net5.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net5.0-windows7.0": { - "targetAlias": "net5.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - } - }, - "frameworks": { - "net5.0-windows7.0": { - "targetAlias": "net5.0-windows", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "downloadDependencies": [ - { - "name": "Microsoft.NETCore.App.Host.win-x64", - "version": "[5.0.17, 5.0.17]" - } - ], - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.100\\RuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/Debug/DirectInputForceFeedback.dll.recipe b/DirectInputForceFeedback~/DirectInputForceFeedback/Debug/DirectInputForceFeedback.dll.recipe deleted file mode 100644 index 6d6e576..0000000 --- a/DirectInputForceFeedback~/DirectInputForceFeedback/Debug/DirectInputForceFeedback.dll.recipe +++ /dev/null @@ -1,11 +0,0 @@ -īģŋ - - - - C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedback\Debug\DirectInputForceFeedback.dll - - - - - - \ No newline at end of file diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/Debug/vc142.idb b/DirectInputForceFeedback~/DirectInputForceFeedback/Debug/vc142.idb deleted file mode 100644 index 4e3db29ab5f5587b030a70ceac5ec47a271964d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248832 zcmeHw37i|nm44X-NC*TH?#qbF*cj%rv9Y;qY;1#pa2Onj@L1F8nQ2B+D{5)RL$V3~ zm@HW^kSu2i;U)`SAV3J`62KuWHz8zUV+`RYA)5^>S^nV{!25lrZmDNHA{uqc(8;Uc z?{kf$*RNlFRqxfSQnh@9V-;M_?Jg!}x6Yn4DRIQHa}(2A+S)eRXuCPbDwIztH5S!7 zz_-`q8%ibgzw(bTAPmHvfftopQ!O8?`9`=wFIGR1zk~r{;BSusy8DNfW)1cK>iZP| z`9l~G2L6T^m~+griTx1+*d)e+je!SV*nRAA&%d+u>gRSJ%iJGJ05t~K2w>sgw~tdQ z<$0}6uG>|u*+Q$8!ON_h_VlY#t}o{fRU#seCH$m{)wV+XcNHh86pLT{J~+ zzf~yZicZ#so$%d}+{ai~miw>ScUfz|H2a4ADR`Z?F8C{^Qw0W(8ZD}8$om6`vN~26 z(3N#^Ce?X)+bYM&k05n4Z4D{xq++XRhQqMlk~uol1&8w~S*UI2c`fZ@)+~Q*3FrAs z7f#w><7JcPocpJh@2r|IYsD73D%F}xWrxhzLnnNh|7HHKJ1>&?zmaURx$}R&TVfPr z20twQ9%%|6O|ta&#-Wu%HcKMf#chXjG8|D++U_d(X>~+RrJ_?^qDIuE z^L;Z7Tx<0Z(X?)-3tO;8xF5E05YaFUFJq&k`qfuNqa4>r#DVvCgE_0$2<=X;XcscB z)n})T==1%$yisFjWH67%*YHNnE2l|DR1Mhyi8wN<`&t>hCuI%7KqRgarvQwTs$NqX z%iFclEvs((Mx<`Q9hf@BRO>QMSH{Knlm#Or#Iy00JkD`&#x$Z(e_4f0&x|(sRng8C z-MpJ|dpP8x_iEt%CUpiZrt*1gP8Cy5&gTA3#9@PdhUZQ4`=~U77heO2nady_HmyC=oXansS z_tC8yva=hVc6@^r-KOf-P|*!4*dv_zh;sg~#tAro0L%A(BOVSMmd4k)XN@sl*U`ff z@)^T-knjKM>xm)Rui-wZOjyzNM)CjA9E+`H0P_7`U^8MdvPxi|9e+`~f z=e|J{|Np2n@CZ@*tG(zEYRJ+0k(OkJZ?V>fk4gQ$lMnqC)#MGBUHhx*Ve3J|cNwyQ zYf^U*2dk%dtA}lyaG&s@W0UIFUgj9p9y&ACi9NgEi^x&mBZ~j?AsuXJH2j=QFi@-8 zKchDPqaVa!5VDH{{NArl&BnfHZOStyq5bhX+XDvbS~pa`3oxpfqqOo>zERCs_7BUiSd=$q%P3kHPBvS=f7UymhkO%TKO1%V3L4u) zcL~m`RE`aeVEwvyGO`;_KiUIsVHCl$-p+xXzfU?s+oBAm>h8y|Z;1@wr}7<-VZ9*6 zKRi&U;^@;=6#uW|QP}YJ-*vWW6r-rT#cEP-kbI{5(&@gYsYesB`Q4lo(Bb2dCYdQu zTX?#*3Bg()%`1PuX4vGR-xHZs?vIqpml!5>gX{2_mO5286bz#HKcD3v%^o0{h3L*l zz{`Q!KmAZ=^XiHV75^Q6QrYB9LhTsxJ+9$5Fc%K6#qB)%pkfkbhhxLO&(>?8MaeWJ_K&` z4nvNcnbhnLLPox3{2s^9@AR8sc)oJ%+N5%fm0`z_3~R^Pl1>XhTcaO>v+!X23Sa}E zb@^TQyg%!(yZ-XfycgHJv*yolKW)#yf=|w)JhYio(^&7I)FRXiHdSge>hvZ`wV?jy zmP*Y*ebqKf9gcb)z#r6kHlb7(>dE+V&COBI$FJ>dg?jTXl$wcpeY`jX^*!4v^+nX} zJ1a$-dhz)z)Yt5yR1fOOP&OX*O#Fh+B-GdA^&Y6l;<_VH=V0Gd)JxV^3U8^mKd;mb zm=xjnf7IuoXX5rs@rObmfISDJE+z28K&TgdL8<*vTj1k()K|f-y-;s}Mjn9rO%S>x z>aTr9sohZTg%@8!z0poeorL-#*f$;ZJhZPH^?`W3FX}WtUyOPIcwB(`54i3`)-a|6 z^@afZYA*i3ZxpFZQR5Qb7r2$$1U&46`VH`nE>Vwfr_?d173@3?6}hL5*3T+60rlC? z+m3qGSf$V;wS58{q8G)^%GI|0%*Eg2xGpCdgZ5; zLX&hsSEy^Dls~|A;<%YKndsv z27sl&AaDxs6<~dU;gcZ{5mrwX3@;2#3@3w2z0yNz)&>@ zI0RrAWJqRsI}~78S^yjl904%QeGy=oJsLO$I2K?yI}SJ=SOk0tU?@Kk_%gsScoMJ} z=meGkDWD6m0ETB9=mvU#UcdoP2Ks;ukOgvp3*>>1yF~H-kK1;+zc3&SL}Q@x+>qfl z6xOVA{%7q2!2XI}&i~Z@0o4&U4taz?|Ja_%LF(V<@BIAFM;xH>3G%l<`MA4D`mu{6 z=YK}|?TMWKX|MjuvYh`}>xZW?>5lgN&tE_B;)ekqOep_SjNvFC=YJ}LI{a0Ioc|g9 zx65+=r_o>+HBEodw*uSl{GPOWB&g?aVhA)`; zed}0!In3{b^Y}uT-Eeixh}`F#0IM(Axdb8Pt>2G3#$)(r>b{P*A+;kT}{IsXZ{T4#WM zjn7sA&jG7}=Ybc1-vBQHUjZ;2>N;zL6Nmc9u25=^@95@R&8#o8}4)9&z zpMi6M^MLb#3xErOi-7L|7X#l1E&+Z3TnbzUTn=0TTnStSTn$_U{1EsT;9B51fb;Ud z0@njK05<|Z0&W6s25td<4BQI*1h@^j9k>Iy6Sxbw8~8Wi9^j|Iy}*6I{lH4#XTSr% z&w&Sle+M1{9tIu(9t9o)9tWNPo&@E^c4z_Y-|Rd&LS_XTSG|DTxB z6^5S*YW%7HW-Ub+5C-DS0MGx4|Hr!z#d=|&Q3k~S8)Z(e69(eXfcSs>`%qdS3^dAs z_GXu;{WmQLur99&?p1q|BW&y*9imh zXF&Wv{(UGd5C$4$K>WW^=HxnIApQ)9|Hr=%r3J!3qYQ}uH_Dt`Ck(`&0rCI%_o1{v z7-*CM@&87dlk0?m_%k5>AOAj-76=24G9donD06b1Fc5zR#Q)>phtdLJpiu_I{~Kja zt`i30&w%)U{QFQ^APh9hfcSr-%*l1aK>QgH|BrtkN(+R6Mi~(QZTzv_KeWlmYSoMwyfAgn{@oApRf! zK9m*+1C25u{@*Bba-A>`e+I<=pG5dUwKIk`?4h(813|MBlbX@M}%CR=ceJCvu1{!5R{J&A={tSr!$G;Dy1;Rk142b_X%A8y$48)%S@&EYup|n64 zXp{l*|3;aU>x6;$Ga&vS|2~u!2m_5WApYMdb8?+95Pt^5|Ks0>(gI`%qdS3^dAs_GXu;{WmQ zLur99&?p1q|BW&y*9imhXF&Wv{(UGd5C$4$K>WW^=HxnIApQ)9|Hr=%r3J!3qYQ}u zH_Dt`Ck(`&0rCI%_o1{v7-*CM@&87dlk0?m_%k5>AOAj-76=24G9donD06b1Fc5zR z(giOub8NL8WAJAlcoBb0K)o40+k2c+j1za@y)`J5-kAS{N)mss05$+le{{lQ=WqD% zn%`{x)_O}<%)V{$gWq_4oPUpn(DB;#O1=A8r9SwKQb%s8)Qz7~>b=k7?=6)&Y+I!| z@&3)9Q)(gPI`RIkTPU??N2OMNTB+iCunDj4+(xPGAoC>jKCqcm_id-t{W~Z%4)0IF zd*5DPsb#pwshcP@xVcgtxb~^7lzQe1N-f_|sij+^UAXRf7<>S*C$4{eBc)zN!#W_h zH+0R1T?a${V%T^XKD!Y19g5G-hmAjgZ8yQrOJLVne0~G$+yt-hNBhR$^CWEC0P?-C zaVOZa1wP*x*X$1a{{i+5!k$fW?ayIb1~xxIJ7Ldid_ErUJr5gqgN;uB%VFO>v>7&b zKyCoGErX3S(7so2@AF{Wa@hGc?(;nEeIaao759D#`q^)7=#yIghL03Xu9VTrS1y!4 zV#&aVfBf)|?El;0-uS$)Z`r=5ar6`fqZR2=$A%@6WcZ;O@BudCao?XFT!k~ej`PFAyLB#+Z=oTJ+~ zr_#oGPH{fkc${wIT()s;rHylR8xLh0hkjD?gLT|S-mZ6D5!ziyW$gjC&{w`?zTo!Y zokX{jvAx8ErTb2um>h6&X?MU&^f?$k?QKaXXJtxh8-KR6wX{#|m_EIwEm_J2auF4I zy{Uqorm|Gt=}u*x%%Cxic?|MYk8M(`m+nia`}*xdZ6mXeRd7AGyO`*AyizKY@QS6h z<0d=W+NUQiH=EV2nC!QbMc2)E$*hMz+o!a2OmCUo);4)sg>ZYRl`nq8eMZ}11v}-r zx!MXx(eXLEI1qIR1wEh3SrKjWHF?ECD&zE+X(2i#qE&E_thF?{5+|EAp~UXAvToY; z%DUFYTu~0*wWg95#65K;W-g|UOuv{yGR0zQ7%oiZUc(!l>X=$GrDMv;RFmlyQ%I(j zOq-a7F$H7##T1I^FAGyvrg2R7msOQ$eP)dA!L~muVtXVWzZ9dzo%Cm1X+ORFNquQ(dN%OtqO#Gks<% z$rP4pGgDxupG?1*rZR13DjlTDOktV!G6iM2%5;{gJ5yw)r%aKVGBb5&n#>fJg-Zbz zrm-Uxrm;a`%FL9Q={lDK;lebVDLzwuru0nZxfEdGvSD~xGW-pBEe!mmmO z`0M&ahzR=Uf~nR|F1z@9bFVpL*ZpVQ_~--txD!|bz!%jy!CHTNuJz}wwbrMTPk`K8 zukUeq!h3d1c&`C(SJs}q7cm>y*lyLb_u}uMFre{s24e!d$Ny>+>+aB`jI(H%_L6mfioAt;pHy2-M*c=;fq9XxV}NcB1U} zVN0 z?!qOIWpYGNcG1Ky=ziN1*M>_V%Y=`h?9}gWsb$Z>>u?EVnT!zHh8=&s1N-8Fq1{%A zeN0{mEnArX9639APFQP|2PR~Mmi2k)oIccuzy>C1gqBV3{446^cn+69mdPTaW&M8J zW~kbVy-XwtE$eKt4cqqem0_(_dzly$TGk)yJJg5|Ox_4Bd&t(SG!HdwU?NCpS)bpf z8wRZ@+Y-EDLQH7cpY?A?doKO1JvoiQITziFr}U(seR zm7C8=SbuQ#&;cB@jSB=q+u)C#4H4hMC6ML9iwMhZenwcb+BPm!2rcXLdr1wy z;9`i-vi{il5Iz+yfel=|5nA@I_$C)FgqFQJli=8CeI(FS)*ig#f``zu{@lIOnPCg6 zZR5g`(6YV{y}RegvRptBTGo$e59ddg<>Hjkvi{tC(3Fv7xfmm~Y>>lXY=leDHZHCS zE$jEit@=e(I*{dJkl@F6tbTO?^S+C#V*0N@mJ4P=tMc3S-e-my5y)~uN@!WXkFUk} z2$w*Xi$X%n9(&+Rj3p-yRa^0SQb}OAkC=N>XP}o0bwca)$3y=QNA?SD3=otZn6icT zp`|tEV{R-ETJNf-UZuTlHQL5SJE3Lmr!V4|T(&E25-Nec+zcVKte+EHJSilIKLc4V zvI#Bg=L8ETjx5W~2|~;I<6)N?vfQK~w5-qB|GYG^UT!83TGscW-`XR~a-)IJvi^8z zN8AjTpl#f^Ahhg)b8aTTPt}MI+yElNHoT3oA1;AjZe|daedgtIA74?!kGZKtXuZC_ z&FT+pt@ef9>=-u3*2+t`QAKFI{yO098uoI7hS0M9{B||sMYsfQtoL=yOW_j8a&wK)vVMGc zVs==v+85lsBebl~?_}^DE`eTd0uox*&(H3y;TPPHBebkP9zMX>50^kMH&O{L>+|s6 zHRf(^vJzU>_sv-~^oH*xe+vV`Kr{xp|Ht(3ubmGG{5sm*rIkr}-msVW za=0v8%Jt>kfgCTXyjQ>h5UnGmt*uOv z#p5DPxB*!4?4pH^9mRO6w>uGu3SNQ7cT8FiCty5H=bb!;OA`i5u@}K7oyVE5GCSt& zFCRxTN=hiQ)o-t{z!02}GuotV5`iX@>TgajV-WYGO^+TwBJ>rr#lgHj;$@N%Upp)x zexTCiUEp8v+ul?zodHEn@i2rN&&@QUUwwu`2M|p%Q{^87xjcDlQagC}18eq<0kTacFV3fh+qMa?e zc{k(s3^v7bCs(u!8Q1Ew)8_U2ZkR4OT;0tcocor%#$2_V-fJ zX-<`FU$03^6!&%a`cyGtar-hV-O)tHSN8joT)QwXRZ8TXOq%wKmM3r zfP@BWSITR`d|IB9f`<(19R0@ThNi4B9meV=45n<7`!eREU5TT#DRUz`*BzKTr73*) zk-;DMQ%t+A&XsZ*)9zXx?*)4lnNVGcg3kt>wCJVHlTm&&rB45>%VIE5j_S18yusMU zYNESTw)iYA!$!7#T|9Ube#p;o=b#hWf|1+S_y%b64}*gYwW`C(I{WqC`^y!{|% zbVJtIbk(0i2GoRz)a`U3&uzlYqJwDp5lWMzGe|x|PiQtlJ^C4xR30fcc?Uh^enjYq z;$ASj{6wQsgAuIp9Z{h}!~haQ;_7-fb6F6gjD`1(Vc1RyW*YOhdxJTv*Szh% z53y^Su|Jhg6>UGj7^cKGJn!bYb!}KV#!ANN%D6~b3+6e8cJAm`f9C)PV^#oscA$0n zUH7~{>#)22^3c2&*Sxdl&u>3%&%c5vXHXu(f$?dqaR7M{>IFCi%=6D_929Or{Y@N( z<@wjEaA5s#)bjwG{Z-Eh_)S zJ3Xj-@%b#&*X*KH59-NKHXij%9MI+Y{_F9257c9E-4UpBux~2rB{&$2x76D>lsp6V z#>l7sVa|y!$+eYz@hO&Q7^{l2ckXz*Woz`H4zUY9EIFEgydP={d>oJZD%iCb>J4!H0jS>up*ZuazJ^2ByP@6-FTR9&BiL~g z>Wg6Cbky_EKAsIf5U=+|oyO;jQ7?dT3sC<7*PX~3#&n>@8FbxObMXhCwYU^DF429# z^WB?(hka1L0lv{C>T$I17}N@O9*2tDQ%9?R;QMUoZO7|XW0gXa)bnEb_1<-W05XO8NH6Or3lXL;a>RKq>ANAJY15~OlVb4*h zS3&>os2{=jX+?e3&S*Po+6dKZJ-oj+>XlG}OVnc6F&FiZ(3w+E7oZPK(!Y8EQPqX} zLWNq6cB8A*I2b!0_4{aS0(BaL;z-nQLdZs)06DW!Uk|&Js6QBkhgMOK2On*yPlK@w zQPW1KR&PPyVW>|4Pv|Q3I~chqYL?YUPsY_!K7kDM!lqL(B%JX>jr;!zJfDXC=1>Y3 zKEF>l6s$WA7?QpUd=2;q;OoFQfK!402YeG)2Al>I07N3~k_>m41$4Mz2=ag;Py+ga z0bnUG2%G|Z1wb^>;gcZ{5mrwX3@;2#3@3?SN z!@wkf;h!O^1z<>H7-4Ab044(*Yx@9GfoTB87^i?4z<$8~zyZL4z(K%FU>0yNz)&>@ zI0RrAWJqRsI}~78S^yjl904%QeGxbcI2t$x;1tGi#_)PPun71Pz)*f7@MVBu@FZX{ z&Tu3PsRY8OIY}~{=HEBO8yZBgn_s+ApRfMo)f!;f#?i~ z|3~LgGzbH6WkCEtu01Dq3j@&^5dV+Pp=b~W;>v*de_VS`>=p*1Ga&vSokP(e48)ZI z@&CB?oY*Z4L}x(!KRSn^K^TZD1LFU2?K!bq7>Le*_17 z5LX7o|Kr+oVz)35odNOx=p2d$VIZyyi2uj6=frMdAUXr$|Is-V4Z=WN84&-EYtM<@ z!a#He#Q&pnC>n%;xH2IAAJ?7}yM=-142b_n=TI~V194?Q{6DTeCw2=1(HRi`kItcJ z5C-DPfcSr0drs^Y2BI?{{vVw~(I5=Ol>zbpxb~dbEeu3wK>R;ChoV6kh${o)|8ea( zv0E63&VcxTbPh#>Fc4P;#Q)>kb7HqJ5S;<>|L7cw24Nts42b{7wdcfcVIVpK;{VY( z6b-^aTp1Amk896~-NHb02E_lPb0`{wfw(dt{vX$#6T5|h=nRPeN9Ry92m^6tK>RFwa;{S2&Ik8(9h|Ylce{>E-gD?v*de_VS`>=p*1Ga&vSokP(e48)ZI z@&CB?oY*Z4L}x(!KRSn^K^TZD1LFU2?K!bq7>Le*_5oo$?EDQMUh|vH-&$|! zirKd|U-uw3YN-e`Z zPTfSQ!OfNGz_m|prPMQDP-^*xN-f=5sl9RC^Dy`TU{75C`bJ8^l^npAQ><0NZYYotMC_vH1K3*trQ_-;ef6qR!xvg#Tv7iP+@;SFXI z%-oqVGoxoF&+L^MI52watLg~9Bes~fHYxGLgGC0LDcg}_w>GkmTFxLV-K zh$|3g|6GA^MZ%R4S0P+Ma23au)>T-^ag{Jq;VL00T#<0a!PO8~Tj9c03|CNGNpZ!* zl@eE4TqSZ{stclsc z#&)Zgy;pxy{)ZmN&lxQkDG2ISKi=lB)qay?oLYUxn-~7|r1l z$kOu&EqlQs+fw$q8nX0sLd#w@xSBS6$B$%z?m#ai6G7QU+y1Y2p8M>WK{hm00$D~) zLhF5O#q-pw5Dmg5kYzL`wCuFEeo5JmVUaG7WdtX*?3!b5qih1+94>(@qc)*seICZQ zge9x}#%NDy+5KPHik!WUND?lAUPdiK%MR?f6J@^-o5CfKWwa!;tj}*dB44-!vW!@S zmOa&dnQdzw7MTKBMl3?h?)9zPDLZpXSZlRyjL3wR{l_=%r0nUd15M>?f>(^b1ZCe{ zync~={3JLGmq3;?A))n--{eK=y{txGa3&$N?BmHR$=Oj?<3^zp=;f?TXxU$Eb2eqK zt1%`y6A@b09}ga`4VOSKXKzBw-f;OVwD;6RShC6)XC7i1KA!XLdkg6E4+M(v9%l`P z2l_E*Uqb7B@3|MKcM)c}a0xEuj6;OmwtQw-vT6e}1wzaE<80Y~!BIjb(97AF(6T}@P$L2xm~jwVHofz&sF!0uTmo5UK7^L_ z`)!+{YAg0KDpE@%K7iaYybn4FV}-fw7%qVn60U&+jEQ z{DPT1p=JHC^C5gHTml=o5+StgU-3<5;e?jGI+NhoX?-NnRMsB6V)jmGS%042>CCVN z)wXdJL}*#xhu+-YXP}p>PD1PT$3y=QNA?S@atX=~OxZ&F z&{FtdxCDB+N+z`4RZqQ2d)sQXjVn+>%i2$0#4)*S*Ra;Ay3o zYpwR1UbzpOV{7Fl+;t(eUVqJScMW^F+dybpe}20f@giJ;wsDt-(6WAstXp~~8%9@KT*0z+^@&S;aeNd%fqs=qnCj6vL!Ha&X$h|pKe7653cY%MwZ+la@bOsbP#lsM8JU7#Xe)Sm&9Y8e6OqG8S z53KboHs-)yF`X)mA{R1t<9@49$`zfg-Pz1^EbsNwW!md!w%$3;8}yjXH^oh0L(X(! zfl&sNi*~l?=G~0jGuRZ%om|l_WL&GyPMg>7yJ5QEaH-RT+=v|6NObX_Mk=32uqxur zsy=CM*xySg0TLRhT`8{#^J#fb3LY}3bMzaV8=A7lbQr6fFqpDQ?#q~ub|sF|rp%4( zTz6pVl&0|EM+Sf3PciMfI#(?{b@AX$_#r>Tor6wf3r22R;~S*eWOer=WA~&i=7&v* zmgOxu^Y(+7(G6K+(^Y>88Bh}gYM<`8>&LH^=J)zkI_2_3%QhB7* zs`w^idihIHA@)M0l4MwoWcSMEeEatd6KgG>8A-C~IO0zlu&-f0 z!uekTl>>DX;zGrL`#YPu#tz!i%#8@_*K{CsPDn~+ApGR-x)vMgSr==&q968E=u*Fo(yHs;fjS5KrlMYgGrf3Ay^XWSGf-cS!+tPTt;D(DPSm%-h=Wj%g&a&(d7Sw@8ub9q zh98Q0F+M*K^#QmJk2|P|c;4Vx)DOU(gHe|fObJR z6H$-B`K4aIhEW};apYY0*fLnP+y1s1667{>^cGUS-5^8YT5=0 z)Iu2ZWz>A$4o%YqRI6*Dbbr)agBMV$wuC)LpXYT5|ZYCXKa zH|mv8f=kq5*fAINkI<=8P#2&NP13*E08!P2`$C0Uj&`HV)HoPBANBiaYyx!}gX2il zZ$ijMod7wrQC|oDW<8TnJnQ zd=I!7_&#t6@B`pd;4t2XH5F7jQT5Z@@jkPl0=Z`+)m_mB7z{2Y{ag4+8%VJOn%pJOVrl zJO(@tJOMlj`~r9i_$BZ(@GIayfMF{^Po_+*cS72801&Ko}4PgaKhd7!U@8 i0bxKG5C((+VL%uV2801&Ko}4PgaKhd7!U@GGw^@$)xiP) diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/DirectInputForceFeedback.cpp b/DirectInputForceFeedback~/DirectInputForceFeedback/DirectInputForceFeedback.cpp index 87cf9fc..b932a5a 100644 --- a/DirectInputForceFeedback~/DirectInputForceFeedback/DirectInputForceFeedback.cpp +++ b/DirectInputForceFeedback~/DirectInputForceFeedback/DirectInputForceFeedback.cpp @@ -535,7 +535,8 @@ HRESULT UpdateFFBEffect(LPCSTR guidInstance, Effects::Type effectType, DICONDITI if (!pe) return E_POINTER; pe->dwMagnitude = conditions[idx].lPositiveCoefficient; pe->lOffset = conditions[idx].lOffset; - // Maintain existing phase and period values + pe->dwPeriod = conditions[idx].dwPositiveSaturation; + // Maintain existing phase values break; } case Effects::Type::RampForce: { diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/Release/DirectInputForceFeedback.dll.recipe b/DirectInputForceFeedback~/DirectInputForceFeedback/Release/DirectInputForceFeedback.dll.recipe deleted file mode 100644 index d00650a..0000000 --- a/DirectInputForceFeedback~/DirectInputForceFeedback/Release/DirectInputForceFeedback.dll.recipe +++ /dev/null @@ -1,11 +0,0 @@ -īģŋ - - - - C:\Users\Ducky\Documents\GitHub\Unity-ForceFeedback\~DirectInputForceFeedback\Release\DirectInputForceFeedback.dll - - - - - - \ No newline at end of file diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Debug/DirectInputForceFeedback.dll.recipe b/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Debug/DirectInputForceFeedback.dll.recipe deleted file mode 100644 index 2444bba..0000000 --- a/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Debug/DirectInputForceFeedback.dll.recipe +++ /dev/null @@ -1,11 +0,0 @@ -īģŋ - - - - C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputForceFeedback~\x64\Debug\DirectInputForceFeedback.dll - - - - - - \ No newline at end of file diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Release/DirectInputForceFeedback.dll.recipe b/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Release/DirectInputForceFeedback.dll.recipe deleted file mode 100644 index 5b94819..0000000 --- a/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Release/DirectInputForceFeedback.dll.recipe +++ /dev/null @@ -1,11 +0,0 @@ -īģŋ - - - - C:\Users\Ducky\Documents\GitHub\Unity-DirectInput\DirectInputForceFeedback~\x64\Release\DirectInputForceFeedback.dll - - - - - - \ No newline at end of file diff --git a/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Release/DirectInputForceFeedback.vcxproj.FileListAbsolute.txt b/DirectInputForceFeedback~/DirectInputForceFeedback/x64/Release/DirectInputForceFeedback.vcxproj.FileListAbsolute.txt deleted file mode 100644 index e69de29..0000000 diff --git a/DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.dll b/DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.dll deleted file mode 100644 index c821a5f37cb332aca8dbde8510d13e3032681bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64000 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

    RY&PFE=@5W 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 diff --git a/DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.lib b/DirectInputForceFeedback~/x64/Release/DirectInputForceFeedback.lib deleted file mode 100644 index 0ae5ce7a7adb37e7c0fa2a9c7a920b73ad7bffa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6558 zcmcgwO>7%Q6n=5ihPX-X*v?O@5R4j?@>AzO5iP3h#7P_S)8Hg)3`WsD^&>P01~H`Lt7zGiz*~?>45{N72;5SBv3_p&oi^$*}rBb!%EM) z^XAQbZ|42X8$bI>s*qkd;%yJh&%sW)Em|G?qqDQGhked^0pK7&%_D%?lK^#_0RF3t z8ZQD61@9-)6oR}FKGmn6?c0<^J>0>h!qse$|ItKBfftjP7I8%0U88M5EDMgJdYuU6i zxR6>pp$w*SISxlccD-?BMJ?n{Pb!6MK9fxk4-X8@&!gUAZoBT8^*(hdWGkuI=M()tk>Y`G>Wuai~ZAB<&V(S@f zkF7*S585lXs^-(mlByKMdL`abY^Bxgn!>CuCNr^-!Tln&oSMt#vT9aS(z;LMPN}%8 zMCugBH}hqVr5NySWjb&Xna6fi5|CKh&dDn^vB@8FAtZLqz{N!sR4Xw9+kGDE*YX%9 zCU{f>aIzL)vku^@AK+pmz}^66jXePSvAx~|a0vz1>j5tN09u3ijnsm2ts(p-Y5)im zp-cp2HgJ3kj%mfQm?)tEYT+rUf)MP2ozMt%up9hP4?zfk4|YH^)Ibw>p&BZ{<3hR; zBm)>-p0&-v&ohy1T~kGQo@s6g2~!B2Jf{?F7_vwITaZlhD~kfHruZn+6^h~NtIdG z%c54B_3E^gs+mY8mjiFRDCYQpC(Yd3*Tp4gy_xfs(0s&qCsF~J%h(giD08bP+NO9D z68LdJH26CT{((pqtB_P%m*~Qj3HOj5az-V-qtJ1U%k^UnMkYpizx2XG0Z20rJKPxbM8H+J&euCW-2FWrUpq_aE{*P13#&ai{OBgs_i(0w7=(@^J#QZbC*Y8p_P-8$B_b^8VT*tlD?*G%ab(7ZbMGdgVmv4QJ@NRd% zU;EFplx^Rc|LQk7`gbvOW_9U?;i!W99pL{a=%e6++i%=@33aH|>%eX@j^J+BuN6$X z2pow=|7b_-IukZsm>l8VuiYZ|eV04*E#i0UjCo8 zyjocK|LNZk-6#L|lNQE{rXzeg?Ek~)+7{WrzKCwT&pN`px4%WraVq-vEvh*J9AAf6 pZtt@||MLBxZxDJA(T(?WohD_t8(aBb_{`XS^1qOV?(*>S{tG32e*FLd diff --git a/Plugin/DLL/DirectInputForceFeedback.dll b/Plugin/DLL/DirectInputForceFeedback.dll index 02db0f6a7e3951c7f85c3599e012077261e5f3f6..40d7e7d5dc7c05e41095734e89c48cebc1587652 100644 GIT binary patch delta 18527 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 delta 18509 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 (uint)Mathf.Clamp(value, min, max); - private static int ClampAgnostic(int value, int min, int max) => Mathf.Clamp(value, min, max); - private static void DebugLog(string message) => Debug.Log($"[DirectInputManager] {message}"); + const string DLLFile = @"DirectInputForceFeedback.dll"; + private static uint ClampAgnostic(uint value, uint min, uint max) => (uint)Mathf.Clamp(value, min, max); + private static int ClampAgnostic(int value, int min, int max) => Mathf.Clamp(value, min, max); + private static void DebugLog(string message) => UnityEngine.Debug.Log($"[DirectInputManager] {message}"); #else const string DLLFile = @"..\..\..\..\..\Plugin\DLL\DirectInputForceFeedback.dll"; private static uint ClampAgnostic(uint value, uint min, uint max) => Math.Clamp(value, min, max); @@ -638,16 +638,27 @@ public static bool UpdateInertiaSimple(string guidInstance, int Magnitude) return true; } - public static bool UpdatePeriodicSimple(string guidInstance, FFBEffects effectType, int magnitude) + public static bool UpdatePeriodicSimple(string guidInstance, FFBEffects effectType, int magnitude, uint period = 30000, int rampStart = 0, int rampEnd = 0) { DICondition[] conditions = new DICondition[1]; conditions[0] = new DICondition(); conditions[0].deadband = 0; conditions[0].offset = 0; - conditions[0].negativeCoefficient = ClampAgnostic(magnitude, -10000, 10000); - conditions[0].positiveCoefficient = ClampAgnostic(magnitude, -10000, 10000); + if (effectType != FFBEffects.RampForce) + { + conditions[0].negativeCoefficient = ClampAgnostic(magnitude, -10000, 10000); + conditions[0].positiveCoefficient = ClampAgnostic(magnitude, -10000, 10000); + + conditions[0].positiveSaturation = period; + } + else + { + conditions[0].positiveCoefficient = ClampAgnostic(rampStart, -10000, 10000); + conditions[0].negativeCoefficient = ClampAgnostic(rampEnd, -10000, 10000); + + conditions[0].positiveSaturation = 0; + } conditions[0].negativeSaturation = 0; - conditions[0].positiveSaturation = 0; // Try updating first int hresult = Native.UpdateFFBEffect(guidInstance, effectType, conditions); @@ -679,11 +690,11 @@ public static bool UpdatePeriodicSimple(string guidInstance, FFBEffects effectTy return true; } - private static bool UpdateCustomForceSimple(string guidInstance, int[] forceData, uint samplePeriod, int offset = 0, uint deadband = 0) + public static bool UpdateCustomForceSimple(string guidInstance, int[] forceData, uint samplePeriod, int offset = 0, uint deadband = 0) { if (forceData == null) { - Debug.WriteLine("UpdateCustomForceSimple: Invalid input parameters"); + System.Diagnostics.Debug.WriteLine("UpdateCustomForceSimple: Invalid input parameters"); return false; } @@ -697,8 +708,8 @@ private static bool UpdateCustomForceSimple(string guidInstance, int[] forceData { positiveCoefficient = forceData[i], // Force value for this sample negativeCoefficient = i == 0 ? (int)samplePeriod : 0, // Sample period in first condition only - offset = offset, - deadband = deadband, + offset = offset, + deadband = deadband, positiveSaturation = 10000, // Full range negativeSaturation = 10000 // Full range }; @@ -920,7 +931,7 @@ private static bool UpdateCustomForceSimple(string guidInstance, int[] forceData /// /// A boolean representing if the Effect updated successfully /// - public static bool UpdatePeriodicSimple(DeviceInfo device, FFBEffects effectType, int Magnitude) => UpdatePeriodicSimple(device.guidInstance, effectType, Magnitude); + public static bool UpdatePeriodicSimple(DeviceInfo device, FFBEffects effectType, int Magnitude, uint period = 30000, int rampStart = 0, int rampEnd = 0) => UpdatePeriodicSimple(device.guidInstance, effectType, Magnitude, period, rampStart, rampEnd); public static bool UpdateCustomForceEffect(DeviceInfo device, int[] forceData, uint samplePeriod) => UpdateCustomForceSimple(device.guidInstance, forceData, samplePeriod); diff --git a/Plugin/DirectInputTypes.cs b/Plugin/DirectInputTypes.cs index bc8f9da..3f0258c 100644 --- a/Plugin/DirectInputTypes.cs +++ b/Plugin/DirectInputTypes.cs @@ -17,7 +17,7 @@ public enum FFBEffects { Damper = 8, Inertia = 9, Friction = 10, - CustomForce = 11, + CustomForce = 11 } public struct CustomForceData diff --git a/Plugin/Samples.meta b/Plugin/Samples.meta new file mode 100644 index 0000000..44f9499 --- /dev/null +++ b/Plugin/Samples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61cbd610307b1224db5fae436d536cd5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugin/Samples/InputSystem.meta b/Plugin/Samples/InputSystem.meta new file mode 100644 index 0000000..19dc853 --- /dev/null +++ b/Plugin/Samples/InputSystem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7152b53e561ca041ad8289fba729282 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugin/Samples~/InputSystem/ControlScheme.inputactions b/Plugin/Samples/InputSystem/ControlScheme.inputactions similarity index 100% rename from Plugin/Samples~/InputSystem/ControlScheme.inputactions rename to Plugin/Samples/InputSystem/ControlScheme.inputactions diff --git a/Plugin/Samples/InputSystem/ControlScheme.inputactions.meta b/Plugin/Samples/InputSystem/ControlScheme.inputactions.meta new file mode 100644 index 0000000..1eb1051 --- /dev/null +++ b/Plugin/Samples/InputSystem/ControlScheme.inputactions.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 85a13ad7935e3af44bf556791baaebf5 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} + generateWrapperCode: 0 + wrapperCodePath: + wrapperClassName: + wrapperCodeNamespace: diff --git a/Plugin/Samples/InputSystem/FFBInspectorDemo.cs b/Plugin/Samples/InputSystem/FFBInspectorDemo.cs new file mode 100644 index 0000000..d9b66a0 --- /dev/null +++ b/Plugin/Samples/InputSystem/FFBInspectorDemo.cs @@ -0,0 +1,302 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.InputSystem; +using DirectInputManager; +using UnityEditor.Experimental.GraphView; + +public class FFBInspectorDemo : MonoBehaviour +{ + public InputActionAsset ControlScheme; // Input System control scheme + DirectInputDevice ISDevice; + InputActionMap Actions; + + public bool EnableFFB = true; + public string FFBDeviceName = "Waiting for Play Mode"; + [Range(0, 1)] public float FFBAxisValue = 0; + + [Header("FFB Constant Force")] + public bool ConstantForceEnabled = false; + [Range(-10000f, 10000f)] public int ConstantForceMagnitude; + + [Header("FFB Damper")] + public bool DamperForceEnabled = false; + [Range(-10000f, 10000f)] public int DamperMagnitude; + + [Header("FFB Friction")] + public bool FrictionForceEnabled = false; + [Range(-10000f, 10000f)] public int FrictionMagnitude; + + [Header("FFB Inertia")] + public bool InertiaForceEnabled = false; + [Range(-10000f, 10000f)] public int InertiaMagnitude; + + [Header("FFB Spring")] + public bool SpringForceEnabled = false; + [Range(0, 10000f)] public uint SpringDeadband; + [Range(-10000f, 10000f)] public int SpringOffset; + [Range(0, 10000f)] public int SpringCoefficient; + [Range(0, 10000f)] public uint SpringSaturation; + + + [Header("Periodic & Custom Effects \nPlease note that negative values may result unexpected FFB! \n\nFFB Sine")] + public bool SineForceEnabled = false; + [Range(-10000f, 10000f)] public int SineMagnitude; + [Range(0, 100000)] public uint SinePeriod = 30000; // Default to 30000 microseconds + + [Header("FFB Square")] + public bool SquareForceEnabled = false; + [Range(-10000f, 10000f)] public int SquareMagnitude; + [Range(0, 100000)] public uint SquarePeriod = 30000; // Default to 30000 microseconds + + [Header("FFB Triangle")] + public bool TriangleForceEnabled = false; + [Range(-10000f, 10000f)] public int TriangleMagnitude; + [Range(0, 100000)] public uint TrianglePeriod = 30000; // Default to 30000 microseconds + + [Header("FFB SawtoothUp")] + public bool SawtoothUpForceEnabled = false; + [Range(-10000f, 10000f)] public int SawtoothUpMagnitude; + [Range(0, 100000)] public uint SawtoothUpPeriod = 30000; // Default to 30000 microseconds + + [Header("FFB SawtoothDown")] + public bool SawtoothDownForceEnabled = false; + [Range(-10000f, 10000f)] public int SawtoothDownMagnitude; + [Range(0, 100000)] public uint SawtoothDownPeriod = 30000; // Default to 30000 microseconds + + [Header("FFB Ramp")] + public bool RampForceEnabled = false; + [Range(-10000f, 10000f)] public int RampStart; + [Range(-10000f, 10000f)] public int RampEnd; + + bool ConstantForceWasEnabled { get; set; } + bool DamperForceWasEnabled { get; set; } + bool FrictionForceWasEnabled { get; set; } + bool InertiaForceWasEnabled { get; set; } + bool SpringForceWasEnabled { get; set; } + bool SineForceWasEnabled { get; set; } + bool SquareForceWasEnabled { get; set; } + bool TriangleForceWasEnabled { get; set; } + bool SawtoothUpForceWasEnabled { get; set; } + bool SawtoothDownForceWasEnabled { get; set; } + bool RampForceWasEnabled { get; set; } + ////////////////bool CustomForceEnabled { get; set; } + + ////////////////[Header("FFB Custom Force - LOOKS TO BE IMCOMPLETE (HAS UNKNOWN ISSUE), Fanatec CSL DD was used fyi.")] + ////////////////public bool CustomForceEnabled = false; + ////////////////[Range(-10000f, 10000f)] public int[] CustomForceMagnitudes = new int[10]; + ////////////////[Range(1000, 10000)] public uint CustomForceSamplePeriod = 1000; + + void Start() + { + Actions = ControlScheme.FindActionMap("DirectInputDemo"); // Find the correct action map + Actions.Enable(); + } + + void Update() + { + if (!EnableFFB) { return; } + if (ISDevice == null) + { + FFBDeviceName = "Waiting for Steering Device"; // Reset device name status + ISDevice = Actions.FindAction("FFBAxis").controls // Select the control intended to have FFB + .Select(x => x.device) // Select the "device" child element + .OfType() // Filter to our DirectInput Type + .Where(d => d.description.capabilities.Contains("\"FFBCapable\":true")) // Ensure the Device is FFBCapable + .Where(d => DIManager.Attach(d.description.serial)) // Attempt to attach to device + .FirstOrDefault(); // Return the first successful or null if none found + if (ISDevice == null) { return; } + FFBDeviceName = ISDevice.name + " : " + ISDevice.description.serial; + Debug.Log($"FFB Device: {ISDevice.description.serial}, Acquired: {DIManager.Attach(ISDevice.description.serial)}"); + } + + if (ISDevice is not null) + { + FFBAxisValue = Actions.FindAction("FFBAxis").ReadValue(); // Poll state of input axis + + // Update all enabled effects + if (ConstantForceEnabled) + { + if (ConstantForceWasEnabled) + DIManager.UpdateConstantForceSimple(ISDevice.description.serial, ConstantForceMagnitude); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.ConstantForce); + + ConstantForceWasEnabled = true; + } + else if (ConstantForceWasEnabled) + { + ConstantForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.ConstantForce); + } + + if (DamperForceEnabled) + { + if (DamperForceWasEnabled) + DIManager.UpdateDamperSimple(ISDevice.description.serial, DamperMagnitude); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Damper); + + DamperForceWasEnabled = true; + } + else if (DamperForceWasEnabled) + { + DamperForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.Damper); + } + + if (FrictionForceEnabled) + { + if (FrictionForceWasEnabled) + DIManager.UpdateFrictionSimple(ISDevice.description.serial, FrictionMagnitude); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Friction); + + FrictionForceWasEnabled = true; + } + else if (FrictionForceWasEnabled) + { + FrictionForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.Friction); + } + + if (InertiaForceEnabled) + { + if (InertiaForceWasEnabled) + DIManager.UpdateInertiaSimple(ISDevice.description.serial, InertiaMagnitude); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Inertia); + + InertiaForceWasEnabled = true; + } + else if (InertiaForceWasEnabled) + { + InertiaForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.Inertia); + } + + if (SpringForceEnabled) + { + if (SpringForceWasEnabled) + DIManager.UpdateSpringSimple(ISDevice.description.serial, SpringDeadband, SpringOffset, + SpringCoefficient, SpringCoefficient, SpringSaturation, SpringSaturation); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Spring); + + SpringForceWasEnabled = true; + } + else if (SpringForceWasEnabled) + { + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.Spring); + SpringForceWasEnabled = false; + } + + if (SineForceEnabled) + { + if (SineForceWasEnabled) + DIManager.UpdatePeriodicSimple(ISDevice.description.serial, FFBEffects.Sine, SineMagnitude, SinePeriod); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Sine); + + SineForceWasEnabled = true; + } + else if (SineForceWasEnabled) + { + SineForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.Sine); + } + + if (SquareForceEnabled) + { + if (SquareForceWasEnabled) + DIManager.UpdatePeriodicSimple(ISDevice.description.serial, FFBEffects.Square, SquareMagnitude, SquarePeriod); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Square); + + SquareForceWasEnabled = true; + } + else if (SquareForceWasEnabled) + { + SquareForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.Square); + } + + if (TriangleForceEnabled) + { + if (TriangleForceWasEnabled) + DIManager.UpdatePeriodicSimple(ISDevice.description.serial, FFBEffects.Triangle, TriangleMagnitude, TrianglePeriod); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Triangle); + + TriangleForceWasEnabled = true; + } + else if (TriangleForceWasEnabled) + { + TriangleForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.Triangle); + } + + if (SawtoothUpForceEnabled) + { + if (SawtoothUpForceWasEnabled) + DIManager.UpdatePeriodicSimple(ISDevice.description.serial, FFBEffects.SawtoothUp, SawtoothUpMagnitude, SawtoothUpPeriod); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.SawtoothUp); + + SawtoothUpForceWasEnabled = true; + } + else if (SawtoothUpForceWasEnabled) + { + SawtoothUpForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.SawtoothUp); + } + + if (SawtoothDownForceEnabled) + { + if (SawtoothUpForceWasEnabled) + DIManager.UpdatePeriodicSimple(ISDevice.description.serial, FFBEffects.SawtoothDown, SawtoothDownMagnitude, SawtoothDownPeriod); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.SawtoothDown); + + SawtoothDownForceWasEnabled = true; + + } + else if (SawtoothDownForceWasEnabled) + { + SawtoothDownForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.SawtoothDown); + } + + if (RampForceEnabled) + { + if (RampForceWasEnabled) + DIManager.UpdatePeriodicSimple(ISDevice.description.serial, FFBEffects.RampForce, 0, 0, RampStart, RampEnd); + else + DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.RampForce); + + RampForceWasEnabled = true; + } + else if (RampForceWasEnabled) + { + RampForceWasEnabled = false; + DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.RampForce); + } + + + //////////////////if (CustomForceEnabled) + ////////////////// { if (CustomForceWasEnabled) DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.CustomForce); + ////////////////// else DIManager.UpdateCustomForceEffect(ISDevice.description.serial, CustomForceMagnitudes, CustomForceSamplePeriod); CustomForceEnabled = true;} + //////////////////else if (CustomForceEnabled) { + ////////////////// DIManager.DestroyFFBEffect(ISDevice.description.serial, FFBEffects.CustomForce); CustomForceEnabled = false;} + } + } + + void OnDestroy() + { + if (ISDevice != null) + { + DIManager.Destroy(ISDevice.description.serial); + } + } +} diff --git a/Plugin/Samples/InputSystem/FFBInspectorDemo.cs.meta b/Plugin/Samples/InputSystem/FFBInspectorDemo.cs.meta new file mode 100644 index 0000000..4fd5a5d --- /dev/null +++ b/Plugin/Samples/InputSystem/FFBInspectorDemo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d90a5111f30bed4d82386d1e50cce5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugin/Samples/InputSystem/Sample.unity b/Plugin/Samples/InputSystem/Sample.unity new file mode 100644 index 0000000..db50e13 --- /dev/null +++ b/Plugin/Samples/InputSystem/Sample.unity @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1561323689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1561323691} + - component: {fileID: 1561323690} + m_Layer: 0 + m_Name: Sample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1561323690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1561323689} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7d90a5111f30bed4d82386d1e50cce5d, type: 3} + m_Name: + m_EditorClassIdentifier: + ControlScheme: {fileID: -944628639613478452, guid: 85a13ad7935e3af44bf556791baaebf5, type: 3} + EnableFFB: 1 + FFBDeviceName: Waiting for Play Mode + FFBAxisValue: 0 + ConstantForceEnabled: 0 + ConstantForceMagnitude: 0 + DamperForceEnabled: 0 + DamperMagnitude: 0 + FrictionForceEnabled: 0 + FrictionMagnitude: 0 + InertiaForceEnabled: 0 + InertiaMagnitude: 0 + SpringForceEnabled: 0 + SpringDeadband: 0 + SpringOffset: 0 + SpringCoefficient: 0 + SpringSaturation: 0 + SineForceEnabled: 0 + SineMagnitude: 0 + SquareForceEnabled: 0 + SquareMagnitude: 0 + TriangleForceEnabled: 0 + TriangleMagnitude: 0 + SawtoothUpForceEnabled: 0 + SawtoothUpMagnitude: 0 + SawtoothDownForceEnabled: 0 + SawtoothDownMagnitude: 0 + RampForceEnabled: 0 + RampMagnitude: 0 +--- !u!4 &1561323691 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1561323689} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 519420032} + - {fileID: 1561323691} diff --git a/Plugin/Samples/InputSystem/Sample.unity.meta b/Plugin/Samples/InputSystem/Sample.unity.meta new file mode 100644 index 0000000..9657fb2 --- /dev/null +++ b/Plugin/Samples/InputSystem/Sample.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 72217aa5adedb2f4daaee59f32e1d652 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugin/Samples~/InputSystem/FFBInspectorDemo.cs b/Plugin/Samples~/InputSystem/FFBInspectorDemo.cs deleted file mode 100644 index 325ee3c..0000000 --- a/Plugin/Samples~/InputSystem/FFBInspectorDemo.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; -using UnityEngine.InputSystem; -using DirectInputManager; - -public class FFBInspectorDemo : MonoBehaviour { - public InputActionAsset ControlScheme; // Input System control scheme - DirectInputDevice ISDevice; - InputActionMap Actions; - - public bool EnableFFB = true; - public string FFBDeviceName = "Waiting for Play Mode"; - [Range(0,1)] public float FFBAxisValue = 0; - - [Header("FFB Constant Force")] - public bool ConstantForceEnabled = false; - [Range(-10000f, 10000f)]public int ConstantForceMagnitude; - - [Header("FFB Damper")] - public bool DamperForceEnabled = false; - [Range(-10000f, 10000f)] public int DamperMagnitude; - - [Header("FFB Friction")] - public bool FrictionForceEnabled = false; - [Range(-10000f, 10000f)] public int FrictionMagnitude; - - [Header("FFB Inertia")] - public bool InertiaForceEnabled = false; - [Range(-10000f, 10000f)] public int InertiaMagnitude; - - [Header("FFB Spring")] - public bool SpringForceEnabled = false; - [Range(0, 10000f)] public uint SpringDeadband; - [Range(-10000f, 10000f)] public int SpringOffset; - [Range(0, 10000f)] public int SpringCoefficient; - [Range(0, 10000f)] public uint SpringSaturation; - - void Start() { - Actions = ControlScheme.FindActionMap("DirectInputDemo"); // Find the correct action map - Actions.Enable(); - } - - void Update(){ - if(!EnableFFB){ return; } - if (ISDevice == null) { - FFBDeviceName = "Waiting for Steering Device"; // Reset device name status - ISDevice = Actions.FindAction("FFBAxis").controls // Select the control intended to have FFB - .Select(x => x.device) // Select the "device" child element - .OfType() // Filter to our DirectInput Type - .Where(d => d.description.capabilities.Contains("\"FFBCapable\":true")) // Ensure the Device is FFBCapable - .Where(d => DIManager.Attach(d.description.serial)) // Attempt to attach to device - .FirstOrDefault(); // Return the first successful or null if none found - if (ISDevice == null) { return; } - FFBDeviceName = ISDevice.name + " : " + ISDevice.description.serial; - Debug.Log($"FFB Device: {ISDevice.description.serial}, Acquired: {DIManager.Attach(ISDevice.description.serial)}"); - DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.ConstantForce); - DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Damper); - DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Friction); - DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Inertia); - DIManager.EnableFFBEffect(ISDevice.description.serial, FFBEffects.Spring); - } - - if (ISDevice is not null) { - FFBAxisValue = Actions.FindAction("FFBAxis").ReadValue(); // Poll state of input axis - if (ConstantForceEnabled) { DIManager.UpdateConstantForceSimple(ISDevice.description.serial, ConstantForceMagnitude); } - if (DamperForceEnabled) { DIManager.UpdateDamperSimple(ISDevice.description.serial, DamperMagnitude); } - if (FrictionForceEnabled) { DIManager.UpdateFrictionSimple(ISDevice.description.serial, FrictionMagnitude); } - if (InertiaForceEnabled) { DIManager.UpdateInertiaSimple(ISDevice.description.serial, InertiaMagnitude); } - if (SpringForceEnabled) { DIManager.UpdateSpringSimple(ISDevice.description.serial, SpringDeadband, SpringOffset, SpringCoefficient, SpringCoefficient, SpringSaturation, SpringSaturation); } - } - } - - void OnDestroy(){ - if(ISDevice != null){ - DIManager.StopAllFFBEffects(ISDevice.description.serial); - } - } -} diff --git a/README.md b/README.md index 781b04a..a675f3d 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,7 @@ This package requires use of Unity's new Input System, ensure [com.unity.inputsy `Window -> Package Manager => Input System` -Next, install this package: - -`Package Manager => + => "Add package from git URL..." => ` `https://github.com/MrTimcakes/Unity-DirectInput.git` +Next, install (copy and paste) the Plugin folder of this repo into the Assets folder of your Unity project. You can copy and paste the whole content, and Unity will automatically exclude the unrelated contents as their folder names have "~" characters. Those unrelated folders have the source code of the native Direct Input FFB DLL that Unity uses. Open the Sample Scene there and play the scene to start working with this asset. ## Supported ForceFeedback Effects @@ -42,10 +40,12 @@ Next, install this package: | Spring | ✅ | | Square | ✅ | | Triangle | ✅ | - -[comment]: (✅ â„šī¸ 🔲) +[comment]: <> (✅ â„šī¸ 🔲) +Note that everything is adjustable in the native DLL, And the Custom Force effect exists but has not been fully done. ## Compatible Devices +### Note that all the devices that use Direct Input (from the old Logitech G wheels to the advanced Simcube ones) should work +The community has tested and verified these devices do indeed work. Albeit not all devices support all the FFB effects! | Peripheral | Test Status | |------------------------------------|----------------| @@ -59,12 +59,12 @@ Next, install this package: | [Fanatec ClubSport Pedals V3](https://fanatec.com/eu-en/pedals/clubsport-pedals-v3) | ✅ Verified | | [Fanatec ClubSport Shifter SQ V 1.5](https://fanatec.com/eu-en/shifters-others/clubsport-shifter-sq-v-1.5) | ✅ Verified | | [Logitech G29 / G920](https://www.logitechg.com/en-gb/products/driving/driving-force-racing-wheel.html) | ✅ Verified | +| [Moza R3](https://mozaracing.com/r3-racing-wheel-and-pedals) | ✅ Verified | +| [PRO Racing Wheel](https://www.logitechg.com/en-gb/products/driving/pro-racing-wheel.html) | ✅ Verified | | [Simagic Alpha-Mini](https://us.sim-motion.com/products/simagic-alpha-mini-wheel-base) | ✅ Verified | | [Thrustmaster TX](https://eshop.thrustmaster.com/en_us/tx-racing-wheel-leather-edition.html) | ✅ Verified | -| [PRO Racing Wheel](https://www.logitechg.com/en-gb/products/driving/pro-racing-wheel.html) | 🔲 Untested | -Note for pedals, only input readings were guaranteed to *likely* work fine. [comment]: <> (✅ 🔲) - +Note for pedals, only input readings were guaranteed to *likely* work fine. ## Environment From dbd14bc7f5f734f16930cd1c2f35013c0deea47f Mon Sep 17 00:00:00 2001 From: ATG Simulator <16223109+ATG-Simulator@users.noreply.github.com> Date: Tue, 7 Jan 2025 02:23:38 +0100 Subject: [PATCH 12/13] Update README.md --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a675f3d..a4a7a0f 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ Next, install (copy and paste) the Plugin folder of this repo into the Assets fo | Square | ✅ | | Triangle | ✅ | [comment]: <> (✅ â„šī¸ 🔲) + Note that everything is adjustable in the native DLL, And the Custom Force effect exists but has not been fully done. ## Compatible Devices @@ -64,6 +65,7 @@ The community has tested and verified these devices do indeed work. Albeit not a | [Simagic Alpha-Mini](https://us.sim-motion.com/products/simagic-alpha-mini-wheel-base) | ✅ Verified | | [Thrustmaster TX](https://eshop.thrustmaster.com/en_us/tx-racing-wheel-leather-edition.html) | ✅ Verified | [comment]: <> (✅ 🔲) + Note for pedals, only input readings were guaranteed to *likely* work fine. ## Environment @@ -72,11 +74,8 @@ This plugin only works on Windows 8+ 64-bit. Latest verified Unity version: 2022.2.1f1 -# Notices - -1) Occasionally calls to EnumerateDevices will take orders of magnitude longer than usual to execute (up to 60 seconds), this is caused by a Windows bug attempting to load an absent hardware device. USB Audio DACs & Corsair keyboards are known the cause this issue, try disconnecting and reconnecting offending USB devices. For more information see [this](https://stackoverflow.com/questions/10967795/directinput8-enumdevices-sometimes-painfully-slow) StackOverflow post about the issue from 2012. See issue [#1](/../../issues/1) for more info. - -2) THE UNITY INTEGRATION HAS NOT BEEN UPDATED TO THE LATEST VERSION IN THIS REPOSITORY. +# Notice +Occasionally calls to EnumerateDevices will take orders of magnitude longer than usual to execute (up to 60 seconds), this is caused by a Windows bug attempting to load an absent hardware device. USB Audio DACs & Corsair keyboards are known the cause this issue, try disconnecting and reconnecting offending USB devices. For more information see [this](https://stackoverflow.com/questions/10967795/directinput8-enumdevices-sometimes-painfully-slow) StackOverflow post about the issue from 2012. See issue [#1](/../../issues/1) for more info. # Support From 6bd652a30a7e7981d4e9e70a7325f8085e4a6bd5 Mon Sep 17 00:00:00 2001 From: ATG Simulator <16223109+ATG-Simulator@users.noreply.github.com> Date: Tue, 7 Jan 2025 02:24:30 +0100 Subject: [PATCH 13/13] Fixed syntaxes --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a4a7a0f..dd83fff 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Next, install (copy and paste) the Plugin folder of this repo into the Assets fo | Spring | ✅ | | Square | ✅ | | Triangle | ✅ | + [comment]: <> (✅ â„šī¸ 🔲) Note that everything is adjustable in the native DLL, And the Custom Force effect exists but has not been fully done. @@ -64,6 +65,7 @@ The community has tested and verified these devices do indeed work. Albeit not a | [PRO Racing Wheel](https://www.logitechg.com/en-gb/products/driving/pro-racing-wheel.html) | ✅ Verified | | [Simagic Alpha-Mini](https://us.sim-motion.com/products/simagic-alpha-mini-wheel-base) | ✅ Verified | | [Thrustmaster TX](https://eshop.thrustmaster.com/en_us/tx-racing-wheel-leather-edition.html) | ✅ Verified | + [comment]: <> (✅ 🔲) Note for pedals, only input readings were guaranteed to *likely* work fine.