#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Penalty {
None,
DriveThroughCutting,
StopAndGo10Cutting,
StopAndGo20Cutting,
StopAndGo30Cutting,
DisqualifiedCutting,
RemoveBestLaptimeCutting,
DriveThroughPitSpeeding,
StopAndGo10PitSpeeding,
StopAndGo20PitSpeeding,
StopAndGo30PitSpeeding,
DisqualifiedPitSpeeding,
RemoveBestLaptimePitSpeeding,
DisqualifiedIgnoredMandatoryPit,
PostRaceTime,
DisqualifiedTrolling,
DisqualifiedPitEntry,
DisqualifiedPitExit,
DisqualifiedWrongWay,
DriveThroughIgnoredDriverStint,
DisqualifiedIgnoredDriverStint,
DisqualifiedExceededDriverStintLimit,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Status {
Off,
Replay,
Live,
Pause,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SessionType {
Unknown,
Practice,
Qualify,
Race,
Hotlap,
TimeAttack,
Drift,
Drag,
HotStint,
HotlapSuperPole,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum FlagType {
None,
Blue,
Yellow,
Black,
White,
Checkered,
Penalty,
Green,
Orange,
}
#[derive(Clone, Debug, PartialEq)]
pub struct Physics {
pub packet_id: i32,
pub gas: f32,
pub brake: f32,
pub fuel: f32,
pub gear: i32,
pub rpm: i32,
pub steer_angle: f32,
pub speed_kmh: f32,
pub velocity: [f32; 3],
pub acc_g: [f32; 3],
pub wheel_slip: [f32; 4],
pub wheel_load: [f32; 4],
pub wheels_pressure: [f32; 4],
pub wheel_angular_speed: [f32; 4],
pub tyre_wear: [f32; 4],
pub tyre_dirty_level: [f32; 4],
pub tyre_core_temperature: [f32; 4],
pub camber_rad: [f32; 4],
pub suspension_travel: [f32; 4],
pub drs: f32,
pub tc: f32,
pub heading: f32,
pub pitch: f32,
pub roll: f32,
pub cg_height: f32,
pub car_damage: [f32; 5],
pub number_of_tyres_out: i32,
pub pit_limiter_on: i32,
pub abs: f32,
pub kers_charge: f32,
pub kers_input: f32,
pub auto_shifter_on: i32,
pub ride_height: [f32; 2],
pub turbo_boost: f32,
pub ballast: f32,
pub air_density: f32,
pub air_temp: f32,
pub road_temp: f32,
pub local_angular_vel: [f32; 3],
pub final_ff: f32,
pub performance_meter: f32,
pub engine_brake: i32,
pub ers_recovery_level: i32,
pub ers_power_level: i32,
pub ers_heat_charging: i32,
pub ers_is_charging: i32,
pub kers_current_kj: f32,
pub drs_available: i32,
pub drs_enabled: i32,
pub brake_temp: [f32; 4],
pub clutch: f32,
pub tyre_temp_i: [f32; 4],
pub tyre_temp_m: [f32; 4],
pub tyre_temp_o: [f32; 4],
pub is_ai_controlled: i32,
pub tyre_contact_point: [[f32; 3]; 4],
pub tyre_contact_normal: [[f32; 3]; 4],
pub tyre_contact_heading: [[f32; 3]; 4],
pub brake_bias: f32,
pub local_velocity: [f32; 3],
pub p2p_activations: i32,
pub p2p_status: i32,
pub current_max_rpm: i32,
pub mz: [f32; 4],
pub fx: [f32; 4],
pub fy: [f32; 4],
pub slip_ratio: [f32; 4],
pub slip_angle: [f32; 4],
pub tc_in_action: i32,
pub abs_in_action: i32,
pub suspension_damage: [f32; 4],
pub tyre_temp: [f32; 4],
pub water_temp: f32,
pub brake_pressure: [f32; 4],
pub front_brake_compound: i32,
pub rear_brake_compound: i32,
pub pad_life: [f32; 4],
pub disc_life: [f32; 4],
pub ignition_on: i32,
pub starter_engine_on: i32,
pub is_engine_running: i32,
pub kerb_vibration: f32,
pub slip_vibrations: f32,
pub g_vibrations: f32,
pub abs_vibrations: f32,
}
#[derive(Clone, Debug, PartialEq)]
pub struct Graphics {
pub packet_id: i32,
pub status: Status,
pub session: SessionType,
pub current_time: String,
pub last_time: String,
pub best_time: String,
pub split: String,
pub completed_laps: i32,
pub position: i32,
pub i_current_time: i32,
pub i_last_time: i32,
pub i_best_time: i32,
pub session_time_left: f32,
pub distance_traveled: f32,
pub is_in_pit: i32,
pub current_sector_index: i32,
pub last_sector_time: i32,
pub number_of_laps: i32,
pub tyre_compound: String,
pub replay_time_multiplier: f32,
pub normalized_car_position: f32,
pub active_cars: i32,
pub car_coordinates: Vec<[f32; 3]>,
pub car_id: Vec<i32>,
pub player_car_id: i32,
pub penalty_time: f32,
pub flag: FlagType,
pub penalty: Penalty,
pub ideal_line_on: i32,
pub is_in_pit_lane: i32,
pub surface_grip: f32,
pub mandatory_pit_done: i32,
pub wind_speed: f32,
pub wind_direction: f32,
pub is_setup_menu_visible: i32,
pub main_display_index: i32,
pub secondary_display_index: i32,
pub tc: i32,
pub tc_cut: i32,
pub engine_map: i32,
pub abs: i32,
pub fuel_used_per_lap: f32,
pub rain_lights: i32,
pub flashing_lights: i32,
pub lights_stage: i32,
pub exhaust_temperature: f32,
pub wiper_lv: i32,
pub driver_stint_total_time_left: i32,
pub driver_stint_time_left: i32,
pub rain_tyres: i32,
pub session_index: i32,
pub used_fuel: f32,
pub delta_lap_time: String,
pub i_delta_lap_time: i32,
pub estimated_lap_time: String,
pub i_estimated_lap_time: i32,
pub is_delta_positive: i32,
pub i_split: i32,
pub is_valid_lap: i32,
pub fuel_estimated_laps: f32,
pub track_status: String,
pub missing_mandatory_pits: i32,
pub clock: f32,
pub direction_lights_left: i32,
pub direction_lights_right: i32,
}
#[derive(Clone, Debug, PartialEq)]
pub struct StaticData {
pub sm_version: String,
pub ac_version: String,
pub number_of_sessions: i32,
pub num_cars: i32,
pub car_model: String,
pub track: String,
pub player_name: String,
pub player_surname: String,
pub player_nick: String,
pub sector_count: i32,
pub max_torque: f32,
pub max_power: f32,
pub max_rpm: i32,
pub max_fuel: f32,
pub suspension_max_travel: [f32; 4],
pub tyre_radius: [f32; 4],
pub max_turbo_boost: f32,
pub penalties_enabled: i32,
pub aid_fuel_rate: f32,
pub aid_tire_rate: f32,
pub aid_mechanical_damage: f32,
pub aid_allow_tyre_blankets: i32,
pub aid_stability: f32,
pub aid_auto_clutch: i32,
pub aid_auto_blip: i32,
pub has_drs: i32,
pub has_ers: i32,
pub has_kers: i32,
pub kers_max_j: f32,
pub engine_brake_settings_count: i32,
pub ers_power_controller_count: i32,
pub track_spline_length: f32,
pub track_configuration: String,
pub ers_max_j: f32,
pub is_timed_race: i32,
pub has_extra_lap: i32,
pub car_skin: String,
pub reversed_grid_positions: i32,
pub pit_window_start: i32,
pub pit_window_end: i32,
pub is_online: i32,
}