Skip to content

Commit 688445f

Browse files
authored
3D Gauge Ball & Cylinder and Colour Effects (#891)
* M2K ADI added * Viper ADI updated, and Apache ADI images adjusted. Rotation capability given to the Gauge Image. * Adjustments to the F-16, M2000C and AH-64D ADIs. Most of the work done on the CustomGaugeBall. * Addition of the GaugeCylinder, and over-hauled the FA-18C SAI and most of the graphics. Add the capability of the CustomGaugeBall to have an alternate lighting colour. * A-10C ADI complete * Implement ball and cylinder brightness, and multiple adjustments to teh altered ADIs to implement these. * EffectControlAdjuster Enable/Disable function added * Test implementation of an x/y/z interface element on the M2000C in an attempt to reduce the number of ball renders. * Fix for Bug where reflections were not being scaled * Fix for Incorrect ADI Pitch calibration on the M2000C * Work on the CustomerBallGauge * Adding calibration to the Custom 3D Gauges "Missing Image" image changed to have words, and converted to xaml to improve scaling. UH-60L VSI completion including interface changes. * 1. Added SoftInterface capability to AutoBinding SupportedInterfaces 3. Added VSI LEDs to UH-60L interface 4. UH-60L VSI now autobinds to H-60 variant Soft Interfaces.
1 parent 46e4746 commit 688445f

File tree

336 files changed

+23298
-1306
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

336 files changed

+23298
-1306
lines changed

Aircraft A-10C/Aircraft A-10C.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,9 @@
915915
<Content Include="Templates\Base\A-10C\8 Components\Keys\UFC_IFF.htpl">
916916
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
917917
</Content>
918+
<Content Include="Templates\Base\A-10C\3 Gauges\1 Primary Instruments\ADI - V1.htpl">
919+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
920+
</Content>
918921
</ItemGroup>
919922
<Import Project="..\Helios.targets" />
920923
<PropertyGroup>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<ControlTemplate>
2+
<Name>ADI (2D)</Name>
3+
<Category>A-10C Warthog</Category>
4+
<TypeIdentifier>Helios.A10.ADI.V1</TypeIdentifier>
5+
<Template>
6+
<TemplateValues>
7+
<Location>0,0</Location>
8+
<Size>350,350</Size>
9+
<Hidden>False</Hidden>
10+
<Children />
11+
</TemplateValues>
12+
</Template>
13+
</ControlTemplate>

Aircraft AH-64D Plugin/Aircraft AH-64D Plugin.csproj

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
</Content>
6464
<Resource Include="Interfaces\ExportFunctions.lua" />
6565
<Resource Include="Images\SAI\adi_off_flag.png" />
66-
<Resource Include="Images\SAI\adi_ball.png" />
66+
<Resource Include="Images\SAI\V1\adi_ball.png" />
6767
<Content Include="Templates\Base\AH-64D\0 Altimeter.htpl">
6868
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
6969
</Content>
@@ -126,6 +126,7 @@
126126
<Compile Include="Gauges\MFD\MFD.cs" />
127127
<Compile Include="Gauges\Power\PowerLever.cs" />
128128
<Compile Include="Gauges\SAI\SAI.cs" />
129+
<Compile Include="Gauges\SAI\SAI_V1.cs" />
129130
<Compile Include="Gauges\TEDAC\TEDAC.cs" />
130131
<Compile Include="Interfaces\AH-64DInterface.cs" />
131132
<Compile Include="Interfaces\Functions\AH-64DFunction.cs" />
@@ -369,6 +370,27 @@
369370
<ItemGroup>
370371
<None Include="app.config" />
371372
<None Include="packages.config" />
373+
<Content Include="Templates\Base\AH-64D\0 Standby Attitude Indicator-V1.htpl">
374+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
375+
</Content>
376+
</ItemGroup>
377+
<ItemGroup>
378+
<Resource Include="Images\SAI\adi_ball.xaml">
379+
<Generator>MSBuild:Compile</Generator>
380+
<SubType>Designer</SubType>
381+
</Resource>
382+
</ItemGroup>
383+
<ItemGroup>
384+
<Resource Include="Images\SAI\adi_ball1.xaml">
385+
<Generator>MSBuild:Compile</Generator>
386+
<SubType>Designer</SubType>
387+
</Resource>
388+
</ItemGroup>
389+
<ItemGroup>
390+
<Resource Include="Images\SAI\adi_ball2.xaml">
391+
<Generator>MSBuild:Compile</Generator>
392+
<SubType>Designer</SubType>
393+
</Resource>
372394
</ItemGroup>
373395
<Import Project="..\HeliosPlugin.targets" />
374396
</Project>

Aircraft AH-64D Plugin/Gauges/SAI/SAI.cs

Lines changed: 87 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,47 +17,58 @@
1717
namespace GadrocsWorkshop.Helios.Gauges.AH64D.SAI
1818
{
1919
using GadrocsWorkshop.Helios.ComponentModel;
20+
using GadrocsWorkshop.Helios.Util;
2021
using System;
22+
using System.Globalization;
2123
using System.Windows;
2224
using System.Windows.Media;
25+
using System.Windows.Media.Media3D;
2326

24-
[HeliosControl("Helios.AH64D.SAI", "Standby Attitude Indicator", "AH-64D", typeof(GaugeRenderer),HeliosControlFlags.NotShownInUI)]
27+
[HeliosControl("Helios.AH64D.SAI", "Standby Attitude Indicator", "AH-64D Apache", typeof(GaugeRenderer), HeliosControlFlags.NotShownInUI)]
2528
public class SAI : BaseGauge
2629
{
2730
private HeliosValue _pitch;
2831
private HeliosValue _roll;
32+
private HeliosValue _rotationValue;
2933
private HeliosValue _pitchAdjustment;
3034
private HeliosValue _slipBall;
3135
private HeliosValue _turnIndicator;
3236

3337
private HeliosValue _offFlag;
3438

3539
private GaugeImage _offFlagImage;
36-
37-
private GaugeNeedle _ball;
40+
private GaugeBall _ball;
3841
private GaugeNeedle _bankNeedle;
3942
private GaugeNeedle _wingsNeedle;
4043
private GaugeNeedle _slipBallNeedle;
4144
private GaugeNeedle _TurnMarker;
4245

43-
private CalibrationPointCollectionDouble _pitchCalibration;
46+
private CalibrationPointCollectionDouble _axisCalibration;
4447
private CalibrationPointCollectionDouble _pitchAdjustCalibaration;
4548
private CalibrationPointCollectionDouble _slipBallCalibration;
4649

50+
private bool _suppressScale = false;
51+
52+
4753
public SAI()
4854
: base("Standby Attitude Indicator", new Size(350, 350))
4955
{
5056
Point center = new Point(177d, 163d);
5157

52-
_pitchCalibration = new CalibrationPointCollectionDouble(-360d, -1066d, 360d, 1066d);
53-
_ball = new GaugeNeedle("{AH-64D}/Images/SAI/adi_ball.png", center, new Size(198d, 1160d), new Point(99d, 580d));
54-
_ball.Clip = new EllipseGeometry(center, 99d, 99d);
58+
_axisCalibration = new CalibrationPointCollectionDouble(-360d, -360d, 360d, 360d);
59+
60+
_ball = new GaugeBall("{AH-64D}/Images/SAI/adi_ball1.xaml", new Point(72d, 58d), new Size(210d, 210d), 0d, 0d, -90d, 38d);
5561
Components.Add(_ball);
62+
_ball.Y = -0.001d;
63+
_ball.Z = 0.001d;
64+
_ball.LightingBrightness = 1.0d;
5665

5766
_pitchAdjustCalibaration = new CalibrationPointCollectionDouble(0.11d, -36d, 0.89d, 36d);
5867
_wingsNeedle = new GaugeNeedle("{AH-64D}/Images/SAI/adi_wings.xaml", new Point(99d, 158d), new Size(157d, 31d), new Point(0d, 0d));
5968
Components.Add(_wingsNeedle);
6069

70+
Components.Add(new GaugeImage("{helios}/Gauges/Common/Circular-Shading.xaml", new Rect(80, 65, 198d, 198d)));
71+
6172
Components.Add(new GaugeImage("{AH-64D}/Images/SAI/adi_innermost_ring.xaml", new Rect(65d, 52d, 224d, 224d)));
6273
Components.Add(new GaugeImage("{AH-64D}/Images/SAI/adi_inner_ring.xaml", new Rect(30d, 23d, 287d, 305d)));
6374

@@ -81,6 +92,11 @@ public SAI()
8192

8293
Components.Add(new GaugeImage("{AH-64D}/Images/SAI/adi_bezel.png", new Rect(0d, 0d, 350d, 350d)));
8394

95+
foreach (GaugeComponent gc in Components)
96+
{
97+
gc.EffectsExclusion = this.EffectsExclusion;
98+
}
99+
84100
_slipBall = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Slip Ball Offset", "Side slip indicator offset from the center of the tube.", "(-1 to 1) -1 full left and 1 is full right.", BindingValueUnits.Numeric);
85101
_slipBall.Execute += new HeliosActionHandler(SlipBall_Execute);
86102
Actions.Add(_slipBall);
@@ -93,17 +109,22 @@ public SAI()
93109
_offFlag.Execute += new HeliosActionHandler(OffFlag_Execute);
94110
Actions.Add(_offFlag);
95111

96-
_pitch = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Pitch", "Current ptich of the aircraft.", "(0 - 360)", BindingValueUnits.Degrees);
112+
_pitch = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Pitch", "Current pitch of the aircraft.", "(-90 to +90)", BindingValueUnits.Degrees);
97113
_pitch.Execute += new HeliosActionHandler(Pitch_Execute);
98114
Actions.Add(_pitch);
99115

100116
_pitchAdjustment = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "SAI Pitch adjustment offset", "Location of pitch reference wings.", "(-1 to 1) 1 full up and -1 is full down.", BindingValueUnits.Numeric);
101117
_pitchAdjustment.Execute += new HeliosActionHandler(PitchAdjust_Execute);
102118
Actions.Add(_pitchAdjustment);
103119

104-
_roll = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Bank", "Current bank of the aircraft.", "(0 - 360)", BindingValueUnits.Degrees);
120+
_roll = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Bank", "Current bank of the aircraft.", "(-180 to +180)", BindingValueUnits.Degrees);
105121
_roll.Execute += new HeliosActionHandler(Bank_Execute);
106122
Actions.Add(_roll);
123+
124+
_rotationValue = new HeliosValue(this, new BindingValue(""), "Standby Attitude Indicator", "ADI ball rotation", "X/Y/Z angle changes for the ADI ball.", "Text containing three numbers x;y;z", BindingValueUnits.Text);
125+
_rotationValue.Execute += new HeliosActionHandler(Rotation_Execute);
126+
Actions.Add(_rotationValue);
127+
107128
}
108129

109130

@@ -122,7 +143,7 @@ void OffFlag_Execute(object action, HeliosActionEventArgs e)
122143
void Pitch_Execute(object action, HeliosActionEventArgs e)
123144
{
124145
_pitch.SetValue(e.Value, e.BypassCascadingTriggers);
125-
_ball.VerticalOffset = _pitchCalibration.Interpolate(e.Value.DoubleValue);
146+
_ball.X = e.Value.DoubleValue;
126147
}
127148
void PitchAdjust_Execute(object action, HeliosActionEventArgs e)
128149
{
@@ -132,14 +153,68 @@ void PitchAdjust_Execute(object action, HeliosActionEventArgs e)
132153
void Bank_Execute(object action, HeliosActionEventArgs e)
133154
{
134155
_roll.SetValue(e.Value, e.BypassCascadingTriggers);
135-
_ball.Rotation = -e.Value.DoubleValue;
136-
_bankNeedle.Rotation = -e.Value.DoubleValue;
156+
_ball.Z = e.Value.DoubleValue;
157+
_bankNeedle.Rotation = e.Value.DoubleValue;
158+
}
159+
void Rotation_Execute(object action, HeliosActionEventArgs e)
160+
{
161+
_rotationValue.SetValue(e.Value, e.BypassCascadingTriggers);
162+
string[] parts;
163+
parts = Tokenizer.TokenizeAtLeast(e.Value.StringValue, 3, ';');
164+
double.TryParse(parts[0], NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out double x);
165+
double.TryParse(parts[1], NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out double y);
166+
double.TryParse(parts[2], NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out double z);
167+
_ball.Rotation3D = new Point3D(x, y, -z);
168+
_bankNeedle.Rotation = z;
137169
}
138170
void turnIndicator_Execute(object action, HeliosActionEventArgs e)
139171
{
140172
_turnIndicator.SetValue(e.Value, e.BypassCascadingTriggers);
141173
_TurnMarker.HorizontalOffset = _slipBallCalibration.Interpolate(e.Value.DoubleValue);
142174
}
175+
public override bool EffectsExclusion
176+
{
177+
get => base.EffectsExclusion;
178+
set
179+
{
180+
if (!base.EffectsExclusion.Equals(value))
181+
{
182+
base.EffectsExclusion = value;
183+
OnPropertyChanged("EffectsExclusion", !value, value, true);
184+
}
185+
}
186+
}
187+
public override void ScaleChildren(double scaleX, double scaleY)
188+
{
189+
if (!_suppressScale)
190+
{
191+
_ball.ScaleChildren(scaleX, scaleY);
192+
_suppressScale = false;
193+
}
194+
base.ScaleChildren(scaleX, scaleY);
195+
}
196+
protected override void PostUpdateRectangle(Rect previous, Rect current)
197+
{
198+
_suppressScale = false;
199+
if (!previous.Equals(new Rect(0, 0, 0, 0)) && !(previous.Width == current.Width && previous.Height == current.Height))
200+
{
201+
_ball.ScaleChildren(current.Width / previous.Width, current.Height / previous.Height);
202+
_suppressScale = true;
203+
}
204+
}
205+
206+
public override void Reset()
207+
{
208+
base.Reset();
209+
_ball.Reset();
210+
_pitch.SetValue(new BindingValue(0d), true);
211+
_roll.SetValue(new BindingValue(0d), true);
212+
_rotationValue.SetValue(new BindingValue("0;0;0"), true);
213+
_pitchAdjustment.SetValue(new BindingValue(0d), true);
214+
_slipBall.SetValue(new BindingValue(0d), true);
215+
_offFlag.SetValue(new BindingValue(false), true);
216+
_pitchAdjustment.SetValue(new BindingValue(0d), true);
217+
}
143218

144219
}
145220
}
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
// Copyright 2014 Craig Courtney
2+
// Copyright 2022 Helios Contributors
3+
//
4+
// Helios is free software: you can redistribute it and/or modify
5+
// it under the terms of the GNU General Public License as published by
6+
// the Free Software Foundation, either version 3 of the License, or
7+
// (at your option) any later version.
8+
//
9+
// Helios is distributed in the hope that it will be useful,
10+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
// GNU General Public License for more details.
13+
//
14+
// You should have received a copy of the GNU General Public License
15+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
17+
namespace GadrocsWorkshop.Helios.Gauges.AH64D.SAI
18+
{
19+
using GadrocsWorkshop.Helios.ComponentModel;
20+
using System;
21+
using System.Windows;
22+
using System.Windows.Media;
23+
24+
[HeliosControl("Helios.AH64D.SAI.V1", "Standby Attitude Indicator (V1)", "AH-64D Apache", typeof(GaugeRenderer),HeliosControlFlags.NotShownInUI)]
25+
public class SAI_V1 : BaseGauge
26+
{
27+
private HeliosValue _pitch;
28+
private HeliosValue _roll;
29+
private HeliosValue _pitchAdjustment;
30+
private HeliosValue _slipBall;
31+
private HeliosValue _turnIndicator;
32+
33+
private HeliosValue _offFlag;
34+
35+
private GaugeImage _offFlagImage;
36+
37+
private GaugeNeedle _ball;
38+
private GaugeNeedle _bankNeedle;
39+
private GaugeNeedle _wingsNeedle;
40+
private GaugeNeedle _slipBallNeedle;
41+
private GaugeNeedle _TurnMarker;
42+
43+
private CalibrationPointCollectionDouble _pitchCalibration;
44+
private CalibrationPointCollectionDouble _pitchAdjustCalibaration;
45+
private CalibrationPointCollectionDouble _slipBallCalibration;
46+
47+
public SAI_V1()
48+
: base("Standby Attitude Indicator (V1)", new Size(350, 350))
49+
{
50+
Point center = new Point(177d, 163d);
51+
52+
_pitchCalibration = new CalibrationPointCollectionDouble(-360d, -1066d, 360d, 1066d);
53+
_ball = new GaugeNeedle("{AH-64D}/Images/SAI/V1/adi_ball.png", center, new Size(198d, 1160d), new Point(99d, 580d));
54+
_ball.Clip = new EllipseGeometry(center, 99d, 99d);
55+
Components.Add(_ball);
56+
57+
_pitchAdjustCalibaration = new CalibrationPointCollectionDouble(0.11d, -36d, 0.89d, 36d);
58+
_wingsNeedle = new GaugeNeedle("{AH-64D}/Images/SAI/adi_wings.xaml", new Point(99d, 158d), new Size(157d, 31d), new Point(0d, 0d));
59+
Components.Add(_wingsNeedle);
60+
61+
Components.Add(new GaugeImage("{AH-64D}/Images/SAI/adi_innermost_ring.xaml", new Rect(65d, 52d, 224d, 224d)));
62+
Components.Add(new GaugeImage("{AH-64D}/Images/SAI/adi_inner_ring.xaml", new Rect(30d, 23d, 287d, 305d)));
63+
64+
_bankNeedle = new GaugeNeedle("{AH-64D}/Images/SAI/adi_arrow.xaml", center, new Size(17d, 110d), new Point(8.5d, 110d));
65+
Components.Add(_bankNeedle);
66+
67+
_slipBallCalibration = new CalibrationPointCollectionDouble(-1d, -26d, 1d, 26d);
68+
_slipBallNeedle = new GaugeNeedle("{AH-64D}/Images/SAI/adi_slip_ball.xaml", new Point(176d, 297d), new Size(14d, 14d), new Point(7d, 7d));
69+
Components.Add(_slipBallNeedle);
70+
71+
_TurnMarker = new GaugeNeedle("{AH-64D}/Images/SAI/adi_turn_marker.xaml", new Point(178d, 315d), new Size(12d, 9d), new Point(7d, 0d));
72+
Components.Add(_TurnMarker);
73+
74+
Components.Add(new GaugeImage("{AH-64D}/Images/SAI/adi_guides.xaml", new Rect(66d, 54d, 222d, 250d)));
75+
76+
_offFlagImage = new GaugeImage("{AH-64D}/Images/SAI/adi_off_flag.png", new Rect(270d, 40d, 44d, 166d));
77+
_offFlagImage.IsHidden = true;
78+
Components.Add(_offFlagImage);
79+
80+
Components.Add(new GaugeImage("{AH-64D}/Images/SAI/adi_outer_ring.xaml", new Rect(10d, 9d, 336d, 336d)));
81+
82+
Components.Add(new GaugeImage("{AH-64D}/Images/SAI/adi_bezel.png", new Rect(0d, 0d, 350d, 350d)));
83+
84+
_slipBall = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Slip Ball Offset", "Side slip indicator offset from the center of the tube.", "(-1 to 1) -1 full left and 1 is full right.", BindingValueUnits.Numeric);
85+
_slipBall.Execute += new HeliosActionHandler(SlipBall_Execute);
86+
Actions.Add(_slipBall);
87+
88+
_turnIndicator = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Turn Indicator Offset", "Turn indicator offset from the center of the gauge.", "(-1 to 1) -1 full left and 1 is full right.", BindingValueUnits.Numeric);
89+
_turnIndicator.Execute += new HeliosActionHandler(turnIndicator_Execute);
90+
Actions.Add(_turnIndicator);
91+
92+
_offFlag = new HeliosValue(this, new BindingValue(false), "Standby Attitude Indicator", "Off Flag", "Indicates whether the off flag is displayed.", "True if displayed.", BindingValueUnits.Boolean);
93+
_offFlag.Execute += new HeliosActionHandler(OffFlag_Execute);
94+
Actions.Add(_offFlag);
95+
96+
_pitch = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Pitch", "Current ptich of the aircraft.", "(0 - 360)", BindingValueUnits.Degrees);
97+
_pitch.Execute += new HeliosActionHandler(Pitch_Execute);
98+
Actions.Add(_pitch);
99+
100+
_pitchAdjustment = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "SAI Pitch adjustment offset", "Location of pitch reference wings.", "(-1 to 1) 1 full up and -1 is full down.", BindingValueUnits.Numeric);
101+
_pitchAdjustment.Execute += new HeliosActionHandler(PitchAdjust_Execute);
102+
Actions.Add(_pitchAdjustment);
103+
104+
_roll = new HeliosValue(this, new BindingValue(0d), "Standby Attitude Indicator", "Bank", "Current bank of the aircraft.", "(0 - 360)", BindingValueUnits.Degrees);
105+
_roll.Execute += new HeliosActionHandler(Bank_Execute);
106+
Actions.Add(_roll);
107+
}
108+
109+
110+
void SlipBall_Execute(object action, HeliosActionEventArgs e)
111+
{
112+
_slipBall.SetValue(e.Value, e.BypassCascadingTriggers);
113+
_slipBallNeedle.HorizontalOffset = _slipBallCalibration.Interpolate(e.Value.DoubleValue);
114+
}
115+
116+
void OffFlag_Execute(object action, HeliosActionEventArgs e)
117+
{
118+
_offFlag.SetValue(e.Value, e.BypassCascadingTriggers);
119+
_offFlagImage.IsHidden = !e.Value.BoolValue;
120+
}
121+
122+
void Pitch_Execute(object action, HeliosActionEventArgs e)
123+
{
124+
_pitch.SetValue(e.Value, e.BypassCascadingTriggers);
125+
_ball.VerticalOffset = _pitchCalibration.Interpolate(e.Value.DoubleValue);
126+
}
127+
void PitchAdjust_Execute(object action, HeliosActionEventArgs e)
128+
{
129+
_pitchAdjustment.SetValue(e.Value, e.BypassCascadingTriggers);
130+
_wingsNeedle.VerticalOffset = -_pitchAdjustCalibaration.Interpolate(e.Value.DoubleValue);
131+
}
132+
void Bank_Execute(object action, HeliosActionEventArgs e)
133+
{
134+
_roll.SetValue(e.Value, e.BypassCascadingTriggers);
135+
_ball.Rotation = -e.Value.DoubleValue;
136+
_bankNeedle.Rotation = -e.Value.DoubleValue;
137+
}
138+
void turnIndicator_Execute(object action, HeliosActionEventArgs e)
139+
{
140+
_turnIndicator.SetValue(e.Value, e.BypassCascadingTriggers);
141+
_TurnMarker.HorizontalOffset = _slipBallCalibration.Interpolate(e.Value.DoubleValue);
142+
}
143+
144+
}
145+
}

0 commit comments

Comments
 (0)