omp-gdk 2.1.0

Rust SDK for developing open.mp gamemodes
Documentation
use omp_codegen::native;
use std::ffi::c_void;

use crate::{players::Player, vehicles::Vehicle};

use super::{Object, PlayerObject};

native!(Object_Create, modelid: i32, x: f32, y: f32, z: f32, rotationX: f32, rotationY: f32, rotationZ: f32, drawDistance: f32, id: mut i32, -> struct Object);
native!(Object_Destroy, object: struct Object, -> bool);
native!(Object_FromID, objectid: i32, -> struct Object);
native!(Object_GetID, object: struct Object, -> i32);
native!(Object_AttachToVehicle, object: struct Object, vehicle: struct Vehicle, offsetX: f32, offsetY: f32, offsetZ: f32, rotationX: f32, rotationY: f32, rotationZ: f32, -> bool);
native!(Object_AttachToObject, object: struct Object, objAttachedTo: struct Object, offsetX: f32, offsetY: f32, offsetZ: f32, rotationX: f32, rotationY: f32, rotationZ: f32, syncRotation: bool, -> bool);
native!(Object_AttachToPlayer, object: struct Object, player: struct Player, offsetX: f32, offsetY: f32, offsetZ: f32, rotationX: f32, rotationY: f32, rotationZ: f32, -> bool);
native!(Object_SetPos, object: struct Object, x: f32, y: f32, z: f32, -> bool);
native!(Object_GetPos, object: struct Object, x: mut f32, y: mut f32, z: mut f32, -> bool);
native!(Object_SetRot, object: struct Object, rotationX: f32, rotationY: f32, rotationZ: f32, -> bool);
native!(Object_GetRot, object: struct Object, rotationX: mut f32, rotationY: mut f32, rotationZ: mut f32, -> bool);
native!(Object_GetModel, object: struct Object, -> i32);
native!(Object_SetNoCameraCollision, object: struct Object, -> bool);
native!(Object_IsValid, object: struct Object, -> bool);
native!(Object_Move, object: struct Object, x: f32, y: f32, z: f32, speed: f32, rotationX: f32, rotationY: f32, rotationZ: f32, -> i32);
native!(Object_Stop, object: struct Object, -> bool);
native!(Object_IsMoving, object: struct Object, -> bool);
native!(Object_BeginEditing, player: struct Player, object: struct Object, -> bool);
native!(Object_BeginSelecting, player: struct Player, -> bool);
native!(Object_EndEditing, player: struct Player, -> bool);
native!(Object_SetMaterial, object: struct Object, materialIndex: i32, modelId: i32, textureLibrary: str, textureName: str, materialColor: u32, -> bool);
native!(Object_SetMaterialText, object: struct Object, text: str, materialIndex: i32, materialSize: i32, fontface: str, fontsize: i32, bold: bool, fontColor: u32, backgroundColor: u32, textalignment: i32, -> bool);
native!(Object_SetDefaultCameraCollision, disable: bool, -> bool);
native!(Object_GetDrawDistance, object: struct Object, -> f32);
native!(Object_GetMoveSpeed, object: struct Object, -> f32);
native!(Object_GetMovingTargetPos, object: struct Object, targetX: mut f32, targetY: mut f32, targetZ: mut f32, -> bool);
native!(Object_GetMovingTargetRot, object: struct Object, rotationX: mut f32, rotationY: mut f32, rotationZ: mut f32, -> bool);
native!(Object_GetAttachedData, object: struct Object, parentVehicle: mut i32, parentObject: mut i32, parentPlayer: mut i32, -> bool);
native!(Object_GetAttachedOffset, object: struct Object, offsetX: mut f32, offsetY: mut f32, offsetZ: mut f32, rotationX: mut f32, rotationY: mut f32, rotationZ: mut f32, -> bool);
native!(Object_GetSyncRotation, object: struct Object, -> bool);
native!(Object_IsMaterialSlotUsed, object: struct Object, materialIndex: i32, -> bool);
native!(Object_GetMaterial, object: struct Object, materialIndex: i32, modelid: mut i32, textureLibrary: mut str, textureLibrary_len: usize, textureName: mut str, textureName_len: usize, materialColor: mut i32, -> bool);
native!(Object_GetMaterialText, object: struct Object, materialIndex: i32, text: mut str, text_len: usize, materialSize: mut i32, fontFace: mut str, fontFace_len: usize, fontSize: mut i32, bold: mut bool, fontColor: mut i32, backgroundColor: mut i32, textAlignment: mut i32, -> bool);
native!(Object_IsObjectNoCameraCollision, object: struct Object, -> bool);
native!(Object_GetType, player: struct Player, objectid: i32, -> u8);

// player object functions

native!(PlayerObject_Create, player: struct Player, modelid: i32, x: f32, y: f32, z: f32, rotationX: f32, rotationY: f32, rotationZ: f32, drawDistance: f32, id: mut i32, -> struct PlayerObject);
native!(PlayerObject_Destroy, player: struct Player, object: struct PlayerObject, -> bool);
native!(PlayerObject_AttachToVehicle, player: struct Player, object: struct PlayerObject, vehicle: struct Vehicle, offsetX: f32, offsetY: f32, offsetZ: f32, rotationX: f32, rotationY: f32, rotationZ: f32, -> bool);
native!(PlayerObject_AttachToPlayer, player: struct Player, object: struct PlayerObject, playerAttachedTo: struct Player, offsetX: f32, offsetY: f32, offsetZ: f32, rotationX: f32, rotationY: f32, rotationZ: f32, -> bool);
native!(PlayerObject_AttachToObject, player: struct Player, object: struct PlayerObject, attachedTo: struct PlayerObject, offsetX: f32, offsetY: f32, offsetZ: f32, rotationX: f32, rotationY: f32, rotationZ: f32, -> bool);
native!(PlayerObject_SetPos, player: struct Player, object: struct PlayerObject, x: f32, y: f32, z: f32, -> bool);
native!(PlayerObject_GetPos, player: struct Player, object: struct PlayerObject, x: mut f32, y: mut f32, z: mut f32, -> bool);
native!(PlayerObject_SetRot, player: struct Player, object: struct PlayerObject, rotationX: f32, rotationY: f32, rotationZ: f32, -> bool);
native!(PlayerObject_GetRot, player: struct Player, object: struct PlayerObject, rotationX: mut f32, rotationY: mut f32, rotationZ: mut f32, -> bool);
native!(PlayerObject_GetModel, player: struct Player, object: struct PlayerObject, -> i32);
native!(PlayerObject_SetNoCameraCollision, player: struct Player, object: struct PlayerObject, -> bool);
native!(PlayerObject_IsValid, player: struct Player, object: struct PlayerObject, -> bool);
native!(PlayerObject_Move, player: struct Player, object: struct PlayerObject, x: f32, y: f32, z: f32, speed: f32, rotationX: f32, rotationY: f32, rotationZ: f32, -> i32);
native!(PlayerObject_Stop, player: struct Player, object: struct PlayerObject, -> bool);
native!(PlayerObject_IsMoving, player: struct Player, object: struct PlayerObject, -> bool);
native!(PlayerObject_BeginEditing, player: struct Player, object: struct PlayerObject, -> bool);
native!(PlayerObject_SetMaterial, player: struct Player, object: struct PlayerObject, materialIndex: i32, modelId: i32, textureLibrary: str, textureName: str, materialColor: u32, -> bool);
native!(PlayerObject_SetMaterialText, player: struct Player, object: struct PlayerObject, text: str, materialIndex: i32, materialSize: i32, fontface: str, fontsize: i32, bold: bool, fontColor: u32, backgroundColor: u32, textalignment: i32, -> bool);
native!(PlayerObject_GetDrawDistance, player: struct Player, object: struct PlayerObject, -> f32);
native!(PlayerObject_GetMoveSpeed, player: struct Player, object: struct PlayerObject, -> f32);
native!(PlayerObject_GetMovingTargetPos, player: struct Player, object: struct PlayerObject, targetX: mut f32, targetY: mut f32, targetZ: mut f32, -> bool);
native!(PlayerObject_GetMovingTargetRot, player: struct Player, object: struct PlayerObject, rotationX: mut f32, rotationY: mut f32, rotationZ: mut f32, -> bool);
native!(PlayerObject_GetAttachedData, player: struct Player, object: struct PlayerObject, parentVehicle: mut i32, parentObject: mut i32, parentPlayer: mut i32, -> bool);
native!(PlayerObject_GetAttachedOffset, player: struct Player, object: struct PlayerObject, offsetX: mut f32, offsetY: mut f32, offsetZ: mut f32, rotationX: mut f32, rotationY: mut f32, rotationZ: mut f32, -> bool);
native!(PlayerObject_GetSyncRotation, player: struct Player, object: struct PlayerObject, -> bool);
native!(PlayerObject_IsMaterialSlotUsed, player: struct Player, object: struct PlayerObject, materialIndex: i32, -> bool);
native!(PlayerObject_GetMaterial, player: struct Player, object: struct PlayerObject, materialIndex: i32, modelid: mut i32, textureLibrary: mut str,textureLibrary_len: usize, textureName: mut str, textureName_len: usize, materialColor: mut i32, -> bool);
native!(PlayerObject_GetMaterialText, player: struct Player, object: struct PlayerObject, materialIndex: i32, text: mut str, text_len: usize, materialSize: mut i32, fontFace: mut str, fontFace_len: usize, fontSize: mut i32, bold: mut bool, fontColor: mut i32, backgroundColor: mut i32, textAlignment: mut i32, -> bool);
native!(PlayerObject_IsNoCameraCollision, player: struct Player, object: struct PlayerObject, -> bool);
native!(PlayerObject_FromID, player: struct Player,objectid: i32, -> struct PlayerObject);
native!(PlayerObject_GetID, player: struct Player, object: struct PlayerObject, -> i32);

#[doc(hidden)]
pub fn load_functions() {
    load_function!(Object_Create);
    load_function!(Object_Destroy);
    load_function!(Object_FromID);
    load_function!(Object_GetID);
    load_function!(Object_AttachToVehicle);
    load_function!(Object_AttachToObject);
    load_function!(Object_AttachToPlayer);
    load_function!(Object_SetPos);
    load_function!(Object_GetPos);
    load_function!(Object_SetRot);
    load_function!(Object_GetRot);
    load_function!(Object_GetModel);
    load_function!(Object_SetNoCameraCollision);
    load_function!(Object_IsValid);
    load_function!(Object_Move);
    load_function!(Object_Stop);
    load_function!(Object_IsMoving);
    load_function!(Object_BeginEditing);
    load_function!(Object_BeginSelecting);
    load_function!(Object_EndEditing);
    load_function!(Object_SetMaterial);
    load_function!(Object_SetMaterialText);
    load_function!(Object_SetDefaultCameraCollision);
    load_function!(Object_GetDrawDistance);
    load_function!(Object_GetMoveSpeed);
    load_function!(Object_GetMovingTargetPos);
    load_function!(Object_GetMovingTargetRot);
    load_function!(Object_GetAttachedData);
    load_function!(Object_GetAttachedOffset);
    load_function!(Object_GetSyncRotation);
    load_function!(Object_IsMaterialSlotUsed);
    load_function!(Object_GetMaterial);
    load_function!(Object_GetMaterialText);
    load_function!(Object_IsObjectNoCameraCollision);
    load_function!(Object_GetType);

    // player object functions

    load_function!(PlayerObject_Create);
    load_function!(PlayerObject_Destroy);
    load_function!(PlayerObject_AttachToVehicle);
    load_function!(PlayerObject_AttachToPlayer);
    load_function!(PlayerObject_AttachToObject);
    load_function!(PlayerObject_SetPos);
    load_function!(PlayerObject_GetPos);
    load_function!(PlayerObject_SetRot);
    load_function!(PlayerObject_GetRot);
    load_function!(PlayerObject_GetModel);
    load_function!(PlayerObject_SetNoCameraCollision);
    load_function!(PlayerObject_IsValid);
    load_function!(PlayerObject_Move);
    load_function!(PlayerObject_Stop);
    load_function!(PlayerObject_IsMoving);
    load_function!(PlayerObject_BeginEditing);
    load_function!(PlayerObject_SetMaterial);
    load_function!(PlayerObject_SetMaterialText);
    load_function!(PlayerObject_GetDrawDistance);
    load_function!(PlayerObject_GetMoveSpeed);
    load_function!(PlayerObject_GetMovingTargetPos);
    load_function!(PlayerObject_GetMovingTargetRot);
    load_function!(PlayerObject_GetAttachedData);
    load_function!(PlayerObject_GetAttachedOffset);
    load_function!(PlayerObject_GetSyncRotation);
    load_function!(PlayerObject_IsMaterialSlotUsed);
    load_function!(PlayerObject_GetMaterial);
    load_function!(PlayerObject_GetMaterialText);
    load_function!(PlayerObject_IsNoCameraCollision);
}