diff options
| author | a1xd <[email protected]> | 2020-10-21 21:03:19 -0400 |
|---|---|---|
| committer | a1xd <[email protected]> | 2020-10-21 21:03:19 -0400 |
| commit | f0ec7a278892c0dfed7c39e4efebd57d97cdb46c (patch) | |
| tree | 633d599336dada1689ce79e177073b7e401a0a35 | |
| parent | put autowrite option back in menu (diff) | |
| download | rawaccel-f0ec7a278892c0dfed7c39e4efebd57d97cdb46c.tar.xz rawaccel-f0ec7a278892c0dfed7c39e4efebd57d97cdb46c.zip | |
move speedcap into accelerator
| -rw-r--r-- | common/accel-base.hpp | 1 | ||||
| -rw-r--r-- | common/rawaccel-settings.h | 1 | ||||
| -rw-r--r-- | common/rawaccel.hpp | 19 | ||||
| -rw-r--r-- | grapher/Models/AccelGUI.cs | 9 | ||||
| -rw-r--r-- | 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 <typename Func> 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<accel_mode> modes = { accel_mode::noaccel, accel_mode::noaccel }; vec2<accel_args> 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<accelerator> 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 <typename T> @@ -63,9 +65,6 @@ public ref struct DriverSettings [JsonProperty("Accel parameters")] Vec2<AccelArgs> args; - [JsonProperty("Output Speed Cap", Required = Required::Default)] - double speedCap; - [JsonProperty("Sensitivity multipliers")] Vec2<double> sensitivity; |