Skip to content

Commit 1601eaf

Browse files
authored
Merge pull request RawAccelOfficial#38 from a1xd/1.2
1.2.0
2 parents 7d02822 + fa3a5f4 commit 1601eaf

13 files changed

+127
-80
lines changed

common/accel-base.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ namespace rawaccel {
1414
double weight = 1;
1515
double scale_cap = 0;
1616
double gain_cap = 0;
17+
double speed_cap = 0;
1718
};
1819

1920
template <typename Func>

common/rawaccel-settings.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
#include "accel-base.hpp"
55

66
namespace rawaccel {
7+
78
using milliseconds = double;
89

10+
inline constexpr int MAX_POLL_RATE_KHZ = 8;
11+
inline constexpr milliseconds DEFAULT_TIME_MIN = 1.0 / MAX_POLL_RATE_KHZ * 0.8;
912
inline constexpr milliseconds WRITE_DELAY = 1000;
10-
inline constexpr milliseconds DEFAULT_TIME_MIN = 0.4;
1113

1214
enum class accel_mode {
1315
linear, classic, natural, naturalgain, power, motivity, noaccel

common/rawaccel.hpp

+19-4
Original file line numberDiff line numberDiff line change
@@ -195,16 +195,31 @@ namespace rawaccel {
195195
accel_variant accel;
196196
velocity_gain_cap gain_cap;
197197
accel_scale_clamp clamp;
198+
double output_speed_cap = 0;
198199

199200
accelerator(const accel_args& args, accel_mode mode, si_pair* lut = nullptr) :
200201
accel(args, mode, lut), gain_cap(args.gain_cap, accel), clamp(args.scale_cap)
201-
{}
202+
{
203+
output_speed_cap = maxsd(args.speed_cap, 0);
204+
}
205+
206+
inline double apply(double speed) const {
207+
double scale;
202208

203-
inline double apply(double speed) const {
204209
if (gain_cap.should_apply(speed)) {
205-
return clamp(gain_cap.apply(speed));
210+
scale = gain_cap.apply(speed);
211+
}
212+
else {
213+
scale = accel.apply(speed);
206214
}
207-
else return clamp(accel.apply(speed));
215+
216+
scale = clamp(scale);
217+
218+
if (output_speed_cap > 0 && (scale * speed) > output_speed_cap) {
219+
scale = output_speed_cap / speed;
220+
}
221+
222+
return scale;
208223
}
209224

210225
accelerator() = default;

grapher/Form1.Designer.cs

+16-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

grapher/Form1.cs

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public RawAcceleration()
5959
legacyCapToolStripMenuItem,
6060
gainOffsetToolStripMenuItem,
6161
legacyOffsetToolStripMenuItem,
62+
AutoWriteMenuItem,
6263
ScaleMenuItem,
6364
DPITextBox,
6465
PollRateTextBox,

grapher/Models/AccelGUI.cs

+47-52
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,8 @@ public AccelGUI(
3333
ToggleButton = (CheckBox)toggleButton;
3434
ScaleMenuItem = scaleMenuItem;
3535
Settings = settings;
36-
Settings.Startup();
37-
RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings);
38-
AccelForm.DoResize();
39-
4036
DefaultButtonFont = WriteButton.Font;
4137
SmallButtonFont = new Font(WriteButton.Font.Name, WriteButton.Font.Size * Constants.SmallButtonSizeFactor);
42-
4338
MouseWatcher = mouseWatcher;
4439

4540
ScaleMenuItem.Click += new System.EventHandler(OnScaleMenuItemClick);
@@ -50,9 +45,30 @@ public AccelGUI(
5045
ButtonTimerInterval = Convert.ToInt32(DriverInterop.WriteDelayMs);
5146
ButtonTimer = new Timer();
5247
ButtonTimer.Tick += new System.EventHandler(OnButtonTimerTick);
53-
SetupButtons();
5448

5549
ChartRefresh = SetupChartTimer();
50+
51+
bool settingsActive = Settings.Startup();
52+
SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent();
53+
54+
if (settingsActive)
55+
{
56+
LastToggleChecked = SettingsNotDefault;
57+
ToggleButton.Enabled = LastToggleChecked;
58+
RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings);
59+
}
60+
else
61+
{
62+
DriverSettings active = DriverInterop.GetActiveSettings();
63+
bool activeNotDefault = !RawAccelSettings.IsDefaultEquivalent(active);
64+
65+
LastToggleChecked = activeNotDefault;
66+
ToggleButton.Enabled = SettingsNotDefault || activeNotDefault;
67+
RefreshOnRead(active);
68+
}
69+
70+
SetupButtons();
71+
AccelForm.DoResize();
5672
}
5773

5874
#endregion Constructors
@@ -109,6 +125,10 @@ public void UpdateActiveSettingsFromFields()
109125
{
110126
var driverSettings = Settings.RawAccelSettings.AccelerationSettings;
111127

128+
var newArgs = ApplyOptions.GetArgs();
129+
newArgs.x.speedCap = driverSettings.args.x.speedCap;
130+
newArgs.y.speedCap = driverSettings.args.y.speedCap;
131+
112132
var settings = new DriverSettings
113133
{
114134
rotation = ApplyOptions.Rotation.Field.Data,
@@ -119,15 +139,16 @@ public void UpdateActiveSettingsFromFields()
119139
},
120140
combineMagnitudes = ApplyOptions.IsWhole,
121141
modes = ApplyOptions.GetModes(),
122-
args = ApplyOptions.GetArgs(),
142+
args = newArgs,
123143
minimumTime = driverSettings.minimumTime
124144
};
125145

126-
WriteButtonDelay();
146+
ButtonDelay(WriteButton);
127147
SettingsErrors errors = Settings.TryUpdateActiveSettings(settings);
128148
if (errors.Empty())
129149
{
130-
RefreshToggleStateFromNewSettings();
150+
SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent();
151+
LastToggleChecked = SettingsNotDefault;
131152
RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings);
132153
}
133154
else
@@ -176,34 +197,23 @@ private void SetupButtons()
176197
ToggleButton.Size = WriteButton.Size;
177198
ToggleButton.Top = WriteButton.Top;
178199

179-
RefreshToggleStateFromNewSettings();
180-
SetToggleButtonDefault();
181-
SetWriteButtonDefault();
200+
SetButtonDefaults();
182201
}
183202

184-
private void RefreshToggleStateFromNewSettings()
203+
private void SetButtonDefaults()
185204
{
186-
SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent();
187-
LastToggleChecked = SettingsNotDefault;
188-
}
205+
ToggleButton.Checked = LastToggleChecked;
206+
207+
ToggleButton.Font = DefaultButtonFont;
208+
ToggleButton.Text = ToggleButton.Checked ? "Enabled" : "Disabled";
209+
ToggleButton.Update();
189210

190-
private void SetWriteButtonDefault()
191-
{
192211
WriteButton.Font = DefaultButtonFont;
193212
WriteButton.Text = Constants.WriteButtonDefaultText;
194213
WriteButton.Enabled = ToggleButton.Checked || !ToggleButton.Enabled;
195214
WriteButton.Update();
196215
}
197216

198-
private void SetToggleButtonDefault()
199-
{
200-
ToggleButton.Checked = LastToggleChecked;
201-
ToggleButton.Enabled = SettingsNotDefault;
202-
ToggleButton.Font = DefaultButtonFont;
203-
ToggleButton.Text = ToggleButton.Checked ? "Enabled" : "Disabled";
204-
ToggleButton.Update();
205-
}
206-
207217
private void OnScaleMenuItemClick(object sender, EventArgs e)
208218
{
209219
UpdateGraph(Settings.RawAccelSettings.AccelerationSettings);
@@ -220,7 +230,8 @@ private void OnToggleButtonClick(object sender, EventArgs e)
220230
Settings.RawAccelSettings.AccelerationSettings :
221231
DriverInterop.DefaultSettings;
222232

223-
ToggleButtonDelay();
233+
LastToggleChecked = ToggleButton.Checked;
234+
ButtonDelay(ToggleButton);
224235

225236
SettingsManager.SendToDriver(settings);
226237
Settings.ActiveAccel.UpdateFromSettings(settings);
@@ -230,8 +241,8 @@ private void OnToggleButtonClick(object sender, EventArgs e)
230241
private void OnButtonTimerTick(object sender, EventArgs e)
231242
{
232243
ButtonTimer.Stop();
233-
SetToggleButtonDefault();
234-
SetWriteButtonDefault();
244+
ToggleButton.Enabled = SettingsNotDefault;
245+
SetButtonDefaults();
235246
}
236247

237248
private void StartButtonTimer()
@@ -240,33 +251,17 @@ private void StartButtonTimer()
240251
ButtonTimer.Start();
241252
}
242253

243-
private void WriteButtonDelay()
254+
private void ButtonDelay(ButtonBase btn)
244255
{
245-
WriteButton.Font = SmallButtonFont;
246-
WriteButton.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms";
256+
ToggleButton.Checked = false;
257+
258+
ToggleButton.Enabled = false;
247259
WriteButton.Enabled = false;
248-
WriteButton.Update();
249260

250-
if (ToggleButton.Enabled)
251-
{
252-
LastToggleChecked = ToggleButton.Checked;
253-
ToggleButton.Checked = false;
254-
ToggleButton.Enabled = false;
255-
ToggleButton.Update();
256-
}
257-
StartButtonTimer();
258-
}
261+
btn.Font = SmallButtonFont;
262+
btn.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms";
259263

260-
private void ToggleButtonDelay()
261-
{
262-
LastToggleChecked = ToggleButton.Checked;
263-
ToggleButton.Checked = false;
264-
ToggleButton.Enabled = false;
265-
ToggleButton.Font = SmallButtonFont;
266-
ToggleButton.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms";
267264
ToggleButton.Update();
268-
269-
WriteButton.Enabled = false;
270265
WriteButton.Update();
271266

272267
StartButtonTimer();

grapher/Models/AccelGUIFactory.cs

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public static AccelGUI Construct(
3232
ToolStripMenuItem legacyCapToolStripMenuItem,
3333
ToolStripMenuItem gainOffsetToolStripMenuItem,
3434
ToolStripMenuItem legacyOffsetToolStripMenuItem,
35+
ToolStripMenuItem autoWriteMenuItem,
3536
ToolStripMenuItem scaleMenuItem,
3637
ToolStripTextBox dpiTextBox,
3738
ToolStripTextBox pollRateTextBox,
@@ -326,6 +327,7 @@ public static AccelGUI Construct(
326327
activeAccel,
327328
accelCalculator.DPI,
328329
accelCalculator.PollRate,
330+
autoWriteMenuItem,
329331
showLastMouseMoveMenuItem,
330332
showVelocityGainToolStripMenuItem);
331333

grapher/Models/Options/ActiveValueLabelXY.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ public void AlignActiveValues()
143143
private void Align (int width)
144144
{
145145
FullWidth = width;
146-
ShortenedWidth = FullWidth / 2;
146+
// ShortenedWidth = FullWidth / 2;
147+
ShortenedWidth = FullWidth;
147148

148149
SetYLeft();
149150
Y.Width = ShortenedWidth;

grapher/Models/Serialized/GUISettings.cs

+8-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
namespace grapher.Models.Serialized
55
{
66
[Serializable]
7+
[JsonObject(ItemRequired = Required.Always)]
78
public class GUISettings
89
{
910
#region Constructors
@@ -27,6 +28,9 @@ public GUISettings() {}
2728
[JsonProperty(Order = 4)]
2829
public bool ShowVelocityAndGain { get; set; }
2930

31+
[JsonProperty(Order = 5)]
32+
public bool AutoWriteToDriverOnStartup { get; set; }
33+
3034
#endregion Properties
3135

3236
#region Methods
@@ -48,15 +52,17 @@ public bool Equals(GUISettings other)
4852
return DPI == other.DPI &&
4953
PollRate == other.PollRate &&
5054
ShowLastMouseMove == other.ShowLastMouseMove &&
51-
ShowVelocityAndGain == other.ShowVelocityAndGain;
55+
ShowVelocityAndGain == other.ShowVelocityAndGain &&
56+
AutoWriteToDriverOnStartup == other.AutoWriteToDriverOnStartup;
5257
}
5358

5459
public override int GetHashCode()
5560
{
5661
return DPI.GetHashCode() ^
5762
PollRate.GetHashCode() ^
5863
ShowLastMouseMove.GetHashCode() ^
59-
ShowVelocityAndGain.GetHashCode();
64+
ShowVelocityAndGain.GetHashCode() ^
65+
AutoWriteToDriverOnStartup.GetHashCode();
6066
}
6167

6268
#endregion Methods

0 commit comments

Comments
 (0)