public static List <PositionModel> GetPositionsNew(this IRacingSDK racingSDK) { if (racingSDK.IsConnected()) { var data = new Data(racingSDK); var tick = data.SessionTick; var CarIdxBestLapNum = data.CarIdxBestLapNum; var CarIdxBestLapTime = data.CarIdxBestLapTime; var CarIdxClassPosition = data.CarIdxClassPosition; var CarIdxEstTime = data.CarIdxEstTime; var CarIdxF2Time = data.CarIdxF2Time; var CarIdxGear = data.CarIdxGear; var CarIdxLap = data.CarIdxLap; var CarIdxLapCompleted = data.CarIdxLapCompleted; var CarIdxLapDistPct = data.CarIdxLapDistPct; var CarIdxLastLapTime = data.CarIdxLastLapTime; var CarIdxOnPitRoad = data.CarIdxOnPitRoad; var CarIdxP2P_Count = data.CarIdxP2P_Count; var CarIdxP2P_Status = data.CarIdxP2P_Status; var CarIdxPosition = data.CarIdxPosition; var CarIdxRPM = data.CarIdxRPM; var CarIdxSteer = data.CarIdxSteer; var CarIdxTrackSurface = data.CarIdxTrackSurface; var CarIdxTrackSurfaceMaterial = data.CarIdxTrackSurfaceMaterial; var results = new List <PositionModel>(); for (var i = 0; i < 64; i++) { results.Add(new PositionModel { CarIdx = i, CarIdxBestLapNum = CarIdxBestLapNum[i], CarIdxBestLapTime = CarIdxBestLapTime[i], CarIdxClassPosition = CarIdxClassPosition[i], CarIdxEstTime = CarIdxEstTime[i], CarIdxF2Time = CarIdxF2Time[i], CarIdxGear = CarIdxGear[i], CarIdxLap = CarIdxLap[i], CarIdxLapCompleted = CarIdxLapCompleted[i], CarIdxLapDistPct = CarIdxLapDistPct[i], CarIdxLastLapTime = CarIdxLastLapTime[i], CarIdxOnPitRoad = CarIdxOnPitRoad[i], CarIdxP2P_Count = CarIdxP2P_Count[i], CarIdxP2P_Status = CarIdxP2P_Status[i], CarIdxPosition = CarIdxPosition[i], CarIdxRPM = CarIdxRPM[i], CarIdxSteer = CarIdxSteer[i], CarIdxTrackSurface = CarIdxTrackSurface[i], CarIdxTrackSurfaceMaterial = CarIdxTrackSurfaceMaterial[i], SessionTime = tick }); } return(results); } return(null); }
public static IRacingDataModel GetSerializedData(this IRacingSDK racingSDK) { if (racingSDK.IsConnected()) { var fileView = IRacingSDK.GetFileMapView(racingSDK); var headers = IRacingSDK.GetVarHeaders(racingSDK); var data = new byte[racingSDK.Header.BufferLength]; fileView.ReadArray(racingSDK.Header.Offset, data, 0, racingSDK.Header.BufferLength); return(IRacingDataModel.Serialize(data, headers)); } return(null); }
public static List <CarModel> GetPositions(this IRacingSDK racingSDK, out double sessionTime) { if (racingSDK.IsConnected()) { var fileView = IRacingSDK.GetFileMapView(racingSDK); var headers = IRacingSDK.GetVarHeaders(racingSDK); var data = new byte[racingSDK.Header.BufferLength]; fileView.ReadArray(racingSDK.Header.Offset, data, 0, racingSDK.Header.BufferLength); sessionTime = (double)racingSDK.GetData("SessionTime"); return(IRacingDataModel.SerializeCars(data, headers)); } sessionTime = 0; return(null); }
private static void Loop() { int lastUpdate = -1; while (true) { var currentlyConnected = sdk.IsConnected(); // Check if we can find the sim if (currentlyConnected) { int attempts = 0; const int maxAttempts = 99; object sessionnum = TryGetSessionNum(); while (sessionnum == null && attempts <= maxAttempts) { attempts++; sessionnum = TryGetSessionNum(); } if (attempts >= maxAttempts) { System.Console.WriteLine("Session num too many attempts"); continue; } // Parse out your own driver Id if (DriverId == -1) { _DriverId = (int)sdk.GetData("PlayerCarIdx"); } var data = sdk.GetSerializedData(); // Raise the TelemetryUpdated event and pass along the lap info and session time //var telArgs = new TelemetryUpdatedEventArgs(new TelemetryInfo(sdk), time); // this.RaiseEvent(OnTelemetryUpdated, telArgs); // Is the session info updated? int newUpdate = sdk.Header.SessionInfoUpdate; if (newUpdate != lastUpdate) { lastUpdate = newUpdate; _session = sdk.GetSerializedSessionInfo(); } if (data != null && _session != null) { Console.SetCursorPosition(0, 0); foreach (var car in data.Data.Cars.OrderByDescending(x => x.CarIdxLap).ThenByDescending(x => x.CarIdxLapDistPct)) { var currentData = _session.DriverInfo.Drivers.Where(y => y.CarIdx == car.CarIdx).FirstOrDefault(); if (currentData != null && car.CarIdxEstTime != 0) { Console.WriteLine($"{currentData.CarNumber}\t{string.Format("{0:0.00}", car.CarIdxEstTime)}\t{string.Format("{0:0.00}", car.CarIdxLapDistPct * 100)}"); } } } Thread.Sleep(15); } else { Thread.Sleep(1000); } } }