summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authora1xd <[email protected]>2020-10-21 21:03:19 -0400
committera1xd <[email protected]>2020-10-21 21:03:19 -0400
commitf0ec7a278892c0dfed7c39e4efebd57d97cdb46c (patch)
tree633d599336dada1689ce79e177073b7e401a0a35
parentput autowrite option back in menu (diff)
downloadrawaccel-f0ec7a278892c0dfed7c39e4efebd57d97cdb46c.tar.xz
rawaccel-f0ec7a278892c0dfed7c39e4efebd57d97cdb46c.zip
move speedcap into accelerator
-rw-r--r--common/accel-base.hpp1
-rw-r--r--common/rawaccel-settings.h1
-rw-r--r--common/rawaccel.hpp19
-rw-r--r--grapher/Models/AccelGUI.cs9
-rw-r--r--wrapper/wrapper.cpp5
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;