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}