summaryrefslogtreecommitdiff
path: root/grapher/Models/Serialized/ModifierArgs.cs
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-08-22 02:46:45 -0700
committerJacob Palecki <[email protected]>2020-08-22 02:46:45 -0700
commitb874058d82a60a39163e91a26f370ff308b8af32 (patch)
tree7e14357f1e1e2b2b9726c72ae7b679fd5b475af2 /grapher/Models/Serialized/ModifierArgs.cs
parentSerialization mostly working (diff)
downloadrawaccel-b874058d82a60a39163e91a26f370ff308b8af32.tar.xz
rawaccel-b874058d82a60a39163e91a26f370ff308b8af32.zip
Saving and loading fully works
Diffstat (limited to 'grapher/Models/Serialized/ModifierArgs.cs')
-rw-r--r--grapher/Models/Serialized/ModifierArgs.cs75
1 files changed, 75 insertions, 0 deletions
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;
+ }
+ }
+}