private void GetDrivers(SessionInfo info) { if (_mustReloadDrivers) { _drivers.Clear(); _mustReloadDrivers = false; } // Assume max 70 drivers for (int id = 0; id < 70; id++) { // Find existing driver in list var driver = _drivers.SingleOrDefault(d => d.Id == id); if (driver == null) { driver = Driver.FromSessionInfo(info, id); driver.IsCurrentDriver = false; // If no driver found, end of list reached if (driver == null) break; // Add to list _drivers.Add(driver); } else { // Update and check if driver swap occurred var oldId = driver.CustId; var oldName = driver.Name; driver.ParseDynamicSessionInfo(info); if (oldId != driver.CustId) { var e = new DriverSwapEventArgs(oldId, driver.Id, oldName, driver.Name, driver, _telemetry.SessionTime.Value); this.OnDriverSwap(e); } } if (_sdk.DriverId == driver.Id) { _driver = driver; _driver.IsCurrentDriver = true; } } }
protected virtual void OnDriverSwap(DriverSwapEventArgs e) { if (this.DriverSwapEvent != null) this.DriverSwapEvent(this, e); }