public TelemetrySnapshot(DriverInfo playerInfo, WeatherInfo weatherInfo, InputInfo inputInfo, SimulatorSourceInfo simulatorSourceInfo)
 {
     PlayerData          = playerInfo;
     WeatherInfo         = weatherInfo;
     InputInfo           = inputInfo;
     SimulatorSourceInfo = simulatorSourceInfo;
 }
        private void ExtractLastData(DatagramPayload datagramPayload)
        {
            if (datagramPayload.ContainsOtherDriversTiming)
            {
                _lastDriversInfo = datagramPayload.DriversInfo;
                _lastLeaderInfo  = datagramPayload.LeaderInfo;
                _lastPlayerInfo  = datagramPayload.DriversInfo.Any(x => x.IsPlayer) ? datagramPayload.DriversInfo.FirstOrDefault(x => x.IsPlayer) : _lastPlayerInfo;
            }

            if (datagramPayload.ContainsPlayersTiming)
            {
                _lastPlayerInfo = datagramPayload.PlayerInfo;
                if (_lastDriversInfo != null)
                {
                    int index = Array.IndexOf(_lastDriversInfo, _lastDriversInfo.FirstOrDefault(x => x.IsPlayer));
                    if (index != -1)
                    {
                        _lastDriversInfo[index] = _lastPlayerInfo;
                    }
                }
            }

            if (datagramPayload.ContainsSimulatorSourceInfo)
            {
                _lastSimulatorSourceInfo = datagramPayload.SimulatorSourceInfo;
            }
        }
 public DatagramPayloadUnPacker()
 {
     _lastDriversInfo         = new DriverInfo[0];
     _lastPlayerInfo          = new DriverInfo();
     _lastLeaderInfo          = new DriverInfo();
     _lastSimulatorSourceInfo = new SimulatorSourceInfo();
 }
        public bool AreEqual(SimulatorSourceInfo x, SimulatorSourceInfo y)
        {
            if (x == null && y == null)
            {
                return(true);
            }

            if (x == null || y == null)
            {
                return(false);
            }

            return(x.GapInformationProvided == y.GapInformationProvided);
        }
Exemple #5
0
        private void RemoveUnnecessaryData(DatagramPayload datagramPayload)
        {
            if (!_isNetworkConservationEnabled)
            {
                return;
            }

            if (_packageTimer.Elapsed > _packedDelay)
            {
                _packageTimer.Restart();
            }

            if (_playerInfoDelayTimer.Elapsed > _playerInfoDelay)
            {
                _playerInfoDelayTimer.Restart();
            }
            else
            {
                datagramPayload.PlayerInfo            = null;
                datagramPayload.ContainsPlayersTiming = false;
            }

            if (_driversInfoDelayTimer.Elapsed > _driversInfoDelay)
            {
                _driversInfoDelayTimer.Restart();
            }
            else
            {
                datagramPayload.ContainsOtherDriversTiming = false;
                datagramPayload.DriversInfo = null;
                datagramPayload.LeaderInfo  = null;
            }

            if (_lastSimulatorSourceName != datagramPayload.Source || !_simulatorSourceInfoComparator.AreEqual(datagramPayload.SimulatorSourceInfo, _lastSimulatorSourceInfo))
            {
                _lastSimulatorSourceName = datagramPayload.Source;
                _lastSimulatorSourceInfo = datagramPayload.SimulatorSourceInfo;
            }
            else
            {
                datagramPayload.ContainsSimulatorSourceInfo = false;
                datagramPayload.SimulatorSourceInfo         = null;
            }
        }
Exemple #6
0
 public TimedTelemetrySnapshot(TimeSpan lapTime, DriverInfo playerInfo, WeatherInfo weatherInfo, InputInfo inputInfo, SimulatorSourceInfo simulatorSourceInfo) : base(playerInfo, weatherInfo, inputInfo, simulatorSourceInfo)
 {
     LapTime = lapTime;
 }
Exemple #7
0
 public void CreateLapEndSnapshot(DriverInfo driverInfo, WeatherInfo weather, InputInfo inputInfo, SimulatorSourceInfo simulatorSourceInfo)
 {
     LapEndSnapshot = new TelemetrySnapshot(driverInfo, weather, inputInfo, simulatorSourceInfo);
 }
Exemple #8
0
 public LapTelemetryInfo(DriverInfo driverInfo, SimulatorDataSet dataSet, LapInfo lapInfo, TimeSpan snapshotInterval, SimulatorSourceInfo simulatorSourceInfo)
 {
     LapStarSnapshot         = new TelemetrySnapshot(driverInfo, dataSet.SessionInfo.WeatherInfo, dataSet.InputInfo, simulatorSourceInfo);
     LapInfo                 = lapInfo;
     PortionTimes            = new LapPortionTimes(10, dataSet.SessionInfo.TrackInfo.LayoutLength.InMeters, lapInfo);
     TimedTelemetrySnapshots = new TimedTelemetrySnapshots(snapshotInterval);
 }
        public void AddNextSnapshot(TimeSpan lapTime, DriverInfo playerInfo, WeatherInfo weatherInfo, InputInfo inputInfo, SimulatorSourceInfo simulatorSource)
        {
            if ((playerInfo.InPits && playerInfo.Speed.InKph < 5) || lapTime < _nextSnapshotTime)
            {
                return;
            }

            _nextSnapshotTime = lapTime + _snapshotsIntervals;
            _snapshots.Add(new TimedTelemetrySnapshot(lapTime, playerInfo, weatherInfo, inputInfo, simulatorSource));
        }