summaryrefslogtreecommitdiff
path: root/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
diff options
context:
space:
mode:
Diffstat (limited to 'grapher/Models/Charts/ChartState/XYTwoGraphState.cs')
-rw-r--r--grapher/Models/Charts/ChartState/XYTwoGraphState.cs76
1 files changed, 76 insertions, 0 deletions
diff --git a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
new file mode 100644
index 0000000..69dc335
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
@@ -0,0 +1,76 @@
+using grapher.Models.Calculations;
+using grapher.Models.Serialized;
+using System;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class XYTwoGraphState : ChartState
+ {
+ private DriverSettings _settings;
+
+ public XYTwoGraphState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData,
+ AccelCalculator accelCalculator)
+ : base(
+ sensitivityChart,
+ velocityChart,
+ gainChart,
+ accelData,
+ accelCalculator)
+ { }
+
+ public override DriverSettings Settings
+ {
+ get { return _settings; }
+ set
+ {
+ _settings = value;
+ ShouldStripSens = AccelCalculator.ShouldStripSens(ref value);
+ if (ShouldStripSens)
+ {
+ Sensitivity = AccelCalculator.GetSens(ref value);
+ }
+ }
+ }
+
+ private bool ShouldStripSens { get; set; }
+
+ private (double, double) Sensitivity { get; set; }
+
+ public override void Activate()
+ {
+ SensitivityChart.SetSeparate();
+ VelocityChart.SetSeparate();
+ GainChart.SetSeparate();
+ }
+
+ public override void MakeDots(int x, int y, double timeInMs)
+ {
+ double xCalc = x;
+ double yCalc = y;
+
+ if (ShouldStripSens)
+ {
+ (xCalc, yCalc) = AccelCalculator.StripSens(xCalc, yCalc, Sensitivity.Item1, Sensitivity.Item2);
+ }
+
+ Data.CalculateDotsXY((int)Math.Round(xCalc), (int)Math.Round(yCalc), timeInMs);
+ }
+
+ public override void Bind()
+ {
+ SensitivityChart.BindXY(Data.X.AccelPoints, Data.Y.AccelPoints);
+ VelocityChart.BindXY(Data.X.VelocityPoints, Data.Y.VelocityPoints);
+ GainChart.BindXY(Data.X.GainPoints, Data.Y.GainPoints);
+ }
+
+ public override void Calculate(ManagedAccel accel, DriverSettings settings)
+ {
+ Calculator.Calculate(Data.X, accel, settings.sensitivity.x, Calculator.MagnitudesX);
+ Calculator.Calculate(Data.Y, accel, settings.sensitivity.y, Calculator.MagnitudesY);
+ }
+ }
+}