use omp_codegen::native;
use std::ffi::c_void;
use crate::players::Player;
use super::Vehicle;
native!(Vehicle_Create, modelid: i32, x: f32, y: f32, z: f32, rotation: f32, color1: i32, color2: i32, respawnDelay: i32, addSiren: bool, id: mut i32, -> struct Vehicle);
native!(Vehicle_Destroy, vehicle: struct Vehicle, -> bool);
native!(Vehicle_FromID, vehicleid: i32, -> struct Vehicle);
native!(Vehicle_GetID, vehicle: struct Vehicle, -> i32);
native!(Vehicle_GetMaxPassengerSeats, modelid: i32, -> i32);
native!(Vehicle_IsStreamedIn, vehicle: struct Vehicle, player: struct Player, -> bool);
native!(Vehicle_GetPos, vehicle: struct Vehicle, x: mut f32, y: mut f32, z: mut f32, -> bool);
native!(Vehicle_SetPos, vehicle: struct Vehicle, x: f32, y: f32, z: f32, -> bool);
native!(Vehicle_GetZAngle, vehicle: struct Vehicle, -> f32);
native!(Vehicle_GetRotationQuat, vehicle: struct Vehicle, w: mut f32, x: mut f32, y: mut f32, z: mut f32, -> bool);
native!(Vehicle_GetDistanceFromPoint, vehicle: struct Vehicle, x: f32, y: f32, z: f32, -> f32);
native!(Vehicle_SetZAngle, vehicle: struct Vehicle, angle: f32, -> bool);
native!(Vehicle_SetParamsForPlayer, vehicle: struct Vehicle, player: struct Player, objective: i32, doors: i32, -> bool);
native!(Vehicle_UseManualEngineAndLights, -> bool);
native!(Vehicle_SetParamsEx, vehicle: struct Vehicle, engine: i32, lights: i32, alarm: i32, doors: i32, bonnet: i32, boot: i32, objective: i32, -> bool);
native!(Vehicle_GetParamsEx, vehicle: struct Vehicle, engine: mut i8, lights: mut i8, alarm: mut i8, doors: mut i8, bonnet: mut i8, boot: mut i8, objective: mut i8, -> bool);
native!(Vehicle_GetParamsSirenState, vehicle: struct Vehicle, -> i32);
native!(Vehicle_SetParamsCarDoors, vehicle: struct Vehicle, frontLeft: i32, frontRight: i32, rearLeft: i32, rearRight: i32, -> bool);
native!(Vehicle_GetParamsCarDoors, vehicle: struct Vehicle, frontLeft: mut i32, frontRight: mut i32, rearLeft: mut i32, rearRight: mut i32, -> bool);
native!(Vehicle_SetParamsCarWindows, vehicle: struct Vehicle, frontLeft: i32, frontRight: i32, rearLeft: i32, rearRight: i32, -> bool);
native!(Vehicle_GetParamsCarWindows, vehicle: struct Vehicle, frontLeft: mut i32, frontRight: mut i32, rearLeft: mut i32, rearRight: mut i32, -> bool);
native!(Vehicle_SetToRespawn, vehicle: struct Vehicle, -> bool);
native!(Vehicle_LinkToInterior, vehicle: struct Vehicle, interiorid: i32, -> bool);
native!(Vehicle_AddComponent, vehicle: struct Vehicle, componentid: i32, -> bool);
native!(Vehicle_RemoveComponent, vehicle: struct Vehicle, componentid: i32, -> bool);
native!(Vehicle_ChangeColor, vehicle: struct Vehicle, color1: i32, color2: i32, -> bool);
native!(Vehicle_ChangePaintjob, vehicle: struct Vehicle, paintjobid: i32, -> bool);
native!(Vehicle_SetHealth, vehicle: struct Vehicle, health: f32, -> bool);
native!(Vehicle_GetHealth, vehicle: struct Vehicle, -> f32);
native!(Vehicle_AttachTrailer, trailer: struct Vehicle, vehicle: struct Vehicle, -> bool);
native!(Vehicle_DetachTrailer, vehicle: struct Vehicle, -> bool);
native!(Vehicle_IsTrailerAttached, vehicle: struct Vehicle, -> bool);
native!(Vehicle_GetTrailer, vehicle: struct Vehicle, -> struct Vehicle);
native!(Vehicle_SetNumberPlate, vehicle: struct Vehicle, numberPlate: str, -> bool);
native!(Vehicle_GetModel, vehicle: struct Vehicle, -> i32);
native!(Vehicle_GetComponentInSlot, vehicle: struct Vehicle, slot: i32, -> i32);
native!(Vehicle_GetComponentType, componentid: i32, -> i32);
native!(Vehicle_CanHaveComponent, modelid: i32, componentid: i32, -> bool);
native!(Vehicle_GetRandomColorPair, modelid: i32, color1: mut i32, color2: mut i32, color3: mut i32, color4: mut i32, -> bool);
native!(Vehicle_ColorIndexToColor, colorIndex: i32, alpha: i32, -> i32);
native!(Vehicle_Repair, vehicle: struct Vehicle, -> bool);
native!(Vehicle_GetVelocity, vehicle: struct Vehicle, x: mut f32, y: mut f32, z: mut f32, -> bool);
native!(Vehicle_SetVelocity, vehicle: struct Vehicle, x: f32, y: f32, z: f32, -> bool);
native!(Vehicle_SetAngularVelocity, vehicle: struct Vehicle, x: f32, y: f32, z: f32, -> bool);
native!(Vehicle_GetDamageStatus, vehicle: struct Vehicle, panels: mut i32, doors: mut i32, lights: mut i32, tires: mut i32, -> bool);
native!(Vehicle_UpdateDamageStatus, vehicle: struct Vehicle, panels: i32, doors: i32, lights: i32, tires: i32, -> bool);
native!(Vehicle_GetModelInfo, vehiclemodel: i32, infotype: i32, x: mut f32, y: mut f32, z: mut f32, -> bool);
native!(Vehicle_SetVirtualWorld, vehicle: struct Vehicle, virtualWorld: i32, -> bool);
native!(Vehicle_GetVirtualWorld, vehicle: struct Vehicle, -> i32);
native!(Vehicle_GetLandingGearState, vehicle: struct Vehicle, -> i32);
native!(Vehicle_IsValid, vehicle: struct Vehicle, -> bool);
native!(Vehicle_AddStatic, modelid: i32, x: f32, y: f32, z: f32, angle: f32, color1: i32, color2: i32, id: mut i32, -> struct Vehicle);
native!(Vehicle_AddStaticEx, modelid: i32, x: f32, y: f32, z: f32, angle: f32, color1: i32, color2: i32, respawnDelay: i32, addSiren: bool, id: mut i32, -> struct Vehicle);
native!(Vehicle_EnableFriendlyFire, -> bool);
native!(Vehicle_GetSpawnInfo, vehicle: struct Vehicle, x: mut f32, y: mut f32, z: mut f32, rotation: mut f32, color1: mut i32, color2: mut i32, -> bool);
native!(Vehicle_SetSpawnInfo, vehicle: struct Vehicle, modelid: i32, x: f32, y: f32, z: f32, rotation: f32, color1: i32, color2: i32, respawn_time: i32, interior: i32, -> bool);
native!(Vehicle_GetModelCount, modelid: i32, -> i32);
native!(Vehicle_GetModelsUsed, -> i32);
native!(Vehicle_GetPaintjob, vehicle: struct Vehicle, -> i32);
native!(Vehicle_GetColor, vehicle: struct Vehicle, color1: mut i32, color2: mut i32, -> bool);
native!(Vehicle_GetInterior, vehicle: struct Vehicle, -> i32);
native!(Vehicle_GetNumberPlate, vehicle: struct Vehicle, numberPlate: mut str, numberPlate_len: usize, -> bool);
native!(Vehicle_SetRespawnDelay, vehicle: struct Vehicle, respawn_delay: i32, -> bool);
native!(Vehicle_GetRespawnDelay, vehicle: struct Vehicle, -> i32);
native!(Vehicle_GetCab, vehicle: struct Vehicle, -> struct Vehicle);
native!(Vehicle_GetTower, vehicle: struct Vehicle, -> struct Vehicle);
native!(Vehicle_GetOccupiedTick, vehicle: struct Vehicle, -> i32);
native!(Vehicle_GetRespawnTick, vehicle: struct Vehicle, -> i32);
native!(Vehicle_HasBeenOccupied, vehicle: struct Vehicle, -> bool);
native!(Vehicle_IsOccupied, vehicle: struct Vehicle, -> bool);
native!(Vehicle_IsDead, vehicle: struct Vehicle, -> bool);
native!(Vehicle_SetParamsSirenState, vehicle: struct Vehicle, siren_state: bool, -> bool);
native!(Vehicle_ToggleSirenEnabled, vehicle: struct Vehicle, status: bool, -> bool);
native!(Vehicle_IsSirenEnabled, vehicle: struct Vehicle, -> bool);
native!(Vehicle_GetLastDriver, vehicle: struct Vehicle, -> struct Player);
native!(Vehicle_GetDriver, vehicle: struct Vehicle, -> struct Player);
native!(Vehicle_GetSirenState, vehicle: struct Vehicle, -> i32);
native!(Vehicle_GetHydraReactorAngle, vehicle: struct Vehicle, -> u32);
native!(Vehicle_GetTrainSpeed, vehicle: struct Vehicle, -> f32);
native!(Vehicle_GetMatrix, vehicle: struct Vehicle, rightX: mut f32, rightY: mut f32, rightZ: mut f32, upX: mut f32, upY: mut f32, upZ: mut f32, atX: mut f32, atY: mut f32, atZ: mut f32, -> bool);
native!(Vehicle_GetOccupant, vehicle: struct Vehicle, seat: i32, -> struct Player);
native!(Vehicle_CountOccupants, vehicle: struct Vehicle, -> i32);
#[doc(hidden)]
pub fn load_functions() {
load_function!(Vehicle_Create);
load_function!(Vehicle_Destroy);
load_function!(Vehicle_FromID);
load_function!(Vehicle_GetID);
load_function!(Vehicle_GetMaxPassengerSeats);
load_function!(Vehicle_IsStreamedIn);
load_function!(Vehicle_GetPos);
load_function!(Vehicle_SetPos);
load_function!(Vehicle_GetZAngle);
load_function!(Vehicle_GetRotationQuat);
load_function!(Vehicle_GetDistanceFromPoint);
load_function!(Vehicle_SetZAngle);
load_function!(Vehicle_SetParamsForPlayer);
load_function!(Vehicle_UseManualEngineAndLights);
load_function!(Vehicle_SetParamsEx);
load_function!(Vehicle_GetParamsEx);
load_function!(Vehicle_GetParamsSirenState);
load_function!(Vehicle_SetParamsCarDoors);
load_function!(Vehicle_GetParamsCarDoors);
load_function!(Vehicle_SetParamsCarWindows);
load_function!(Vehicle_GetParamsCarWindows);
load_function!(Vehicle_SetToRespawn);
load_function!(Vehicle_LinkToInterior);
load_function!(Vehicle_AddComponent);
load_function!(Vehicle_RemoveComponent);
load_function!(Vehicle_ChangeColor);
load_function!(Vehicle_ChangePaintjob);
load_function!(Vehicle_SetHealth);
load_function!(Vehicle_GetHealth);
load_function!(Vehicle_AttachTrailer);
load_function!(Vehicle_DetachTrailer);
load_function!(Vehicle_IsTrailerAttached);
load_function!(Vehicle_GetTrailer);
load_function!(Vehicle_SetNumberPlate);
load_function!(Vehicle_GetModel);
load_function!(Vehicle_GetComponentInSlot);
load_function!(Vehicle_GetComponentType);
load_function!(Vehicle_CanHaveComponent);
load_function!(Vehicle_GetRandomColorPair);
load_function!(Vehicle_ColorIndexToColor);
load_function!(Vehicle_Repair);
load_function!(Vehicle_GetVelocity);
load_function!(Vehicle_SetVelocity);
load_function!(Vehicle_SetAngularVelocity);
load_function!(Vehicle_GetDamageStatus);
load_function!(Vehicle_UpdateDamageStatus);
load_function!(Vehicle_GetModelInfo);
load_function!(Vehicle_SetVirtualWorld);
load_function!(Vehicle_GetVirtualWorld);
load_function!(Vehicle_GetLandingGearState);
load_function!(Vehicle_IsValid);
load_function!(Vehicle_AddStatic);
load_function!(Vehicle_AddStaticEx);
load_function!(Vehicle_EnableFriendlyFire);
load_function!(Vehicle_GetSpawnInfo);
load_function!(Vehicle_SetSpawnInfo);
load_function!(Vehicle_GetModelCount);
load_function!(Vehicle_GetModelsUsed);
load_function!(Vehicle_GetPaintjob);
load_function!(Vehicle_GetColor);
load_function!(Vehicle_GetInterior);
load_function!(Vehicle_GetNumberPlate);
load_function!(Vehicle_SetRespawnDelay);
load_function!(Vehicle_GetRespawnDelay);
load_function!(Vehicle_GetCab);
load_function!(Vehicle_GetTower);
load_function!(Vehicle_GetOccupiedTick);
load_function!(Vehicle_GetRespawnTick);
load_function!(Vehicle_HasBeenOccupied);
load_function!(Vehicle_IsOccupied);
load_function!(Vehicle_IsDead);
load_function!(Vehicle_SetParamsSirenState);
load_function!(Vehicle_ToggleSirenEnabled);
load_function!(Vehicle_IsSirenEnabled);
load_function!(Vehicle_GetLastDriver);
load_function!(Vehicle_GetDriver);
load_function!(Vehicle_GetSirenState);
load_function!(Vehicle_GetHydraReactorAngle);
load_function!(Vehicle_GetTrainSpeed);
load_function!(Vehicle_GetMatrix);
load_function!(Vehicle_GetOccupant);
load_function!(Vehicle_CountOccupants);
}