Skip to main content

samp_sdk/omp/generated/
object.rs

1//! `IObject` — generated by `cargo xtask gen-omp` from `Server/Components/Objects/objects.hpp`.
2//! Implemented by `Object` in the server's `Objects`.
3//!
4//! Do not edit: change `xtask/omp-wrappers.toml` or the generator and
5//! regenerate. Slots are clang's layout of the header for each ABI, checked
6//! against the official binaries by `cargo xtask check-abi --generated`.
7
8#![allow(unused_imports)]
9
10use crate::omp::containers::{FlatSet, HybridString, Pair, Span};
11use crate::omp::types::{
12    Colour, GTAQuat, Hours, Microseconds, Milliseconds, Minutes, Seconds, StringView, TimePoint,
13    UID, Vector2, Vector3, Vector4, WorldTimePoint,
14};
15use crate::omp::vtable::{call_vtable_small_struct, opaque, slots, virtual_fns};
16use crate::omp::*;
17
18slots! {
19    /// `void IBaseObject::setDrawDistance(float)`
20    SLOT_SET_DRAW_DISTANCE: usize = 6, 5;
21    /// `float IBaseObject::getDrawDistance()`
22    SLOT_GET_DRAW_DISTANCE: usize = 7, 6;
23    /// `void IBaseObject::setModel(int)`
24    SLOT_SET_MODEL: usize = 8, 7;
25    /// `int IBaseObject::getModel()`
26    SLOT_GET_MODEL: usize = 9, 8;
27    /// `void IBaseObject::setCameraCollision(bool)`
28    SLOT_SET_CAMERA_COLLISION: usize = 10, 9;
29    /// `bool IBaseObject::getCameraCollision()`
30    SLOT_GET_CAMERA_COLLISION: usize = 11, 10;
31    /// `void IBaseObject::move(const ObjectMoveData &)`
32    SLOT_MOVE: usize = 12, 11;
33    /// `bool IBaseObject::isMoving()`
34    SLOT_IS_MOVING: usize = 13, 12;
35    /// `void IBaseObject::stop()`
36    SLOT_STOP: usize = 14, 13;
37    /// `const ObjectMoveData & IBaseObject::getMovingData()`
38    SLOT_GET_MOVING_DATA: usize = 15, 14;
39    /// `void IBaseObject::attachToVehicle(IVehicle &, Vector3, Vector3)`
40    SLOT_ATTACH_TO_VEHICLE: usize = 16, 15;
41    /// `void IBaseObject::resetAttachment()`
42    SLOT_RESET_ATTACHMENT: usize = 17, 16;
43    /// `const ObjectAttachmentData & IBaseObject::getAttachmentData()`
44    SLOT_GET_ATTACHMENT_DATA: usize = 18, 17;
45    /// `bool IBaseObject::getMaterialData(uint32_t, const ObjectMaterialData *&)`
46    SLOT_GET_MATERIAL_DATA: usize = 19, 18;
47    /// `void IBaseObject::setMaterial(uint32_t, int, StringView, StringView, Colour)`
48    SLOT_SET_MATERIAL: usize = 20, 19;
49    /// `void IBaseObject::setMaterialText(uint32_t, StringView, ObjectMaterialSize, StringView, int, bool, Colour, Colour, ObjectMaterialTextAlign)`
50    SLOT_SET_MATERIAL_TEXT: usize = 21, 20;
51    /// `void IObject::attachToPlayer(IPlayer &, Vector3, Vector3)`
52    SLOT_ATTACH_TO_PLAYER: usize = 22, 21;
53    /// `void IObject::attachToObject(IObject &, Vector3, Vector3, bool)`
54    SLOT_ATTACH_TO_OBJECT: usize = 23, 22;
55}
56
57virtual_fns! {
58    /// `void IBaseObject::setDrawDistance(float)`.
59    ///
60    /// # Safety
61    /// `object` must be a live `IObject`.
62    pub fn object_set_draw_distance(
63        object: IObject,
64        draw_distance: f32,
65    ) = [0, SLOT_SET_DRAW_DISTANCE];
66
67    /// `float IBaseObject::getDrawDistance()`.
68    ///
69    /// # Safety
70    /// `object` must be a live `IObject`.
71    #[must_use]
72    pub fn object_draw_distance(object: IObject) -> f32 = [0, SLOT_GET_DRAW_DISTANCE] or 0.0;
73
74    /// `void IBaseObject::setModel(int)`.
75    ///
76    /// # Safety
77    /// `object` must be a live `IObject`.
78    pub fn object_set_model(object: IObject, model: i32) = [0, SLOT_SET_MODEL];
79
80    /// `int IBaseObject::getModel()`.
81    ///
82    /// # Safety
83    /// `object` must be a live `IObject`.
84    #[must_use]
85    pub fn object_model(object: IObject) -> i32 = [0, SLOT_GET_MODEL] or 0;
86
87    /// `void IBaseObject::setCameraCollision(bool)`.
88    ///
89    /// # Safety
90    /// `object` must be a live `IObject`.
91    pub fn object_set_camera_collision(
92        object: IObject,
93        collision: bool,
94    ) = [0, SLOT_SET_CAMERA_COLLISION];
95
96    /// `bool IBaseObject::getCameraCollision()`.
97    ///
98    /// # Safety
99    /// `object` must be a live `IObject`.
100    #[must_use]
101    pub fn object_camera_collision(
102        object: IObject,
103    ) -> bool = [0, SLOT_GET_CAMERA_COLLISION] or false;
104
105    /// `void IBaseObject::move(const ObjectMoveData &)`.
106    ///
107    /// # Safety
108    /// `object` must be a live `IObject`.
109    pub fn object_move(object: IObject, data: &ObjectMoveData) = [0, SLOT_MOVE];
110
111    /// `bool IBaseObject::isMoving()`.
112    ///
113    /// # Safety
114    /// `object` must be a live `IObject`.
115    #[must_use]
116    pub fn object_is_moving(object: IObject) -> bool = [0, SLOT_IS_MOVING] or false;
117
118    /// `void IBaseObject::stop()`.
119    ///
120    /// # Safety
121    /// `object` must be a live `IObject`.
122    pub fn object_stop(object: IObject) = [0, SLOT_STOP];
123
124    /// `const ObjectMoveData & IBaseObject::getMovingData()`.
125    ///
126    /// # Safety
127    /// `object` must be a live `IObject`.
128    #[must_use]
129    pub fn object_moving_data(
130        object: IObject,
131    ) -> *const ObjectMoveData = [0, SLOT_GET_MOVING_DATA] or std::ptr::null();
132
133    /// `void IBaseObject::attachToVehicle(IVehicle &, Vector3, Vector3)`.
134    ///
135    /// # Safety
136    /// `object` must be a live `IObject`.
137    pub fn object_attach_to_vehicle(
138        object: IObject,
139        vehicle: *mut IVehicle,
140        offset: Vector3,
141        rotation: Vector3,
142    ) = [0, SLOT_ATTACH_TO_VEHICLE];
143
144    /// `void IBaseObject::resetAttachment()`.
145    ///
146    /// # Safety
147    /// `object` must be a live `IObject`.
148    pub fn object_reset_attachment(object: IObject) = [0, SLOT_RESET_ATTACHMENT];
149
150    /// `const ObjectAttachmentData & IBaseObject::getAttachmentData()`.
151    ///
152    /// # Safety
153    /// `object` must be a live `IObject`.
154    #[must_use]
155    pub fn object_attachment_data(
156        object: IObject,
157    ) -> *const ObjectAttachmentData = [0, SLOT_GET_ATTACHMENT_DATA] or std::ptr::null();
158
159    /// `bool IBaseObject::getMaterialData(uint32_t, const ObjectMaterialData *&)`.
160    ///
161    /// # Safety
162    /// `object` must be a live `IObject`.
163    #[must_use]
164    pub fn object_material_data(
165        object: IObject,
166        material_index: u32,
167        out: *mut *const ObjectMaterialData,
168    ) -> bool = [0, SLOT_GET_MATERIAL_DATA] or false;
169
170    /// `void IBaseObject::setMaterial(uint32_t, int, StringView, StringView, Colour)`.
171    ///
172    /// # Safety
173    /// `object` must be a live `IObject`.
174    pub fn object_set_material(
175        object: IObject,
176        material_index: u32,
177        model: i32,
178        texture_library: StringView,
179        texture_name: StringView,
180        colour: Colour,
181    ) = [0, SLOT_SET_MATERIAL];
182
183    /// `void IBaseObject::setMaterialText(uint32_t, StringView, ObjectMaterialSize, StringView, int, bool, Colour, Colour, ObjectMaterialTextAlign)`.
184    ///
185    /// # Safety
186    /// `object` must be a live `IObject`.
187    pub fn object_set_material_text(
188        object: IObject,
189        material_index: u32,
190        text: StringView,
191        material_size: i32,
192        font_face: StringView,
193        font_size: i32,
194        bold: bool,
195        font_colour: Colour,
196        background_colour: Colour,
197        align: i32,
198    ) = [0, SLOT_SET_MATERIAL_TEXT];
199
200    /// `void IObject::attachToPlayer(IPlayer &, Vector3, Vector3)`.
201    ///
202    /// # Safety
203    /// `object` must be a live `IObject`.
204    pub fn object_attach_to_player(
205        object: IObject,
206        player: *mut IPlayer,
207        offset: Vector3,
208        rotation: Vector3,
209    ) = [0, SLOT_ATTACH_TO_PLAYER];
210
211    /// `void IObject::attachToObject(IObject &, Vector3, Vector3, bool)`.
212    ///
213    /// # Safety
214    /// `object` must be a live `IObject`.
215    pub fn object_attach_to_object(
216        object: IObject,
217        other_object: *mut IObject,
218        offset: Vector3,
219        rotation: Vector3,
220        sync_rotation: bool,
221    ) = [0, SLOT_ATTACH_TO_OBJECT];
222}