From 57be3fadb777f185454361270c1a8076417ed6a5 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Tue, 20 Oct 2020 00:40:22 -0400 Subject: add speed cap --- common/rawaccel-settings.h | 1 + common/rawaccel.hpp | 28 ++++++++++++++++++++++------ grapher/Models/AccelGUI.cs | 3 ++- wrapper/wrapper.cpp | 3 +++ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/common/rawaccel-settings.h b/common/rawaccel-settings.h index aeb89e8..02f0a8a 100644 --- a/common/rawaccel-settings.h +++ b/common/rawaccel-settings.h @@ -18,6 +18,7 @@ namespace rawaccel { bool combine_mags = true; vec2 modes = { accel_mode::noaccel, accel_mode::noaccel }; vec2 argsv; + double speed_cap = 0; vec2d sens = { 1, 1 }; milliseconds time_min = DEFAULT_TIME_MIN; }; diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index ecd3850..3a49aa6 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -200,11 +200,25 @@ namespace rawaccel { accel(args, mode, lut), gain_cap(args.gain_cap, accel), clamp(args.scale_cap) {} - inline double apply(double speed) const { + inline double apply(double speed, double output_speed_cap) const { + double scale; + if (gain_cap.should_apply(speed)) { - return clamp(gain_cap.apply(speed)); + scale = gain_cap.apply(speed); + } + else { + scale = accel.apply(speed); + } + + scale = clamp(scale); + + double output_speed = scale * speed; + + if (output_speed_cap > 0 && output_speed > output_speed_cap) { + scale = output_speed_cap / speed; } - else return clamp(accel.apply(speed)); + + return scale; } accelerator() = default; @@ -216,6 +230,7 @@ namespace rawaccel { bool apply_accel = false; bool combine_magnitudes = true; rotator rotate; + double output_speed_cap = 0; vec2 accels; vec2d sensitivity = { 1, 1 }; @@ -236,6 +251,7 @@ namespace rawaccel { return; } + output_speed_cap = maxsd(args.speed_cap, 0); accels.x = accelerator(args.argsv.x, args.modes.x, luts.x); accels.y = accelerator(args.argsv.y, args.modes.y, luts.y); apply_accel = true; @@ -259,13 +275,13 @@ namespace rawaccel { if (combine_magnitudes) { double mag = sqrtsd(movement.x * movement.x + movement.y * movement.y); double speed = mag / time; - double scale = accels.x.apply(speed); + double scale = accels.x.apply(speed, output_speed_cap); movement.x *= scale; movement.y *= scale; } else { - movement.x *= accels.x.apply(fabs(movement.x) / time); - movement.y *= accels.y.apply(fabs(movement.y) / time); + movement.x *= accels.x.apply(fabs(movement.x) / time, output_speed_cap); + movement.y *= accels.y.apply(fabs(movement.y) / time, output_speed_cap); } } } diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index dd1e37d..902b135 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -120,7 +120,8 @@ namespace grapher combineMagnitudes = ApplyOptions.IsWhole, modes = ApplyOptions.GetModes(), args = ApplyOptions.GetArgs(), - minimumTime = driverSettings.minimumTime + minimumTime = driverSettings.minimumTime, + speedCap = driverSettings.speedCap }; WriteButtonDelay(); diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index a921801..1bfb251 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -63,6 +63,9 @@ public ref struct DriverSettings [JsonProperty("Accel parameters")] Vec2 args; + [JsonProperty("Output Speed Cap", Required = Required::Default)] + double speedCap; + [JsonProperty("Sensitivity multipliers")] Vec2 sensitivity; -- cgit v1.2.3 From c7ba6fb1d992a0efbcb581dfeaa65b0f5f59cdb7 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Tue, 20 Oct 2020 19:05:35 -0400 Subject: update min time threshold for 8khz --- common/rawaccel-settings.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/rawaccel-settings.h b/common/rawaccel-settings.h index 02f0a8a..fe17181 100644 --- a/common/rawaccel-settings.h +++ b/common/rawaccel-settings.h @@ -4,10 +4,12 @@ #include "accel-base.hpp" namespace rawaccel { + using milliseconds = double; + inline constexpr int MAX_POLL_RATE_KHZ = 8; + inline constexpr milliseconds DEFAULT_TIME_MIN = 1.0 / MAX_POLL_RATE_KHZ * 0.8; inline constexpr milliseconds WRITE_DELAY = 1000; - inline constexpr milliseconds DEFAULT_TIME_MIN = 0.4; enum class accel_mode { linear, classic, natural, naturalgain, power, motivity, noaccel -- cgit v1.2.3 From 91803c92a0ad16168126cf7d80de12d14855440d Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Wed, 21 Oct 2020 18:54:44 -0400 Subject: fix sens label visibility when separated --- grapher/Models/Options/ActiveValueLabelXY.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs index 1367a6a..381779c 100644 --- a/grapher/Models/Options/ActiveValueLabelXY.cs +++ b/grapher/Models/Options/ActiveValueLabelXY.cs @@ -143,7 +143,8 @@ namespace grapher.Models.Options private void Align (int width) { FullWidth = width; - ShortenedWidth = FullWidth / 2; + // ShortenedWidth = FullWidth / 2; + ShortenedWidth = FullWidth; SetYLeft(); Y.Width = ShortenedWidth; -- cgit v1.2.3 From 737461c030322ca9120aca7f61cb664fb484265a Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Wed, 21 Oct 2020 19:23:42 -0400 Subject: put autowrite option back in menu --- grapher/Form1.Designer.cs | 20 ++++-- grapher/Form1.cs | 1 + grapher/Models/AccelGUI.cs | 93 ++++++++++++--------------- grapher/Models/AccelGUIFactory.cs | 2 + grapher/Models/Serialized/GUISettings.cs | 10 ++- grapher/Models/Serialized/RawAccelSettings.cs | 17 +++-- grapher/Models/Serialized/SettingsManager.cs | 25 ++++--- 7 files changed, 95 insertions(+), 73 deletions(-) diff --git a/grapher/Form1.Designer.cs b/grapher/Form1.Designer.cs index a6ae754..6fd9478 100644 --- a/grapher/Form1.Designer.cs +++ b/grapher/Form1.Designer.cs @@ -168,6 +168,7 @@ namespace grapher this.GainChart = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.VelocityChart = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.AccelerationChart = new System.Windows.Forms.DataVisualization.Charting.Chart(); + this.AutoWriteMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.optionsPanel.SuspendLayout(); this.menuStrip1.SuspendLayout(); this.chartsPanel.SuspendLayout(); @@ -954,7 +955,8 @@ namespace grapher this.advancedToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.capStyleToolStripMenuItem, this.offsetStyleToolStripMenuItem, - this.toolStripMenuItem1}); + this.toolStripMenuItem1, + this.AutoWriteMenuItem}); this.advancedToolStripMenuItem.Name = "advancedToolStripMenuItem"; this.advancedToolStripMenuItem.Size = new System.Drawing.Size(72, 20); this.advancedToolStripMenuItem.Text = "Advanced"; @@ -965,7 +967,7 @@ namespace grapher this.gainCapToolStripMenuItem, this.legacyCapToolStripMenuItem}); this.capStyleToolStripMenuItem.Name = "capStyleToolStripMenuItem"; - this.capStyleToolStripMenuItem.Size = new System.Drawing.Size(163, 22); + this.capStyleToolStripMenuItem.Size = new System.Drawing.Size(210, 22); this.capStyleToolStripMenuItem.Text = "Cap Style"; // // gainCapToolStripMenuItem @@ -988,7 +990,7 @@ namespace grapher this.gainOffsetToolStripMenuItem, this.legacyOffsetToolStripMenuItem}); this.offsetStyleToolStripMenuItem.Name = "offsetStyleToolStripMenuItem"; - this.offsetStyleToolStripMenuItem.Size = new System.Drawing.Size(163, 22); + this.offsetStyleToolStripMenuItem.Size = new System.Drawing.Size(210, 22); this.offsetStyleToolStripMenuItem.Text = "Offset Style"; // // gainOffsetToolStripMenuItem @@ -1009,7 +1011,7 @@ namespace grapher this.wholeVectorToolStripMenuItem, this.byVectorComponentToolStripMenuItem}); this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(163, 22); + this.toolStripMenuItem1.Size = new System.Drawing.Size(210, 22); this.toolStripMenuItem1.Text = "Application Style"; // // wholeVectorToolStripMenuItem @@ -1279,6 +1281,15 @@ namespace grapher title6.Text = "Sensitivity"; this.AccelerationChart.Titles.Add(title6); // + // AutoWriteMenuItem + // + this.AutoWriteMenuItem.Checked = true; + this.AutoWriteMenuItem.CheckOnClick = true; + this.AutoWriteMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; + this.AutoWriteMenuItem.Name = "AutoWriteMenuItem"; + this.AutoWriteMenuItem.Size = new System.Drawing.Size(210, 22); + this.AutoWriteMenuItem.Text = "Apply Settings On Startup"; + // // RawAcceleration // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -1406,6 +1417,7 @@ namespace grapher private System.Windows.Forms.DataVisualization.Charting.Chart GainChart; private System.Windows.Forms.DataVisualization.Charting.Chart VelocityChart; private System.Windows.Forms.DataVisualization.Charting.Chart AccelerationChart; + private System.Windows.Forms.ToolStripMenuItem AutoWriteMenuItem; } } diff --git a/grapher/Form1.cs b/grapher/Form1.cs index 446618b..d62ed6d 100644 --- a/grapher/Form1.cs +++ b/grapher/Form1.cs @@ -59,6 +59,7 @@ namespace grapher legacyCapToolStripMenuItem, gainOffsetToolStripMenuItem, legacyOffsetToolStripMenuItem, + AutoWriteMenuItem, ScaleMenuItem, DPITextBox, PollRateTextBox, diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index 902b135..09b432f 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -33,13 +33,8 @@ namespace grapher ToggleButton = (CheckBox)toggleButton; ScaleMenuItem = scaleMenuItem; Settings = settings; - Settings.Startup(); - RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings); - AccelForm.DoResize(); - DefaultButtonFont = WriteButton.Font; SmallButtonFont = new Font(WriteButton.Font.Name, WriteButton.Font.Size * Constants.SmallButtonSizeFactor); - MouseWatcher = mouseWatcher; ScaleMenuItem.Click += new System.EventHandler(OnScaleMenuItemClick); @@ -50,9 +45,30 @@ namespace grapher ButtonTimerInterval = Convert.ToInt32(DriverInterop.WriteDelayMs); ButtonTimer = new Timer(); ButtonTimer.Tick += new System.EventHandler(OnButtonTimerTick); - SetupButtons(); ChartRefresh = SetupChartTimer(); + + bool settingsActive = Settings.Startup(); + SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent(); + + if (settingsActive) + { + LastToggleChecked = SettingsNotDefault; + ToggleButton.Enabled = LastToggleChecked; + RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings); + } + else + { + DriverSettings active = DriverInterop.GetActiveSettings(); + bool activeNotDefault = !RawAccelSettings.IsDefaultEquivalent(active); + + LastToggleChecked = activeNotDefault; + ToggleButton.Enabled = SettingsNotDefault || activeNotDefault; + RefreshOnRead(active); + } + + SetupButtons(); + AccelForm.DoResize(); } #endregion Constructors @@ -124,11 +140,12 @@ namespace grapher speedCap = driverSettings.speedCap }; - WriteButtonDelay(); + ButtonDelay(WriteButton); SettingsErrors errors = Settings.TryUpdateActiveSettings(settings); if (errors.Empty()) { - RefreshToggleStateFromNewSettings(); + SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent(); + LastToggleChecked = SettingsNotDefault; RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings); } else @@ -177,34 +194,23 @@ namespace grapher ToggleButton.Size = WriteButton.Size; ToggleButton.Top = WriteButton.Top; - RefreshToggleStateFromNewSettings(); - SetToggleButtonDefault(); - SetWriteButtonDefault(); + SetButtonDefaults(); } - private void RefreshToggleStateFromNewSettings() + private void SetButtonDefaults() { - SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent(); - LastToggleChecked = SettingsNotDefault; - } + ToggleButton.Checked = LastToggleChecked; + + ToggleButton.Font = DefaultButtonFont; + ToggleButton.Text = ToggleButton.Checked ? "Enabled" : "Disabled"; + ToggleButton.Update(); - private void SetWriteButtonDefault() - { WriteButton.Font = DefaultButtonFont; WriteButton.Text = Constants.WriteButtonDefaultText; WriteButton.Enabled = ToggleButton.Checked || !ToggleButton.Enabled; WriteButton.Update(); } - private void SetToggleButtonDefault() - { - ToggleButton.Checked = LastToggleChecked; - ToggleButton.Enabled = SettingsNotDefault; - ToggleButton.Font = DefaultButtonFont; - ToggleButton.Text = ToggleButton.Checked ? "Enabled" : "Disabled"; - ToggleButton.Update(); - } - private void OnScaleMenuItemClick(object sender, EventArgs e) { UpdateGraph(Settings.RawAccelSettings.AccelerationSettings); @@ -221,7 +227,8 @@ namespace grapher Settings.RawAccelSettings.AccelerationSettings : DriverInterop.DefaultSettings; - ToggleButtonDelay(); + LastToggleChecked = ToggleButton.Checked; + ButtonDelay(ToggleButton); SettingsManager.SendToDriver(settings); Settings.ActiveAccel.UpdateFromSettings(settings); @@ -231,8 +238,8 @@ namespace grapher private void OnButtonTimerTick(object sender, EventArgs e) { ButtonTimer.Stop(); - SetToggleButtonDefault(); - SetWriteButtonDefault(); + ToggleButton.Enabled = SettingsNotDefault; + SetButtonDefaults(); } private void StartButtonTimer() @@ -241,33 +248,17 @@ namespace grapher ButtonTimer.Start(); } - private void WriteButtonDelay() + private void ButtonDelay(ButtonBase btn) { - WriteButton.Font = SmallButtonFont; - WriteButton.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms"; + ToggleButton.Checked = false; + + ToggleButton.Enabled = false; WriteButton.Enabled = false; - WriteButton.Update(); - if (ToggleButton.Enabled) - { - LastToggleChecked = ToggleButton.Checked; - ToggleButton.Checked = false; - ToggleButton.Enabled = false; - ToggleButton.Update(); - } - StartButtonTimer(); - } + btn.Font = SmallButtonFont; + btn.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms"; - private void ToggleButtonDelay() - { - LastToggleChecked = ToggleButton.Checked; - ToggleButton.Checked = false; - ToggleButton.Enabled = false; - ToggleButton.Font = SmallButtonFont; - ToggleButton.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms"; ToggleButton.Update(); - - WriteButton.Enabled = false; WriteButton.Update(); StartButtonTimer(); diff --git a/grapher/Models/AccelGUIFactory.cs b/grapher/Models/AccelGUIFactory.cs index 51bbc2b..3dc2a74 100644 --- a/grapher/Models/AccelGUIFactory.cs +++ b/grapher/Models/AccelGUIFactory.cs @@ -32,6 +32,7 @@ namespace grapher.Models ToolStripMenuItem legacyCapToolStripMenuItem, ToolStripMenuItem gainOffsetToolStripMenuItem, ToolStripMenuItem legacyOffsetToolStripMenuItem, + ToolStripMenuItem autoWriteMenuItem, ToolStripMenuItem scaleMenuItem, ToolStripTextBox dpiTextBox, ToolStripTextBox pollRateTextBox, @@ -326,6 +327,7 @@ namespace grapher.Models activeAccel, accelCalculator.DPI, accelCalculator.PollRate, + autoWriteMenuItem, showLastMouseMoveMenuItem, showVelocityGainToolStripMenuItem); diff --git a/grapher/Models/Serialized/GUISettings.cs b/grapher/Models/Serialized/GUISettings.cs index c8f87ae..bb35055 100644 --- a/grapher/Models/Serialized/GUISettings.cs +++ b/grapher/Models/Serialized/GUISettings.cs @@ -4,6 +4,7 @@ using System; namespace grapher.Models.Serialized { [Serializable] + [JsonObject(ItemRequired = Required.Always)] public class GUISettings { #region Constructors @@ -27,6 +28,9 @@ namespace grapher.Models.Serialized [JsonProperty(Order = 4)] public bool ShowVelocityAndGain { get; set; } + [JsonProperty(Order = 5)] + public bool AutoWriteToDriverOnStartup { get; set; } + #endregion Properties #region Methods @@ -48,7 +52,8 @@ namespace grapher.Models.Serialized return DPI == other.DPI && PollRate == other.PollRate && ShowLastMouseMove == other.ShowLastMouseMove && - ShowVelocityAndGain == other.ShowVelocityAndGain; + ShowVelocityAndGain == other.ShowVelocityAndGain && + AutoWriteToDriverOnStartup == other.AutoWriteToDriverOnStartup; } public override int GetHashCode() @@ -56,7 +61,8 @@ namespace grapher.Models.Serialized return DPI.GetHashCode() ^ PollRate.GetHashCode() ^ ShowLastMouseMove.GetHashCode() ^ - ShowVelocityAndGain.GetHashCode(); + ShowVelocityAndGain.GetHashCode() ^ + AutoWriteToDriverOnStartup.GetHashCode(); } #endregion Methods diff --git a/grapher/Models/Serialized/RawAccelSettings.cs b/grapher/Models/Serialized/RawAccelSettings.cs index 818bfb6..af87a65 100644 --- a/grapher/Models/Serialized/RawAccelSettings.cs +++ b/grapher/Models/Serialized/RawAccelSettings.cs @@ -117,13 +117,18 @@ namespace grapher.Models.Serialized public bool IsDefaultEquivalent() { - bool wholeOrNoY = AccelerationSettings.combineMagnitudes || - AccelerationSettings.modes.y == AccelMode.noaccel; + return IsDefaultEquivalent(AccelerationSettings); + } + + public static bool IsDefaultEquivalent(DriverSettings accelSettings) + { + bool wholeOrNoY = accelSettings.combineMagnitudes || + accelSettings.modes.y == AccelMode.noaccel; - return AccelerationSettings.sensitivity.x == 1 && - AccelerationSettings.sensitivity.y == 1 && - AccelerationSettings.rotation == 0 && - AccelerationSettings.modes.x == AccelMode.noaccel && + return accelSettings.sensitivity.x == 1 && + accelSettings.sensitivity.y == 1 && + accelSettings.rotation == 0 && + accelSettings.modes.x == AccelMode.noaccel && wholeOrNoY; } diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs index 8712c87..f13ba81 100644 --- a/grapher/Models/Serialized/SettingsManager.cs +++ b/grapher/Models/Serialized/SettingsManager.cs @@ -14,12 +14,14 @@ namespace grapher.Models.Serialized ManagedAccel activeAccel, Field dpiField, Field pollRateField, + ToolStripMenuItem autoWrite, ToolStripMenuItem showLastMouseMove, ToolStripMenuItem showVelocityAndGain) { ActiveAccel = activeAccel; DpiField = dpiField; PollRateField = pollRateField; + AutoWriteMenuItem = autoWrite; ShowLastMouseMoveMenuItem = showLastMouseMove; ShowVelocityAndGainMoveMenuItem = showVelocityAndGain; } @@ -36,6 +38,8 @@ namespace grapher.Models.Serialized private Field PollRateField { get; set; } + private ToolStripMenuItem AutoWriteMenuItem { get; set; } + private ToolStripMenuItem ShowLastMouseMoveMenuItem { get; set; } private ToolStripMenuItem ShowVelocityAndGainMoveMenuItem { get; set; } @@ -92,12 +96,7 @@ namespace grapher.Models.Serialized PollRateField.SetToEntered(RawAccelSettings.GUISettings.PollRate); ShowLastMouseMoveMenuItem.Checked = RawAccelSettings.GUISettings.ShowLastMouseMove; ShowVelocityAndGainMoveMenuItem.Checked = RawAccelSettings.GUISettings.ShowVelocityAndGain; - } - - public void UpdateActiveAccelFromFileSettings(DriverSettings settings) - { - TryUpdateAccel(settings); - UpdateFieldsFromGUISettings(); + AutoWriteMenuItem.Checked = RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup; } public SettingsErrors TryUpdateAccel(DriverSettings settings) @@ -126,11 +125,13 @@ namespace grapher.Models.Serialized DPI = (int)DpiField.Data, PollRate = (int)PollRateField.Data, ShowLastMouseMove = ShowLastMouseMoveMenuItem.Checked, - ShowVelocityAndGain = ShowVelocityAndGainMoveMenuItem.Checked + ShowVelocityAndGain = ShowVelocityAndGainMoveMenuItem.Checked, + AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked }; } - public void Startup() + // Returns true when file settings are active + public bool Startup() { if (RawAccelSettings.Exists()) { @@ -138,8 +139,11 @@ namespace grapher.Models.Serialized { RawAccelSettings = RawAccelSettings.Load(() => MakeGUISettingsFromFields()); UpdateFieldsFromGUISettings(); - UpdateActiveAccelFromFileSettings(RawAccelSettings.AccelerationSettings); - return; + if (RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup) + { + TryUpdateAccel(RawAccelSettings.AccelerationSettings); + } + return RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup; } catch (JsonException e) { @@ -151,6 +155,7 @@ namespace grapher.Models.Serialized DriverInterop.GetActiveSettings(), MakeGUISettingsFromFields()); RawAccelSettings.Save(); + return true; } #endregion Methods -- cgit v1.2.3 From f0ec7a278892c0dfed7c39e4efebd57d97cdb46c Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Wed, 21 Oct 2020 21:03:19 -0400 Subject: move speedcap into accelerator --- common/accel-base.hpp | 1 + common/rawaccel-settings.h | 1 - common/rawaccel.hpp | 19 +++++++++---------- grapher/Models/AccelGUI.cs | 9 ++++++--- wrapper/wrapper.cpp | 5 ++--- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/common/accel-base.hpp b/common/accel-base.hpp index ac7ac4d..b15d695 100644 --- a/common/accel-base.hpp +++ b/common/accel-base.hpp @@ -14,6 +14,7 @@ namespace rawaccel { double weight = 1; double scale_cap = 0; double gain_cap = 0; + double speed_cap = 0; }; template diff --git a/common/rawaccel-settings.h b/common/rawaccel-settings.h index fe17181..e9e158c 100644 --- a/common/rawaccel-settings.h +++ b/common/rawaccel-settings.h @@ -20,7 +20,6 @@ namespace rawaccel { bool combine_mags = true; vec2 modes = { accel_mode::noaccel, accel_mode::noaccel }; vec2 argsv; - double speed_cap = 0; vec2d sens = { 1, 1 }; milliseconds time_min = DEFAULT_TIME_MIN; }; diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index 3a49aa6..b160a42 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -195,12 +195,15 @@ namespace rawaccel { accel_variant accel; velocity_gain_cap gain_cap; accel_scale_clamp clamp; + double output_speed_cap = 0; accelerator(const accel_args& args, accel_mode mode, si_pair* lut = nullptr) : accel(args, mode, lut), gain_cap(args.gain_cap, accel), clamp(args.scale_cap) - {} + { + output_speed_cap = maxsd(args.speed_cap, 0); + } - inline double apply(double speed, double output_speed_cap) const { + inline double apply(double speed) const { double scale; if (gain_cap.should_apply(speed)) { @@ -212,9 +215,7 @@ namespace rawaccel { scale = clamp(scale); - double output_speed = scale * speed; - - if (output_speed_cap > 0 && output_speed > output_speed_cap) { + if (output_speed_cap > 0 && (scale * speed) > output_speed_cap) { scale = output_speed_cap / speed; } @@ -230,7 +231,6 @@ namespace rawaccel { bool apply_accel = false; bool combine_magnitudes = true; rotator rotate; - double output_speed_cap = 0; vec2 accels; vec2d sensitivity = { 1, 1 }; @@ -251,7 +251,6 @@ namespace rawaccel { return; } - output_speed_cap = maxsd(args.speed_cap, 0); accels.x = accelerator(args.argsv.x, args.modes.x, luts.x); accels.y = accelerator(args.argsv.y, args.modes.y, luts.y); apply_accel = true; @@ -275,13 +274,13 @@ namespace rawaccel { if (combine_magnitudes) { double mag = sqrtsd(movement.x * movement.x + movement.y * movement.y); double speed = mag / time; - double scale = accels.x.apply(speed, output_speed_cap); + double scale = accels.x.apply(speed); movement.x *= scale; movement.y *= scale; } else { - movement.x *= accels.x.apply(fabs(movement.x) / time, output_speed_cap); - movement.y *= accels.y.apply(fabs(movement.y) / time, output_speed_cap); + movement.x *= accels.x.apply(fabs(movement.x) / time); + movement.y *= accels.y.apply(fabs(movement.y) / time); } } } diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index 09b432f..c08313b 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -125,6 +125,10 @@ namespace grapher { var driverSettings = Settings.RawAccelSettings.AccelerationSettings; + var newArgs = ApplyOptions.GetArgs(); + newArgs.x.speedCap = driverSettings.args.x.speedCap; + newArgs.y.speedCap = driverSettings.args.y.speedCap; + var settings = new DriverSettings { rotation = ApplyOptions.Rotation.Field.Data, @@ -135,9 +139,8 @@ namespace grapher }, combineMagnitudes = ApplyOptions.IsWhole, modes = ApplyOptions.GetModes(), - args = ApplyOptions.GetArgs(), - minimumTime = driverSettings.minimumTime, - speedCap = driverSettings.speedCap + args = newArgs, + minimumTime = driverSettings.minimumTime }; ButtonDelay(WriteButton); diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index 1bfb251..ee88112 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -33,6 +33,8 @@ public value struct AccelArgs [JsonProperty("legacyCap")] double scaleCap; double gainCap; + [JsonProperty(Required = Required::Default)] + double speedCap; }; generic @@ -63,9 +65,6 @@ public ref struct DriverSettings [JsonProperty("Accel parameters")] Vec2 args; - [JsonProperty("Output Speed Cap", Required = Required::Default)] - double speedCap; - [JsonProperty("Sensitivity multipliers")] Vec2 sensitivity; -- cgit v1.2.3 From fa3a5f448d6d6d66b3de313f674623c583bdf41b Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Wed, 21 Oct 2020 21:03:31 -0400 Subject: update signed --- signed/driver/rawaccel.sys | Bin 52552 -> 52560 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/signed/driver/rawaccel.sys b/signed/driver/rawaccel.sys index 94872fe..a390fc4 100644 Binary files a/signed/driver/rawaccel.sys and b/signed/driver/rawaccel.sys differ -- cgit v1.2.3