예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }