private static void AddPedalInfo(AssettoCorsaShared acData, SimulatorDataSet simData) { simData.InputInfo.ThrottlePedalPosition = acData.AcsPhysics.gas; simData.InputInfo.BrakePedalPosition = acData.AcsPhysics.brake; simData.InputInfo.ClutchPedalPosition = 1 - acData.AcsPhysics.clutch; simData.InputInfo.SteeringInput = acData.AcsPhysics.steerAngle; }
private static void AddBrakesInfo(AssettoCorsaShared acData, SimulatorDataSet simData) { simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.BrakeTemperature.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.brakeTemp[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.BrakeTemperature.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.brakeTemp[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.BrakeTemperature.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.brakeTemp[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.BrakeTemperature.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.brakeTemp[(int)AcWheels.RR]); }
internal void FillSessionInfo(AssettoCorsaShared data, SimulatorDataSet simData) { // Timing simData.SessionInfo.SessionTime = _connector.SessionTime; simData.SessionInfo.TrackInfo.LayoutLength = Distance.FromMeters(data.AcsStatic.trackSPlineLength); simData.SessionInfo.TrackInfo.TrackName = FormatACName(data.AcsStatic.track); simData.SessionInfo.TrackInfo.TrackLayoutName = data.AcsStatic.trackConfiguration; simData.SessionInfo.WeatherInfo.AirTemperature = Temperature.FromCelsius(data.AcsPhysics.airTemp); simData.SessionInfo.WeatherInfo.TrackTemperature = Temperature.FromCelsius(data.AcsPhysics.roadTemp); simData.SessionInfo.WeatherInfo.RainIntensity = 0; simData.SessionInfo.IsMultiplayer = data.AcsSecondMonitor.serverName[0] != 0; switch (data.AcsGraphic.session) { case AcSessionType.AC_DRAG: case AcSessionType.AC_PRACTICE: case AcSessionType.AC_TIME_ATTACK: case AcSessionType.AC_HOT_LAP: simData.SessionInfo.SessionType = SessionType.Practice; break; case AcSessionType.AC_QUALIFY: simData.SessionInfo.SessionType = SessionType.Qualification; break; case AcSessionType.AC_DRIFT: case AcSessionType.AC_RACE: simData.SessionInfo.SessionType = SessionType.Race; break; default: simData.SessionInfo.SessionType = SessionType.Na; break; } simData.SessionInfo.SessionPhase = SessionPhase.Green; simData.SessionInfo.IsActive = data.AcsGraphic.status == AcStatus.AC_LIVE; // ReSharper disable once CompareOfFloatsByEqualityOperator if ((data.AcsStatic.isTimedRace == 1 || simData.SessionInfo.SessionType != SessionType.Race) && data.AcsGraphic.sessionTimeLeft < 0) { simData.SessionInfo.SessionLengthType = SessionLengthType.Time; simData.SessionInfo.SessionTimeRemaining = 120000; } else if (data.AcsStatic.isTimedRace == 1 || simData.SessionInfo.SessionType != SessionType.Race) { simData.SessionInfo.SessionLengthType = SessionLengthType.Time; simData.SessionInfo.SessionTimeRemaining = data.AcsGraphic.sessionTimeLeft / 1000; } else { simData.SessionInfo.SessionLengthType = SessionLengthType.Laps; simData.SessionInfo.TotalNumberOfLaps = data.AcsGraphic.numberOfLaps; } _sectorLength = (int)simData.SessionInfo.TrackInfo.LayoutLength.InMeters / 3; }
private void AddLappingInformation(SimulatorDataSet data, AssettoCorsaShared acData, DriverInfo driverInfo) { if (data.SessionInfo.SessionType == SessionType.Race && _lastPlayer != null && _lastPlayer.CompletedLaps != 0) { driverInfo.IsBeingLappedByPlayer = driverInfo.TotalDistance < (_lastPlayer.TotalDistance - acData.AcsStatic.trackSPlineLength * 0.5); driverInfo.IsLappingPlayer = _lastPlayer.TotalDistance < (driverInfo.TotalDistance - acData.AcsStatic.trackSPlineLength * 0.5); } }
private void FillBoostData(AssettoCorsaShared data, CarInfo playerCar) { BoostSystem boostSystem = playerCar.BoostSystem; if (data.AcsPhysics.kersCharge <= 0) { return; } boostSystem.ActivationsRemaining = (int)(data.AcsPhysics.kersCharge * 100); boostSystem.BoostStatus = data.AcsPhysics.ersIsCharging == 1 ? BoostStatus.Available : BoostStatus.InUse; }
private void AddPlayerCarInfo(AssettoCorsaShared data, SimulatorDataSet simData) { CarInfo playerCar = simData.PlayerInfo.CarInfo; playerCar.CarDamageInformation.Bodywork.MediumDamageThreshold = 0.02; playerCar.CarDamageInformation.Bodywork.HeavyDamageThreshold = 0.2; playerCar.CarDamageInformation.Bodywork.Damage = data.AcsPhysics.carDamage.Max() / 100.0; playerCar.SpeedLimiterEngaged = simData.PlayerInfo.InPits; FillDrsData(data, playerCar); FillBoostData(data, playerCar); }
private void FillDrsData(AssettoCorsaShared data, CarInfo playerCar) { DrsSystem drsSystem = playerCar.DrsSystem; if (data.AcsPhysics.drsEnabled == 1) { drsSystem.DrsStatus = DrsStatus.InUse; return; } if (data.AcsPhysics.drsAvailable == 1) { drsSystem.DrsStatus = DrsStatus.Available; } }
public SimulatorDataSet CreateSimulatorDataSet(AssettoCorsaShared acData) { SimulatorDataSet simData = new SimulatorDataSet("Assetto Corsa") { SimulatorSourceInfo = { HasLapTimeInformation = true, OutLapIsValid = true, SimNotReportingEndOfOutLapCorrectly = true, ForceLapOverTime = true, GlobalTyreCompounds = false, SectorTimingSupport = DataInputSupport.SpOnly, TelemetryInfo = { ContainsSuspensionTravel = true } } }; FillSessionInfo(acData, simData); AddDriversData(simData, acData); FillPlayerCarInfo(acData, simData); // PEDAL INFO AddPedalInfo(acData, simData); // WaterSystemInfo AddWaterSystemInfo(simData); // OilSystemInfo AddOilSystemInfo(simData, acData); // Brakes Info AddBrakesInfo(acData, simData); // Tyre Pressure Info AddTyresAndFuelInfo(simData, acData); // Acceleration AddAcceleration(simData, acData); //Add Additional Player Car Info AddPlayerCarInfo(acData, simData); _startObserver.Observe(simData); return(simData); }
private void AddPlayerCarInfo(AssettoCorsaShared data, SimulatorDataSet simData) { CarInfo playerCar = simData.PlayerInfo.CarInfo; playerCar.CarDamageInformation.Bodywork.MediumDamageThreshold = 0.02; playerCar.CarDamageInformation.Bodywork.HeavyDamageThreshold = 0.2; playerCar.CarDamageInformation.Bodywork.Damage = data.AcsPhysics.carDamage.Max() / 100.0; playerCar.SpeedLimiterEngaged = simData.PlayerInfo.InPits; playerCar.WorldOrientation = new Orientation() { Pitch = Angle.GetFromRadians(data.AcsPhysics.pitch), Yaw = Angle.GetFromRadians(data.AcsPhysics.heading), Roll = Angle.GetFromRadians(data.AcsPhysics.roll), }; FillDrsData(data, playerCar); FillBoostData(data, playerCar); }
internal void AddDriversData(SimulatorDataSet data, AssettoCorsaShared acData) { if (acData.AcsSecondMonitor.numVehicles < 1) { return; } data.DriversInfo = new DriverInfo[acData.AcsSecondMonitor.numVehicles]; DriverInfo playersInfo = null; for (int i = 0; i < acData.AcsSecondMonitor.numVehicles; i++) { AcsVehicleInfo acVehicleInfo = acData.AcsSecondMonitor.vehicle[i]; DriverInfo driverInfo = CreateDriverInfo(acData, acVehicleInfo, data); driverInfo.CurrentLapValid = acVehicleInfo.currentLapInvalid == 0 && (data.SessionInfo.SessionType != SessionType.Race || driverInfo.CompletedLaps > 0); if (driverInfo.IsPlayer) { playersInfo = driverInfo; driverInfo.CurrentLapValid &= acData.AcsPhysics.numberOfTyresOut != 4; } data.DriversInfo[i] = driverInfo; if (driverInfo.Position == 1) { data.SessionInfo.LeaderCurrentLap = driverInfo.CompletedLaps + 1; data.LeaderInfo = driverInfo; } AddLappingInformation(data, acData, driverInfo); FillTimingInfo(driverInfo, acVehicleInfo, data); } CheckValidityByPlayer(playersInfo); _lastPlayer = playersInfo; if (playersInfo != null) { data.PlayerInfo = playersInfo; } }
private DriverInfo CreateDriverInfo(AssettoCorsaShared acData, AcsVehicleInfo acVehicleInfo, SimulatorDataSet dataSet) { DriverInfo driverInfo = new DriverInfo { DriverName = StringExtensions.FromArray(acVehicleInfo.driverName), CompletedLaps = acVehicleInfo.lapCount, CarName = FormatACName(StringExtensions.FromArray(acVehicleInfo.carModel)), }; driverInfo.InPits = acVehicleInfo.isCarInPit == 1 || acVehicleInfo.isCarInPitlane == 1; driverInfo.IsPlayer = acVehicleInfo.carId == 0; driverInfo.Position = dataSet.SessionInfo.SessionType == SessionType.Race ? acVehicleInfo.carRealTimeLeaderboardPosition + 1 : acVehicleInfo.carLeaderboardPosition; driverInfo.Speed = Velocity.FromMs(acVehicleInfo.speedMS); driverInfo.LapDistance = acData.AcsStatic.trackSPlineLength * acVehicleInfo.spLineLength; driverInfo.TotalDistance = acVehicleInfo.lapCount * acData.AcsStatic.trackSPlineLength + acVehicleInfo.spLineLength * acData.AcsStatic.trackSPlineLength; driverInfo.FinishStatus = FromAcStatus(acVehicleInfo.finishedStatus); driverInfo.WorldPosition = new Point3D(Distance.FromMeters(acVehicleInfo.worldPosition.x), Distance.FromMeters(acVehicleInfo.worldPosition.y), Distance.FromMeters(acVehicleInfo.worldPosition.z)); ComputeDistanceToPlayer(_lastPlayer, driverInfo, acData); return(driverInfo); }
private static void FillPlayersGear(AssettoCorsaShared acData, SimulatorDataSet simData) { int gear = acData.AcsPhysics.gear - 1; switch (gear) { case 0: simData.PlayerInfo.CarInfo.CurrentGear = "N"; break; case -1: simData.PlayerInfo.CarInfo.CurrentGear = "R"; break; case -2: simData.PlayerInfo.CarInfo.CurrentGear = string.Empty; break; default: simData.PlayerInfo.CarInfo.CurrentGear = gear.ToString(); break; } }
private static void AddTyresAndFuelInfo(SimulatorDataSet simData, AssettoCorsaShared acData) { simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyrePressure = Pressure.FromPsi(acData.AcsPhysics.wheelsPressure[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyrePressure = Pressure.FromPsi(acData.AcsPhysics.wheelsPressure[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyrePressure = Pressure.FromPsi(acData.AcsPhysics.wheelsPressure[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyrePressure = Pressure.FromPsi(acData.AcsPhysics.wheelsPressure[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyreWear = GetACTyreWear(acData.AcsPhysics.tyreWear[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyreWear = GetACTyreWear(acData.AcsPhysics.tyreWear[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyreWear = GetACTyreWear(acData.AcsPhysics.tyreWear[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyreWear = GetACTyreWear(acData.AcsPhysics.tyreWear[(int)AcWheels.FR]); // Front Left Tyre Temps simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.LeftTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempI[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.RightTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempM[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.CenterTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempO[(int)AcWheels.FL]); // Front Right Tyre Temps simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.LeftTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempI[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.RightTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempM[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.CenterTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempO[(int)AcWheels.FR]); // Rear Left Tyre Temps simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.LeftTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempI[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.RightTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempM[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.CenterTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempO[(int)AcWheels.RL]); // Rear Right Tyre Temps simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.LeftTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempI[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.RightTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempM[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.CenterTyreTemp = Temperature.FromCelsius(acData.AcsPhysics.tyreTempO[(int)AcWheels.RR]); // Fuel System simData.PlayerInfo.CarInfo.FuelSystemInfo.FuelCapacity = Volume.FromLiters(acData.AcsStatic.maxFuel); simData.PlayerInfo.CarInfo.FuelSystemInfo.FuelRemaining = Volume.FromLiters(acData.AcsPhysics.fuel); }
public SimulatorDataSet CreateSimulatorDataSet(AssettoCorsaShared acData) { SimulatorDataSet simData = new SimulatorDataSet("Assetto Corsa"); simData.SimulatorSourceInfo.HasLapTimeInformation = true; simData.SimulatorSourceInfo.OutLapIsValid = true; simData.SimulatorSourceInfo.SimNotReportingEndOfOutLapCorrectly = false; simData.SimulatorSourceInfo.SectorTimingSupport = DataInputSupport.FULL; FillSessionInfo(acData, simData); AddDriversData(simData, acData); FillPlayersGear(acData, simData); // PEDAL INFO AddPedalInfo(acData, simData); // WaterSystemInfo AddWaterSystemInfo(simData); // OilSystemInfo AddOilSystemInfo(simData); // Brakes Info AddBrakesInfo(acData, simData); // Tyre Pressure Info AddTyresAndFuelInfo(simData, acData); // Acceleration AddAcceleration(simData, acData); _startObserver.Observe(simData); return(simData); }
private DriverInfo CreateDriverInfo(AssettoCorsaShared acData, AcsVehicleInfo acVehicleInfo, SimulatorDataSet dataSet) { DriverInfo driverInfo = new DriverInfo { DriverName = acVehicleInfo.driverName.FromArray(), CompletedLaps = acVehicleInfo.lapCount, CarName = FormatACName(name: acVehicleInfo.carModel.FromArray()), InPits = (acVehicleInfo.isCarInPit == 1 || acVehicleInfo.isCarInPitlane == 1) && (dataSet.SessionInfo.SessionType != SessionType.Race || acVehicleInfo.lapCount > 0), IsPlayer = acVehicleInfo.carId == 0, Position = dataSet.SessionInfo.SessionType == SessionType.Race ? acVehicleInfo.carRealTimeLeaderboardPosition + 1 : acVehicleInfo.carLeaderboardPosition, Speed = Velocity.FromMs(acVehicleInfo.speedMS), LapDistance = acData.AcsStatic.trackSPlineLength * acVehicleInfo.spLineLength, TotalDistance = acVehicleInfo.lapCount * acData.AcsStatic.trackSPlineLength + acVehicleInfo.spLineLength * acData.AcsStatic.trackSPlineLength, FinishStatus = FromAcStatus(acVehicleInfo.finishedStatus), WorldPosition = new Point3D(Distance.FromMeters(acVehicleInfo.worldPosition.x), Distance.FromMeters(acVehicleInfo.worldPosition.y), Distance.FromMeters(acVehicleInfo.worldPosition.z)), }; driverInfo.CarClassId = driverInfo.CarName; driverInfo.CarClassName = driverInfo.CarName; ComputeDistanceToPlayer(_lastPlayer, driverInfo, acData); return(driverInfo); }
private static void AddOilSystemInfo(SimulatorDataSet simData, AssettoCorsaShared acData) { simData.PlayerInfo.CarInfo.TurboPressure = Pressure.FromAtm(acData.AcsPhysics.turboBoost); simData.PlayerInfo.CarInfo.OilSystemInfo.OptimalOilTemperature.ActualQuantity = Temperature.FromCelsius(100); }
internal static void ComputeDistanceToPlayer(DriverInfo player, DriverInfo driverInfo, AssettoCorsaShared assettoCorsaShared) { if (player == null) { return; } if (driverInfo.FinishStatus == DriverFinishStatus.Dq || driverInfo.FinishStatus == DriverFinishStatus.Dnf || driverInfo.FinishStatus == DriverFinishStatus.Dnq || driverInfo.FinishStatus == DriverFinishStatus.Dns) { driverInfo.DistanceToPlayer = double.MaxValue; return; } double trackLength = assettoCorsaShared.AcsStatic.trackSPlineLength; double playerLapDistance = player.LapDistance; double distanceToPlayer = playerLapDistance - driverInfo.LapDistance; if (distanceToPlayer < -(trackLength / 2)) { distanceToPlayer += trackLength; } if (distanceToPlayer > (trackLength / 2)) { distanceToPlayer -= trackLength; } driverInfo.DistanceToPlayer = distanceToPlayer; }
private void FillPlayerCarInfo(AssettoCorsaShared acData, SimulatorDataSet simData) { FillPlayersGear(acData, simData); simData.PlayerInfo.CarInfo.EngineRpm = acData.AcsPhysics.rpms; }
private static void AddAcceleration(SimulatorDataSet simData, AssettoCorsaShared acData) { simData.PlayerInfo.CarInfo.Acceleration.XinMs = acData.AcsPhysics.accG[0] * 9.8; simData.PlayerInfo.CarInfo.Acceleration.YinMs = acData.AcsPhysics.accG[1] * 9.8; simData.PlayerInfo.CarInfo.Acceleration.ZinMs = acData.AcsPhysics.accG[2] * 9.8; }
private void AddTyresAndFuelInfo(SimulatorDataSet simData, AssettoCorsaShared acData) { simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyrePressure.ActualQuantity = Pressure.FromPsi(acData.AcsPhysics.wheelsPressure[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyrePressure.ActualQuantity = Pressure.FromPsi(acData.AcsPhysics.wheelsPressure[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyrePressure.ActualQuantity = Pressure.FromPsi(acData.AcsPhysics.wheelsPressure[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyrePressure.ActualQuantity = Pressure.FromPsi(acData.AcsPhysics.wheelsPressure[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyreWear.ActualWear = GetACTyreWear(acData.AcsPhysics.tyreWear[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyreWear.ActualWear = GetACTyreWear(acData.AcsPhysics.tyreWear[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyreWear.ActualWear = GetACTyreWear(acData.AcsPhysics.tyreWear[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyreWear.ActualWear = GetACTyreWear(acData.AcsPhysics.tyreWear[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.Camber = Angle.GetFromRadians(acData.AcsPhysics.camberRAD[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.Camber = Angle.GetFromRadians(acData.AcsPhysics.camberRAD[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.Camber = Angle.GetFromRadians(acData.AcsPhysics.camberRAD[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.Camber = Angle.GetFromRadians(acData.AcsPhysics.camberRAD[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.Rps = acData.AcsPhysics.wheelAngularSpeed[(int)AcWheels.FL]; simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.Rps = acData.AcsPhysics.wheelAngularSpeed[(int)AcWheels.FR]; simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.Rps = acData.AcsPhysics.wheelAngularSpeed[(int)AcWheels.RL]; simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.Rps = acData.AcsPhysics.wheelAngularSpeed[(int)AcWheels.RR]; simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.DirtLevel = acData.AcsPhysics.tyreDirtyLevel[(int)AcWheels.FL]; simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.DirtLevel = acData.AcsPhysics.tyreDirtyLevel[(int)AcWheels.FR]; simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.DirtLevel = acData.AcsPhysics.tyreDirtyLevel[(int)AcWheels.RL]; simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.DirtLevel = acData.AcsPhysics.tyreDirtyLevel[(int)AcWheels.RR]; simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyreLoad = Force.GetFromNewtons(acData.AcsPhysics.wheelLoad[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyreLoad = Force.GetFromNewtons(acData.AcsPhysics.wheelLoad[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyreLoad = Force.GetFromNewtons(acData.AcsPhysics.wheelLoad[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyreLoad = Force.GetFromNewtons(acData.AcsPhysics.wheelLoad[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.FrontHeight = Distance.FromMeters(acData.AcsPhysics.rideHeight[0]); simData.PlayerInfo.CarInfo.RearHeight = Distance.FromMeters(acData.AcsPhysics.rideHeight[1]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.RideHeight = simData.PlayerInfo.CarInfo.FrontHeight; simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.RideHeight = simData.PlayerInfo.CarInfo.FrontHeight; simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.RideHeight = simData.PlayerInfo.CarInfo.RearHeight; simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.RideHeight = simData.PlayerInfo.CarInfo.RearHeight; simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.SuspensionTravel = Distance.FromMeters(acData.AcsPhysics.suspensionTravel[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.SuspensionTravel = Distance.FromMeters(acData.AcsPhysics.suspensionTravel[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.SuspensionTravel = Distance.FromMeters(acData.AcsPhysics.suspensionTravel[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.SuspensionTravel = Distance.FromMeters(acData.AcsPhysics.suspensionTravel[(int)AcWheels.RR]); // Front Left Tyre Temps simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.LeftTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempI[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.RightTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempM[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.CenterTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempO[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyreCoreTemperature.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreCoreTemperature[(int)AcWheels.FL]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontLeft.TyreType = acData.AcsGraphic.tyreCompound; // Front Right Tyre Temps simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.LeftTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempI[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.RightTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempM[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.CenterTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempO[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyreCoreTemperature.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreCoreTemperature[(int)AcWheels.FR]); simData.PlayerInfo.CarInfo.WheelsInfo.FrontRight.TyreType = acData.AcsGraphic.tyreCompound; // Rear Left Tyre Temps simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.LeftTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempI[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.RightTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempM[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.CenterTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempO[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyreCoreTemperature.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreCoreTemperature[(int)AcWheels.RL]); simData.PlayerInfo.CarInfo.WheelsInfo.RearLeft.TyreType = acData.AcsGraphic.tyreCompound; // Rear Right Tyre Temps simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.LeftTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempI[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.RightTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempM[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.CenterTyreTemp.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreTempO[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyreCoreTemperature.ActualQuantity = Temperature.FromCelsius(acData.AcsPhysics.tyreCoreTemperature[(int)AcWheels.RR]); simData.PlayerInfo.CarInfo.WheelsInfo.RearRight.TyreType = acData.AcsGraphic.tyreCompound; // Fuel System simData.PlayerInfo.CarInfo.FuelSystemInfo.FuelCapacity = Volume.FromLiters(acData.AcsStatic.maxFuel); simData.PlayerInfo.CarInfo.FuelSystemInfo.FuelRemaining = Volume.FromLiters(acData.AcsPhysics.fuel); _idealWheelQuantitiesFromXml.FillWheelIdealQuantities(simData); }