public static FlightViewData <T> Create(Vector3 speed, float altitude, float glideRatio, float gforce, ParachuteLine?holdLines, Vector2 linePull) { var metricData = new FlightViewData <T>( speed: new Measure <Vector3>((speed * 60 * 60) / 1000, "km/h"), altitude: new Measure <float>(altitude, "m"), glideRatio: glideRatio, gforce: gforce, activeParachuteLines: holdLines, leftLinePull: linePull.x, rightLinePull: linePull.y); if (typeof(T) == typeof(MeasureSystem.Imperial)) { return(new FlightViewData <T>( speed: new Measure <Vector3>(MeasureSystem.KmhToMph(metricData.Speed.Value), "mph"), altitude: new Measure <float>(MeasureSystem.MetersToFeet(metricData.Altitude.Value), "feet"), glideRatio: metricData.GlideRatio, gforce: metricData.Gforce, activeParachuteLines: metricData.ActiveParachuteLines, leftLinePull: linePull.x, rightLinePull: linePull.y)); } return(metricData); }
public void UpdateRawData <T>(ref FlightViewData <T> rawData) where T : MeasureSystem { _data.Clear(); _data.LeftLinePull = rawData.LeftLinePull; _data.RightLinePull = rawData.RightLinePull; _data.HoldLines.Append(rawData.ActiveParachuteLines.HasValue ? rawData.ActiveParachuteLines.Value.Name() : ""); _data.LineColor = rawData.ActiveParachuteLines.HasValue ? rawData.ActiveParachuteLines.Value.Color() : Color.white; _data.Speed.Append(Mathf.RoundToInt(rawData.AirSpeed.Value)); _data.SpeedUnit = rawData.AirSpeed.Unit; _data.HorizontalSpeed.Append(rawData.HorizontalAirSpeed.Value, 0); _data.VerticalSpeed.Append(rawData.VerticalAirSpeed.Value, 0); _data.Altitude.Append(Mathf.RoundToInt(rawData.Altitude.Value)); _data.AltitudeUnit = rawData.Altitude.Unit; _data.GlideRatio.Append(rawData.GlideRatio, 2); _data.GForce.Append(rawData.Gforce, 2); if (DataUpdated != null) { DataUpdated(_data); } }