public PC2BasePacket CreateVersion8(PC2RawPacket rawPacket) { var meta = PC2PacketMeta.Create(rawPacket); switch (meta.packetType) { case PC2PacketType.Telemetry: return(PCars2TelemetryData.Create(rawPacket, meta)); case PC2PacketType.Timings: return(PCars2Timings.Create(rawPacket, meta)); case PC2PacketType.TimeStats: return(PCars2TimeStatsData.Create(rawPacket, meta)); case PC2PacketType.GameState: return(PC2GameStatePacket.Create(rawPacket, meta)); case PC2PacketType.RaceDefinition: return(PC2RaceDefinition.Create(rawPacket, meta)); case PC2PacketType.Participants: case PC2PacketType.WeatherState: case PC2PacketType.VehicleNames: case PC2PacketType.ParticipantVehicleNames: default: throw new NotImplementedException("Project Cars 2 packet type not handled: " + meta.packetType); } }
public static PCars2TelemetryData Create(PC2RawPacket rawPacket, PC2PacketMeta meta) { var telemetryData = new PCars2TelemetryData(meta); telemetryData.viewedParticipantIndex = rawPacket.Data.ReadSByte(); telemetryData.unfilteredThrottle = rawPacket.Data.ReadByte(); telemetryData.unfilteredBrake = rawPacket.Data.ReadByte(); telemetryData.unfilteredSteering = rawPacket.Data.ReadSByte(); telemetryData.unfilteredClutch = rawPacket.Data.ReadByte(); telemetryData.carFlags = rawPacket.Data.ReadByte(); telemetryData.oilTempCelsius = rawPacket.Data.ReadInt16(); telemetryData.oilPressureKPa = rawPacket.Data.ReadUInt16(); telemetryData.waterTempCelsius = rawPacket.Data.ReadInt16(); telemetryData.waterPressureKPa = rawPacket.Data.ReadUInt16(); telemetryData.fuelPressureKPa = rawPacket.Data.ReadUInt16(); telemetryData.fuelCapacity = rawPacket.Data.ReadByte(); telemetryData.brake = rawPacket.Data.ReadByte(); telemetryData.throttle = rawPacket.Data.ReadByte(); telemetryData.clutch = rawPacket.Data.ReadByte(); telemetryData.fuelLevel = rawPacket.Data.ReadSingle(); telemetryData.speed = rawPacket.Data.ReadSingle(); telemetryData.rpm = rawPacket.Data.ReadUInt16(); telemetryData.maxRpm = rawPacket.Data.ReadUInt16(); telemetryData.steering = rawPacket.Data.ReadSByte(); telemetryData.gearNumGears = rawPacket.Data.ReadByte(); telemetryData.boostAmount = rawPacket.Data.ReadByte(); telemetryData.crashState = rawPacket.Data.ReadByte(); telemetryData.odometerKM = rawPacket.Data.ReadSingle(); telemetryData.orientationX = rawPacket.Data.ReadSingle(); telemetryData.orientationY = rawPacket.Data.ReadSingle(); telemetryData.orientationZ = rawPacket.Data.ReadSingle(); telemetryData.localVelocityX = rawPacket.Data.ReadSingle(); telemetryData.localVelocityY = rawPacket.Data.ReadSingle(); telemetryData.localVelocityZ = rawPacket.Data.ReadSingle(); telemetryData.worldVelocityX = rawPacket.Data.ReadSingle(); telemetryData.worldVelocityY = rawPacket.Data.ReadSingle(); telemetryData.worldVelocityZ = rawPacket.Data.ReadSingle(); telemetryData.angularVelocityX = rawPacket.Data.ReadSingle(); telemetryData.angularVelocityY = rawPacket.Data.ReadSingle(); telemetryData.angularVelocityZ = rawPacket.Data.ReadSingle(); telemetryData.localAccelerationX = rawPacket.Data.ReadSingle(); telemetryData.localAccelerationY = rawPacket.Data.ReadSingle(); telemetryData.localAccelerationZ = rawPacket.Data.ReadSingle(); telemetryData.worldAccelerationX = rawPacket.Data.ReadSingle(); telemetryData.worldAccelerationY = rawPacket.Data.ReadSingle(); telemetryData.worldAccelerationZ = rawPacket.Data.ReadSingle(); telemetryData.extentsCentreX = rawPacket.Data.ReadSingle(); telemetryData.extentsCentreY = rawPacket.Data.ReadSingle(); telemetryData.extentsCentreZ = rawPacket.Data.ReadSingle(); telemetryData.tyreFlagsFL = rawPacket.Data.ReadByte(); telemetryData.tyreFlagsFR = rawPacket.Data.ReadByte(); telemetryData.tyreFlagsRL = rawPacket.Data.ReadByte(); telemetryData.tyreFlagsRR = rawPacket.Data.ReadByte(); telemetryData.terrainFL = rawPacket.Data.ReadByte(); telemetryData.terrainFR = rawPacket.Data.ReadByte(); telemetryData.terrainRL = rawPacket.Data.ReadByte(); telemetryData.terrainRR = rawPacket.Data.ReadByte(); telemetryData.tyreYFL = rawPacket.Data.ReadSingle(); telemetryData.tyreYFR = rawPacket.Data.ReadSingle(); telemetryData.tyreYRL = rawPacket.Data.ReadSingle(); telemetryData.tyreYRR = rawPacket.Data.ReadSingle(); telemetryData.tyreRPSFL = rawPacket.Data.ReadSingle(); telemetryData.tyreRPSFR = rawPacket.Data.ReadSingle(); telemetryData.tyreRPSRL = rawPacket.Data.ReadSingle(); telemetryData.tyreRPSRR = rawPacket.Data.ReadSingle(); telemetryData.tyreTempFL = rawPacket.Data.ReadByte(); telemetryData.tyreTempFR = rawPacket.Data.ReadByte(); telemetryData.tyreTempRL = rawPacket.Data.ReadByte(); telemetryData.tyreTempRR = rawPacket.Data.ReadByte(); telemetryData.tyreHeightAboveGroundFL = rawPacket.Data.ReadSingle(); telemetryData.tyreHeightAboveGroundFR = rawPacket.Data.ReadSingle(); telemetryData.tyreHeightAboveGroundRL = rawPacket.Data.ReadSingle(); telemetryData.tyreHeightAboveGroundRR = rawPacket.Data.ReadSingle(); telemetryData.tyreWearFL = rawPacket.Data.ReadByte(); telemetryData.tyreWearFR = rawPacket.Data.ReadByte(); telemetryData.tyreWearRL = rawPacket.Data.ReadByte(); telemetryData.tyreWearRR = rawPacket.Data.ReadByte(); telemetryData.brakeDamageFL = rawPacket.Data.ReadByte(); telemetryData.brakeDamageFR = rawPacket.Data.ReadByte(); telemetryData.brakeDamageRL = rawPacket.Data.ReadByte(); telemetryData.brakeDamageRR = rawPacket.Data.ReadByte(); telemetryData.suspensionDamageFL = rawPacket.Data.ReadByte(); telemetryData.suspensionDamageFR = rawPacket.Data.ReadByte(); telemetryData.suspensionDamageRL = rawPacket.Data.ReadByte(); telemetryData.suspensionDamageRR = rawPacket.Data.ReadByte(); telemetryData.brakeTempCelsiusFL = rawPacket.Data.ReadInt16(); telemetryData.brakeTempCelsiusFR = rawPacket.Data.ReadInt16(); telemetryData.brakeTempCelsiusRL = rawPacket.Data.ReadInt16(); telemetryData.brakeTempCelsiusRR = rawPacket.Data.ReadInt16(); telemetryData.tyreTreadTempFL = rawPacket.Data.ReadUInt16(); telemetryData.tyreTreadTempFR = rawPacket.Data.ReadUInt16(); telemetryData.tyreTreadTempRL = rawPacket.Data.ReadUInt16(); telemetryData.tyreTreadTempRR = rawPacket.Data.ReadUInt16(); telemetryData.tyreLayerTempFL = rawPacket.Data.ReadUInt16(); telemetryData.tyreLayerTempFR = rawPacket.Data.ReadUInt16(); telemetryData.tyreLayerTempRL = rawPacket.Data.ReadUInt16(); telemetryData.tyreLayerTempRR = rawPacket.Data.ReadUInt16(); telemetryData.tyreCarcassTempFL = rawPacket.Data.ReadUInt16(); telemetryData.tyreCarcassTempFR = rawPacket.Data.ReadUInt16(); telemetryData.tyreCarcassTempRL = rawPacket.Data.ReadUInt16(); telemetryData.tyreCarcassTempRR = rawPacket.Data.ReadUInt16(); telemetryData.tyreRimTempFL = rawPacket.Data.ReadUInt16(); telemetryData.tyreRimTempFR = rawPacket.Data.ReadUInt16(); telemetryData.tyreRimTempRL = rawPacket.Data.ReadUInt16(); telemetryData.tyreRimTempRR = rawPacket.Data.ReadUInt16(); telemetryData.tyreInternalAirTempFL = rawPacket.Data.ReadUInt16(); telemetryData.tyreInternalAirTempFR = rawPacket.Data.ReadUInt16(); telemetryData.tyreInternalAirTempRL = rawPacket.Data.ReadUInt16(); telemetryData.tyreInternalAirTempRR = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempLeftFL = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempLeftFR = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempLeftRL = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempLeftRR = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempCenterFL = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempCenterFR = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempCenterRL = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempCenterRR = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempRightFL = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempRightFR = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempRightRL = rawPacket.Data.ReadUInt16(); telemetryData.tyreTempRightRR = rawPacket.Data.ReadUInt16(); telemetryData.wheelLocalPositionYFL = rawPacket.Data.ReadSingle(); telemetryData.wheelLocalPositionYFR = rawPacket.Data.ReadSingle(); telemetryData.wheelLocalPositionYRL = rawPacket.Data.ReadSingle(); telemetryData.wheelLocalPositionYRR = rawPacket.Data.ReadSingle(); telemetryData.rideHeightFL = rawPacket.Data.ReadSingle(); telemetryData.rideHeightFR = rawPacket.Data.ReadSingle(); telemetryData.rideHeightRL = rawPacket.Data.ReadSingle(); telemetryData.rideHeightRR = rawPacket.Data.ReadSingle(); telemetryData.suspensionTravelFL = rawPacket.Data.ReadSingle(); telemetryData.suspensionTravelFR = rawPacket.Data.ReadSingle(); telemetryData.suspensionTravelRL = rawPacket.Data.ReadSingle(); telemetryData.suspensionTravelRR = rawPacket.Data.ReadSingle(); telemetryData.suspensionVelocityFL = rawPacket.Data.ReadSingle(); telemetryData.suspensionVelocityFR = rawPacket.Data.ReadSingle(); telemetryData.suspensionVelocityRL = rawPacket.Data.ReadSingle(); telemetryData.suspensionVelocityRR = rawPacket.Data.ReadSingle(); telemetryData.suspensionRideHeightFL = rawPacket.Data.ReadUInt16(); telemetryData.suspensionRideHeightFR = rawPacket.Data.ReadUInt16(); telemetryData.suspensionRideHeightRL = rawPacket.Data.ReadUInt16(); telemetryData.suspensionRideHeightRR = rawPacket.Data.ReadUInt16(); telemetryData.airPressureFL = rawPacket.Data.ReadUInt16(); telemetryData.airPressureFR = rawPacket.Data.ReadUInt16(); telemetryData.airPressureRL = rawPacket.Data.ReadUInt16(); telemetryData.airPressureRR = rawPacket.Data.ReadUInt16(); telemetryData.engineSpeed = rawPacket.Data.ReadSingle(); telemetryData.engineTorque = rawPacket.Data.ReadSingle(); telemetryData.wingsFront = rawPacket.Data.ReadByte(); telemetryData.wingsRear = rawPacket.Data.ReadByte(); return(telemetryData); }