Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- {
- size: number (in bytes)
- type: 'unknown' (binary) || 'int8' || 'uint8' || 'int16' || 'int32' || 'uint32' || 'float'
- // the type field may contain an '@' and after it say what conversion to apply:
- '@boolean' (0=false, 1=true, will be converted to boolean) || '@normalize255to1' (divides value / 255) || '@UTF' (will be converted into utf16 char)
- name: string (field name) || 'unknown' (field name is not known)
- }
- */
- // FORMAT SOURCE: https://forums.forzamotorsport.net/turn10_postst128499_Forza-Motorsport-7--Data-Out--feature-details.aspx
- const DATA_OUT_FORMAT = [
- {
- size: 4,
- type: 'int32',
- name: 'IsRaceOn'
- },
- {
- size: 4,
- type: 'uint32',
- name: 'TimestampMS'
- },
- {
- size: 4,
- type: 'float',
- name: 'EngineMaxRpm'
- },
- {
- size: 4,
- type: 'float',
- name: 'EngineIdleRpm'
- },
- {
- size: 4,
- type: 'float',
- name: 'CurrentEngineRpm'
- },
- {
- size: 4,
- type: 'float',
- name: 'AccelerationX' //In the car's local space; X = right, Y = up, Z = forward
- },
- {
- size: 4,
- type: 'float',
- name: 'AccelerationY'
- },
- {
- size: 4,
- type: 'float',
- name: 'AccelerationZ'
- },
- {
- size: 4,
- type: 'float',
- name: 'VelocityX' //In the car's local space; X = right, Y = up, Z = forward
- },
- {
- size: 4,
- type: 'float',
- name: 'VelocityY'
- },
- {
- size: 4,
- type: 'float',
- name: 'VelocityZ'
- },
- {
- size: 4,
- type: 'float',
- name: 'AngularVelocityX'
- },
- {
- size: 4,
- type: 'float',
- name: 'AngularVelocityY'
- },
- {
- size: 4,
- type: 'float',
- name: 'AngularVelocityZ'
- },
- {
- size: 4,
- type: 'float',
- name: 'Yaw'
- },
- {
- size: 4,
- type: 'float',
- name: 'Pitch'
- },
- {
- size: 4,
- type: 'float',
- name: 'Roll'
- },
- {
- size: 4,
- type: 'float',
- name: 'NormalizedSuspensionTravelFrontLeft' // Suspension travel normalized: 0.0f = max stretch; 1.0 = max compression
- },
- {
- size: 4,
- type: 'float',
- name: 'NormalizedSuspensionTravelFrontRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'NormalizedSuspensionTravelRearLeft'
- },
- {
- size: 4,
- type: 'float',
- name: 'NormalizedSuspensionTravelRearRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireSlipRatioFrontLeft' // Tire normalized slip ratio, = 0 means 100% grip and |ratio| > 1.0 means loss of grip. THis is longitudinal slip or just spin
- },
- {
- size: 4,
- type: 'float',
- name: 'TireSlipRatioFrontRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireSlipRatioRearLeft'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireSlipRatioRearRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'WheelRotationSpeedFrontLeft' // Wheel rotation speed radians/sec.
- },
- {
- size: 4,
- type: 'float',
- name: 'WheelRotationSpeedFrontRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'WheelRotationSpeedRearLeft'
- },
- {
- size: 4,
- type: 'float',
- name: 'WheelRotationSpeedRearRight'
- },
- {
- size: 4,
- type: 'int32@boolean',
- name: 'WheelOnRumbleStripFrontLeft' // = 1 when wheel is on rumble strip, = 0 when off.
- },
- {
- size: 4,
- type: 'int32@boolean',
- name: 'WheelOnRumbleStripFrontRight'
- },
- {
- size: 4,
- type: 'int32@boolean',
- name: 'WheelOnRumbleStripRearLeft'
- },
- {
- size: 4,
- type: 'int32@boolean',
- name: 'WheelOnRumbleStripRearRight'
- },
- {
- size: 4,
- type: 'int32@boolean',
- name: 'WheelInPuddleDepthFrontLeft' // = from 0 to 1, where 1 is the deepest puddle
- },
- {
- size: 4,
- type: 'int32@boolean',
- name: 'WheelInPuddleDepthFrontRight'
- },
- {
- size: 4,
- type: 'int32@boolean',
- name: 'WheelInPuddleDepthRearLeft'
- },
- {
- size: 4,
- type: 'int32@boolean',
- name: 'WheelInPuddleDepthRearRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'SurfaceRumbleFrontLeft' // Non-dimensional surface rumble values passed to controller force feedback
- },
- {
- size: 4,
- type: 'float',
- name: 'SurfaceRumbleFrontRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'SurfaceRumbleRearLeft'
- },
- {
- size: 4,
- type: 'float',
- name: 'SurfaceRumbleRearRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireSlipAngleFrontLeft' // Tire normalized slip angle, = 0 means 100% grip and |angle| > 1.0 means loss of grip. This is lateral tire slip angle (not the same as wheel angle)
- },
- {
- size: 4,
- type: 'float',
- name: 'TireSlipAngleFrontRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireSlipAngleRearLeft'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireSlipAngleRearRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireCombinedSlipFrontLeft'// Tire normalized combined slip, = 0 means 100% grip and |slip| > 1.0 means loss of grip. This is a combination of TireSlipRatioFrontLeft and TireSlipAngleFrontLeft.
- },
- {
- size: 4,
- type: 'float',
- name: 'TireCombinedSlipFrontRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireCombinedSlipRearLeft'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireCombinedSlipRearRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'SuspensionTravelMetersFrontLeft' // Actual suspension travel in meters
- },
- {
- size: 4,
- type: 'float',
- name: 'SuspensionTravelMetersFrontRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'SuspensionTravelMetersRearLeft'
- },
- {
- size: 4,
- type: 'float',
- name: 'SuspensionTravelMetersRearRight'
- },
- {
- size: 4,
- type: 'int32',
- name: 'CarOrdinal' //Unique ID of the car make/model
- },
- {
- size: 4,
- type: 'int32',
- name: 'CarClass'//Between 0 (D -- worst cars) and 7 (X class -- best cars) inclusive
- },
- {
- size: 4,
- type: 'int32',
- name: 'CarPerformanceIndex' //Between 100 (slowest car) and 999 (fastest car) inclusive
- },
- {
- size: 4,
- type: 'int32',
- name: 'DrivetrainType' //Corresponds to EDrivetrainType; 0 = FWD, 1 = RWD, 2 = AWD
- },
- {
- size: 4,
- type: 'int32',
- name: 'NumCylinders' //Number of cylinders in the engine
- },
- // V2 additional values
- {
- size: 4,
- type: 'int32',
- name: 'CarCategory'
- },
- {
- size: 4,
- type: 'int32',
- name: 'unknown' // > 0 when crashing into objects
- },
- {
- size: 4,
- type: 'int32',
- name: 'unknown' // > 0 when crashing into objects
- },
- {
- size: 4,
- type: 'float',
- name: 'PositionX' // in meters
- },
- {
- size: 4,
- type: 'float',
- name: 'PositionY'
- },
- {
- size: 4,
- type: 'float',
- name: 'PositionZ'
- },
- {
- size: 4,
- type: 'float',
- name: 'Speed' // in meters per second
- },
- {
- size: 4,
- type: 'float',
- name: 'Power' // in watts
- },
- {
- size: 4,
- type: 'float',
- name: 'Torque' // newton meter
- },
- {
- size: 4,
- type: 'float',
- name: 'TireTemperatureFrontLeft' // °F
- },
- {
- size: 4,
- type: 'float',
- name: 'TireTemperatureFrontRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireTemperatureRearLeft'
- },
- {
- size: 4,
- type: 'float',
- name: 'TireTemperatureRearRight'
- },
- {
- size: 4,
- type: 'float',
- name: 'Boost'
- },
- {
- size: 4,
- type: 'float',
- name: 'Fuel'
- },
- {
- size: 4,
- type: 'float',
- name: 'DistanceTraveled'
- },
- {
- size: 4,
- type: 'float',
- name: 'BestLap'
- },
- {
- size: 4,
- type: 'float',
- name: 'LastLap'
- },
- {
- size: 4,
- type: 'float',
- name: 'CurrentLap'
- },
- {
- size: 4,
- type: 'float',
- name: 'CurrentRaceTime'
- },
- {
- size: 2,
- type: 'uint16',
- name: 'LapNumber'
- },
- {
- size: 1,
- type: 'uint8',
- name: 'RacePosition'
- },
- {
- size: 1,
- type: 'uint8@normalize255to1',
- name: 'Throttle'
- },
- {
- size: 1,
- type: 'uint8@normalize255to1',
- name: 'Brake'
- },
- {
- size: 1,
- type: 'uint8@normalize255to1',
- name: 'Clutch'
- },
- {
- size: 1,
- type: 'uint8@normalize255to1',
- name: 'HandBrake'
- },
- {
- size: 1,
- type: 'uint8',
- name: 'Gear'
- },
- {
- size: 1,
- type: 'uint8@normalize255to1',
- name: 'Steer'
- },
- {
- size: 1,
- type: 'int8',
- name: 'NormalizedDrivingLine'
- },
- {
- size: 1,
- type: 'int8',
- name: 'NormalizedAIBrakeDifference'
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment