Skip to content

Commit

Permalink
move speedcap into accelerator
Browse files Browse the repository at this point in the history
  • Loading branch information
a1xd committed Oct 22, 2020
1 parent 737461c commit f0ec7a2
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 17 deletions.
1 change: 1 addition & 0 deletions common/accel-base.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ namespace rawaccel {
double weight = 1;
double scale_cap = 0;
double gain_cap = 0;
double speed_cap = 0;
};

template <typename Func>
Expand Down
1 change: 0 additions & 1 deletion common/rawaccel-settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down
19 changes: 9 additions & 10 deletions common/rawaccel.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand All @@ -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;
}

Expand All @@ -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 };

Expand All @@ -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;
Expand All @@ -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);
}
}
}
Expand Down
9 changes: 6 additions & 3 deletions grapher/Models/AccelGUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ public void UpdateActiveSettingsFromFields()
{
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,
Expand All @@ -135,9 +139,8 @@ public void UpdateActiveSettingsFromFields()
},
combineMagnitudes = ApplyOptions.IsWhole,
modes = ApplyOptions.GetModes(),
args = ApplyOptions.GetArgs(),
minimumTime = driverSettings.minimumTime,
speedCap = driverSettings.speedCap
args = newArgs,
minimumTime = driverSettings.minimumTime
};

ButtonDelay(WriteButton);
Expand Down
5 changes: 2 additions & 3 deletions wrapper/wrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public value struct AccelArgs
[JsonProperty("legacyCap")]
double scaleCap;
double gainCap;
[JsonProperty(Required = Required::Default)]
double speedCap;
};

generic <typename T>
Expand Down Expand Up @@ -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;

Expand Down

0 comments on commit f0ec7a2

Please sign in to comment.