diff options
Diffstat (limited to 'grapher/Models/Charts/ChartState/XYTwoGraphState.cs')
| -rw-r--r-- | grapher/Models/Charts/ChartState/XYTwoGraphState.cs | 76 |
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); + } + } +} |