diff options
| author | Jacob Palecki <[email protected]> | 2020-08-22 02:46:45 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-08-22 02:46:45 -0700 |
| commit | b874058d82a60a39163e91a26f370ff308b8af32 (patch) | |
| tree | 7e14357f1e1e2b2b9726c72ae7b679fd5b475af2 | |
| parent | Serialization mostly working (diff) | |
| download | rawaccel-b874058d82a60a39163e91a26f370ff308b8af32.tar.xz rawaccel-b874058d82a60a39163e91a26f370ff308b8af32.zip | |
Saving and loading fully works
| -rw-r--r-- | grapher/Form1.Designer.cs | 36 | ||||
| -rw-r--r-- | grapher/Form1.cs | 28 | ||||
| -rw-r--r-- | grapher/Models/AccelGUI.cs | 71 | ||||
| -rw-r--r-- | grapher/Models/Serialized/GUISettings.cs | 40 | ||||
| -rw-r--r-- | grapher/Models/Serialized/ModifierArgs.cs | 75 | ||||
| -rw-r--r-- | grapher/Models/Serialized/RawAccelSettings.cs | 31 | ||||
| -rw-r--r-- | grapher/Models/Serialized/SettingsManager.cs | 123 | ||||
| -rw-r--r-- | grapher/grapher.csproj | 2 | ||||
| -rw-r--r-- | settings.json | 50 | ||||
| -rw-r--r-- | wrapper/wrapper.cpp | 5 | ||||
| -rw-r--r-- | wrapper/wrapper.hpp | 11 |
11 files changed, 332 insertions, 140 deletions
diff --git a/grapher/Form1.Designer.cs b/grapher/Form1.Designer.cs index 7a5eb43..ac438a1 100644 --- a/grapher/Form1.Designer.cs +++ b/grapher/Form1.Designer.cs @@ -95,6 +95,8 @@ namespace grapher this.capStyleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.sensitivityToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.velocityGainToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.startupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.AutoWriteMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.AccelerationChartY = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.VelocityChartY = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.GainChartY = new System.Windows.Forms.DataVisualization.Charting.Chart(); @@ -112,8 +114,6 @@ namespace grapher this.OffsetActiveLabel = new System.Windows.Forms.Label(); this.LimitExpActiveLabel = new System.Windows.Forms.Label(); this.MidpointActiveLabel = new System.Windows.Forms.Label(); - this.startupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.AutoWriteMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.AccelerationChart)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.VelocityChart)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.GainChart)).BeginInit(); @@ -519,6 +519,23 @@ namespace grapher this.velocityGainToolStripMenuItem.Size = new System.Drawing.Size(142, 22); this.velocityGainToolStripMenuItem.Text = "Velocity Gain"; // + // startupToolStripMenuItem + // + this.startupToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.AutoWriteMenuItem}); + this.startupToolStripMenuItem.Name = "startupToolStripMenuItem"; + this.startupToolStripMenuItem.Size = new System.Drawing.Size(57, 20); + this.startupToolStripMenuItem.Text = "Startup"; + // + // 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(229, 22); + this.AutoWriteMenuItem.Text = "Apply Settings File on Startup"; + // // AccelerationChartY // chartArea4.AxisX.Title = "Speed (counts/ms)"; @@ -720,21 +737,6 @@ namespace grapher this.MidpointActiveLabel.TabIndex = 47; this.MidpointActiveLabel.Text = "0"; // - // startupToolStripMenuItem - // - this.startupToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.AutoWriteMenuItem}); - this.startupToolStripMenuItem.Name = "startupToolStripMenuItem"; - this.startupToolStripMenuItem.Size = new System.Drawing.Size(57, 20); - this.startupToolStripMenuItem.Text = "Startup"; - // - // AutoWriteMenuItem - // - this.AutoWriteMenuItem.CheckOnClick = true; - this.AutoWriteMenuItem.Name = "AutoWriteMenuItem"; - this.AutoWriteMenuItem.Size = new System.Drawing.Size(229, 22); - this.AutoWriteMenuItem.Text = "Apply Settings File on Startup"; - // // RawAcceleration // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/grapher/Form1.cs b/grapher/Form1.cs index ef06527..d6f7990 100644 --- a/grapher/Form1.cs +++ b/grapher/Form1.cs @@ -11,6 +11,7 @@ using System.Windows.Forms; using System.Runtime.InteropServices; using grapher.Models.Calculations; using grapher.Models.Options; +using grapher.Models.Serialized; namespace grapher { @@ -91,6 +92,7 @@ namespace grapher Marshal.FreeHGlobal(args_ptr); + var accelCharts = new AccelCharts( this, new ChartXY(AccelerationChart, AccelerationChartY), @@ -198,15 +200,21 @@ namespace grapher cap, weight); - AccelCalculator accelCalculator = new AccelCalculator( + var accelCalculator = new AccelCalculator( new Field(DPITextBox.TextBox, this, AccelCalculator.DefaultDPI), new Field(PollRateTextBox.TextBox, this, AccelCalculator.DefaultPollRate)); + var settings = new SettingsManager( + managedAcceleration, + accelCalculator.DPI, + accelCalculator.PollRate, + AutoWriteMenuItem); + AccelGUI = new AccelGUI( this, accelCalculator, accelCharts, - managedAcceleration, + settings, accelerationOptions, sensitivity, rotation, @@ -249,21 +257,7 @@ namespace grapher private void writeButton_Click(object sender, EventArgs e) { - AccelGUI.ManagedAcceleration.UpdateAccel( - AccelGUI.AccelerationOptions.AccelerationIndex, - AccelGUI.Rotation.Field.Data, - AccelGUI.Sensitivity.Fields.X, - AccelGUI.Sensitivity.Fields.Y, - AccelGUI.Weight.Fields.X, - AccelGUI.Weight.Fields.Y, - AccelGUI.Cap.SensitivityCapX, - AccelGUI.Cap.SensitivityCapY, - AccelGUI.Offset.Field.Data, - AccelGUI.Acceleration.Field.Data, - AccelGUI.LimitOrExponent.Field.Data, - AccelGUI.Midpoint.Field.Data, - AccelGUI.Cap.VelocityGainCap); - AccelGUI.UpdateGraph(); + AccelGUI.UpdateActiveSettingsFromFields(); } #endregion Methods diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index a0a76c8..e0dcc03 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -21,7 +21,7 @@ namespace grapher RawAcceleration accelForm, AccelCalculator accelCalculator, AccelCharts accelCharts, - ManagedAccel managedAccel, + SettingsManager settings, AccelOptions accelOptions, OptionXY sensitivity, Option rotation, @@ -39,7 +39,6 @@ namespace grapher AccelForm = accelForm; AccelCalculator = accelCalculator; AccelCharts = accelCharts; - ManagedAcceleration = managedAccel; AccelerationOptions = accelOptions; Sensitivity = sensitivity; Rotation = rotation; @@ -51,9 +50,8 @@ namespace grapher Midpoint = midpoint; WriteButton = writeButton; ScaleMenuItem = scaleMenuItem; - - ManagedAcceleration.ReadFromDriver(); - SavedSettings = StartupLoad(AccelCalculator.DPI, AccelCalculator.PollRate, autoWriteMenuItem); + Settings = settings; + Settings.Startup(); UpdateGraph(); MouseWatcher = new MouseWatcher(AccelForm, mouseMoveLabel, AccelCharts); @@ -67,13 +65,11 @@ namespace grapher public RawAcceleration AccelForm { get; } - public RawAccelSettings SavedSettings { get; } - public AccelCalculator AccelCalculator { get; } public AccelCharts AccelCharts { get; } - public ManagedAccel ManagedAcceleration { get; } + public SettingsManager Settings { get; } public AccelOptions AccelerationOptions { get; } @@ -103,44 +99,43 @@ namespace grapher #region methods + public void UpdateActiveSettingsFromFields() + { + Settings.UpdateActiveSettings( + AccelerationOptions.AccelerationIndex, + Rotation.Field.Data, + Sensitivity.Fields.X, + Sensitivity.Fields.Y, + Weight.Fields.X, + Weight.Fields.Y, + Cap.SensitivityCapX, + Cap.SensitivityCapY, + Offset.Field.Data, + Acceleration.Field.Data, + LimitOrExponent.Field.Data, + Midpoint.Field.Data, + Cap.VelocityGainCap); + UpdateGraph(); + } + public void UpdateGraph() { - AccelCalculator.Calculate(AccelCharts.AccelData, ManagedAcceleration); + AccelCalculator.Calculate(AccelCharts.AccelData, Settings.ActiveAccel); AccelCharts.Bind(); UpdateActiveValueLabels(); - SavedSettings.Save(); } public void UpdateActiveValueLabels() { - Sensitivity.SetActiveValues(ManagedAcceleration.SensitivityX, ManagedAcceleration.SensitivityY); - Rotation.SetActiveValue(ManagedAcceleration.Rotation); - AccelerationOptions.SetActiveValue(ManagedAcceleration.Type); - Offset.SetActiveValue(ManagedAcceleration.Offset); - Acceleration.SetActiveValue(ManagedAcceleration.Acceleration); - Cap.SetActiveValues(ManagedAcceleration.GainCap, ManagedAcceleration.CapX, ManagedAcceleration.CapY, ManagedAcceleration.GainCapEnabled); - Weight.SetActiveValues(ManagedAcceleration.WeightX, ManagedAcceleration.WeightY); - LimitOrExponent.SetActiveValue(ManagedAcceleration.LimitExp); - Midpoint.SetActiveValue(ManagedAcceleration.Midpoint); - } - - private RawAccelSettings StartupLoad(Field dpiField, Field pollRateField, ToolStripMenuItem autoWriteMenuItem) - { - if (RawAccelSettings.Exists()) - { - var settings = RawAccelSettings.Load(); - settings.GUISettings.BindToGUI(dpiField, pollRateField, autoWriteMenuItem); - return settings; - } - else - { - return new RawAccelSettings( - ManagedAcceleration, - new GUISettings( - AccelCalculator.DPI, - AccelCalculator.PollRate, - autoWriteMenuItem)); - } + Sensitivity.SetActiveValues(Settings.ActiveAccel.SensitivityX, Settings.ActiveAccel.SensitivityY); + Rotation.SetActiveValue(Settings.ActiveAccel.Rotation); + AccelerationOptions.SetActiveValue(Settings.ActiveAccel.Type); + Offset.SetActiveValue(Settings.ActiveAccel.Offset); + Acceleration.SetActiveValue(Settings.ActiveAccel.Acceleration); + Cap.SetActiveValues(Settings.ActiveAccel.GainCap, Settings.ActiveAccel.CapX, Settings.ActiveAccel.CapY, Settings.ActiveAccel.GainCapEnabled); + Weight.SetActiveValues(Settings.ActiveAccel.WeightX, Settings.ActiveAccel.WeightY); + LimitOrExponent.SetActiveValue(Settings.ActiveAccel.LimitExp); + Midpoint.SetActiveValue(Settings.ActiveAccel.Midpoint); } private void OnScaleMenuItemClick(object sender, EventArgs e) diff --git a/grapher/Models/Serialized/GUISettings.cs b/grapher/Models/Serialized/GUISettings.cs index 8c182ae..7c8e9a4 100644 --- a/grapher/Models/Serialized/GUISettings.cs +++ b/grapher/Models/Serialized/GUISettings.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -11,41 +12,22 @@ namespace grapher.Models.Serialized [Serializable] public class GUISettings { - public GUISettings( - Field dpiField, - Field pollRateField, - ToolStripMenuItem autoWriteMenuItem) + public GUISettings() {} + + public GUISettings(bool autoWrite, int dpi, int pollRate) { - BindToGUI(dpiField, pollRateField, autoWriteMenuItem); + AutoWriteToDriverOnStartup = autoWrite; + DPI = dpi; + PollRate = pollRate; } + [JsonProperty(Order = 1)] public bool AutoWriteToDriverOnStartup { get; set; } + [JsonProperty(Order = 2)] public int DPI { get; set; } + [JsonProperty(Order = 3)] public int PollRate { get; set; } - - [field: NonSerialized] - private Field DpiField { get; set; } - - [field: NonSerialized] - private Field PollRateField { get; set; } - - [field: NonSerialized] - private ToolStripMenuItem AutoWriteMenuItem { get; set; } - - public void UpdateSettings() - { - DPI = (int)DpiField.Data; - PollRate = (int)PollRateField.Data; - AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked; - } - - public void BindToGUI(Field dpiField, Field pollRateField, ToolStripMenuItem autoWriteMenuItem) - { - DpiField = dpiField; - PollRateField = pollRateField; - AutoWriteMenuItem = autoWriteMenuItem; - } } } diff --git a/grapher/Models/Serialized/ModifierArgs.cs b/grapher/Models/Serialized/ModifierArgs.cs new file mode 100644 index 0000000..206a3c9 --- /dev/null +++ b/grapher/Models/Serialized/ModifierArgs.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace grapher.Models.Serialized +{ + public enum accel_mode + { + linear=1, classic, natural, logarithmic, sigmoid, power, naturalgain, sigmoidgain, noaccel + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + [Serializable] + public struct vec2d + { + public double x; + public double y; + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + [Serializable] + public struct accel_args + { + public double offset; + public double accel; + public double limit; + public double exponent; + public double midpoint; + public double power_scale; + public double gain_cap; + public vec2d weight; + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + [Serializable] + public struct accel_fn_args + { + public accel_args acc_args; + public int accel_mode; + public double time_min; + public vec2d cap; + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + [Serializable] + public struct modifier_args + { + public double degrees; + public vec2d sens; + public accel_fn_args acc_fn_args; + + public modifier_args(ManagedAccel managedAccel) + { + degrees = managedAccel.Rotation; + sens.x = managedAccel.SensitivityX; + sens.y = managedAccel.SensitivityY; + acc_fn_args.accel_mode = managedAccel.Type; + acc_fn_args.time_min = managedAccel.MinimumTime; + acc_fn_args.cap.x = managedAccel.CapX; + acc_fn_args.cap.y = managedAccel.CapY; + acc_fn_args.acc_args.accel = managedAccel.Acceleration; + acc_fn_args.acc_args.exponent = managedAccel.LimitExp; + acc_fn_args.acc_args.gain_cap = managedAccel.GainCap; + acc_fn_args.acc_args.limit = managedAccel.LimitExp; + acc_fn_args.acc_args.midpoint = managedAccel.Midpoint; + acc_fn_args.acc_args.offset = managedAccel.Offset; + acc_fn_args.acc_args.power_scale = managedAccel.PowerScale; + acc_fn_args.acc_args.weight.x = managedAccel.WeightX; + acc_fn_args.acc_args.weight.y = managedAccel.WeightY; + } + } +} diff --git a/grapher/Models/Serialized/RawAccelSettings.cs b/grapher/Models/Serialized/RawAccelSettings.cs index d8896b6..21a7f0c 100644 --- a/grapher/Models/Serialized/RawAccelSettings.cs +++ b/grapher/Models/Serialized/RawAccelSettings.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; @@ -12,20 +13,29 @@ namespace grapher.Models.Serialized [Serializable] public class RawAccelSettings { - public const string DefaultSettingsFile = @".\settings.json"; + public const string DefaultSettingsFileName = @"settings.json"; + public static readonly string ExecutingDirectory = AppDomain.CurrentDomain.BaseDirectory; + public static readonly string DefaultSettingsFile = Path.Combine(ExecutingDirectory, DefaultSettingsFileName); + public static readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings + { + MissingMemberHandling = MissingMemberHandling.Error, + }; + + public RawAccelSettings() { } public RawAccelSettings( ManagedAccel managedAccel, GUISettings guiSettings) { - ManagedAccel = managedAccel; + AccelerationSettings = new modifier_args(managedAccel); GUISettings = guiSettings; } - public ManagedAccel ManagedAccel { get; set; } public GUISettings GUISettings { get; set; } + public modifier_args AccelerationSettings { get; set; } + public static RawAccelSettings Load() { return Load(DefaultSettingsFile); @@ -38,21 +48,14 @@ namespace grapher.Models.Serialized throw new Exception($"Settings file does not exist at {file}"); } - object deserializedObject; + RawAccelSettings deserializedSettings; try { - deserializedObject = JsonConvert.DeserializeObject(File.ReadAllText(file)); + deserializedSettings = JsonConvert.DeserializeObject<RawAccelSettings>(File.ReadAllText(file), SerializerSettings); } - catch - { - throw new Exception($"Settings file at {file} does not contain valid JSON."); - } - - RawAccelSettings deserializedSettings = (RawAccelSettings)deserializedObject; - - if (deserializedSettings == null) + catch(Exception e) { - throw new Exception($"Settings file at {file} does not contain valid Raw Accel Settings."); + throw new Exception($"Settings file at {file} does not contain valid Raw Accel Settings.", e); } return deserializedSettings; diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs new file mode 100644 index 0000000..848606d --- /dev/null +++ b/grapher/Models/Serialized/SettingsManager.cs @@ -0,0 +1,123 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace grapher.Models.Serialized +{ + public class SettingsManager + { + public SettingsManager( + ManagedAccel activeAccel, + Field dpiField, + Field pollRateField, + ToolStripMenuItem autoWrite) + { + ActiveAccel = activeAccel; + DpiField = dpiField; + PollRateField = pollRateField; + AutoWriteMenuItem = autoWrite; + } + + public ManagedAccel ActiveAccel { get; } + + public RawAccelSettings RawAccelSettings { get; private set; } + + private Field DpiField { get; set; } + + private Field PollRateField { get; set; } + + private ToolStripMenuItem AutoWriteMenuItem { get; set; } + + public void UpdateActiveSettings( + int mode, + double degrees, + double sensitivityX, + double sensitivityY, + double weightX, + double weightY, + double capX, + double capY, + double offset, + double accel, + double limitOrExp, + double midpoint, + double gainCap) + { + ActiveAccel.UpdateAccel( + mode, + degrees, + sensitivityX, + sensitivityY, + weightX, + weightY, + capX, + capY, + offset, + accel, + limitOrExp, + midpoint, + gainCap); + + RawAccelSettings.AccelerationSettings = new modifier_args(ActiveAccel); + RawAccelSettings.GUISettings = new GUISettings + { + AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked, + DPI = (int)DpiField.Data, + PollRate = (int)PollRateField.Data + }; + + RawAccelSettings.Save(); + } + + public void UpdateActiveAccelFromFileSettings() + { + ActiveAccel.UpdateAccel( + RawAccelSettings.AccelerationSettings.acc_fn_args.accel_mode, + RawAccelSettings.AccelerationSettings.degrees, + RawAccelSettings.AccelerationSettings.sens.x, + RawAccelSettings.AccelerationSettings.sens.y, + RawAccelSettings.AccelerationSettings.acc_fn_args.acc_args.weight.x, + RawAccelSettings.AccelerationSettings.acc_fn_args.acc_args.weight.y, + RawAccelSettings.AccelerationSettings.acc_fn_args.cap.x, + RawAccelSettings.AccelerationSettings.acc_fn_args.cap.y, + RawAccelSettings.AccelerationSettings.acc_fn_args.acc_args.offset, + RawAccelSettings.AccelerationSettings.acc_fn_args.acc_args.accel, + RawAccelSettings.AccelerationSettings.acc_fn_args.acc_args.exponent, + RawAccelSettings.AccelerationSettings.acc_fn_args.acc_args.midpoint, + RawAccelSettings.AccelerationSettings.acc_fn_args.acc_args.gain_cap); + DpiField.SetToEntered(RawAccelSettings.GUISettings.DPI); + PollRateField.SetToEntered(RawAccelSettings.GUISettings.PollRate); + AutoWriteMenuItem.Checked = RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup; + } + + public void Startup() + { + ActiveAccel.ReadFromDriver(); + + if(RawAccelSettings.Exists()) + { + RawAccelSettings = RawAccelSettings.Load(); + if (RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup) + { + UpdateActiveAccelFromFileSettings(); + } + } + else + { + RawAccelSettings = new RawAccelSettings( + ActiveAccel, + new GUISettings + { + AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked, + DPI = (int)DpiField.Data, + PollRate = (int)PollRateField.Data + }); + RawAccelSettings.Save(); + } + } + } +} diff --git a/grapher/grapher.csproj b/grapher/grapher.csproj index 54b73c8..6e03ae0 100644 --- a/grapher/grapher.csproj +++ b/grapher/grapher.csproj @@ -85,7 +85,9 @@ <Compile Include="Models\Options\Option.cs" /> <Compile Include="Models\Options\OptionXY.cs" /> <Compile Include="Models\Serialized\GUISettings.cs" /> + <Compile Include="Models\Serialized\ModifierArgs.cs" /> <Compile Include="Models\Serialized\RawAccelSettings.cs" /> + <Compile Include="Models\Serialized\SettingsManager.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <EmbeddedResource Include="Form1.resx"> diff --git a/settings.json b/settings.json index d8bc27a..aaa582e 100644 --- a/settings.json +++ b/settings.json @@ -1,23 +1,35 @@ { - "ManagedAccel": { - "Midpoint": 0.0, - "LimitExp": 2.8188211394527425, - "Offset": 0.0, - "WeightY": 0.162, - "WeightX": 0.162, - "GainCapEnabled": true, - "GainCap": 49.127, - "CapY": 9.0, - "CapX": 9.0, - "Acceleration": 0.023716, - "Type": 2, - "Rotation": 1.0, - "SensitivityY": 0.1, - "SensitivityX": 0.075 - }, "GUISettings": { - "AutoWriteToDriverOnStartup": false, - "DPI": 0, - "PollRate": 0 + "AutoWriteToDriverOnStartup": true, + "DPI": 1200, + "PollRate": 1000 + }, + "AccelerationSettings": { + "degrees": 0.0, + "sens": { + "x": 0.075, + "y": 0.1 + }, + "acc_fn_args": { + "acc_args": { + "offset": 0.0, + "accel": 0.023716, + "limit": 2.8188211394527423, + "exponent": 2.8188211394527423, + "midpoint": 0.0, + "power_scale": 1.0, + "gain_cap": 49.127, + "weight": { + "x": 0.162, + "y": 0.162 + } + }, + "accel_mode": 2, + "time_min": 0.4, + "cap": { + "x": 9.0, + "y": 9.0 + } + } } }
\ No newline at end of file diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index 067a874..a3c3704 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -31,7 +31,7 @@ void ManagedAccel::UpdateAccel( double midpoint, double gain_cap) { - modifier_args args{}; + modifier_args args = modifier_args{}; args.acc_fn_args.accel_mode = mode; args.degrees = rotation; args.sens.x = sensitivityX; @@ -52,6 +52,7 @@ void ManagedAccel::UpdateAccel( delete temp_modifier; ReadFromDriver(); + } double ManagedAccel::SensitivityX::get() { return modifier_instance->sensitivity.x; } @@ -68,6 +69,8 @@ double ManagedAccel::WeightY::get() { return modifier_instance->accel_fn.impl_ar double ManagedAccel::Offset::get() { return modifier_instance->accel_fn.speed_offset; } double ManagedAccel::LimitExp::get() { return modifier_instance->accel_fn.impl_args.limit; } double ManagedAccel::Midpoint::get() { return modifier_instance->accel_fn.impl_args.midpoint; } +double ManagedAccel::MinimumTime::get() { return modifier_instance->accel_fn.time_min; } +double ManagedAccel::PowerScale::get() { return modifier_instance->accel_fn.impl_args.power_scale; } void ManagedAccel::WriteToDriver() { diff --git a/wrapper/wrapper.hpp b/wrapper/wrapper.hpp index e90b308..3643eb5 100644 --- a/wrapper/wrapper.hpp +++ b/wrapper/wrapper.hpp @@ -7,13 +7,10 @@ using namespace rawaccel; using namespace System; -[ Serializable ] public ref class ManagedAccel { protected: - [ NonSerialized ] mouse_modifier* modifier_instance; - [ NonSerialized ] wrapper_io* driverWriter; public: ManagedAccel(mouse_modifier* accel) @@ -28,6 +25,9 @@ public: driverWriter = new wrapper_io(); } + // Empty constructor needed for serialization + ManagedAccel() {} + virtual ~ManagedAccel() { if (modifier_instance!= nullptr) @@ -49,16 +49,17 @@ public: property double Rotation { double get(); } property int Type { int get(); } property double Acceleration { double get(); } + property bool GainCapEnabled { bool get(); } property double CapX { double get(); } property double CapY { double get(); } property double GainCap { double get(); } - property bool GainCapEnabled { bool get(); } property double WeightX { double get(); } property double WeightY { double get(); } property double Offset { double get(); } property double LimitExp { double get(); } property double Midpoint { double get(); } - + property double MinimumTime { double get(); } + property double PowerScale { double get(); } mouse_modifier* GetInstance() { return modifier_instance; |