samp_sdk/omp/mod.rs
1//! Native bindings for the Open Multiplayer SDK.
2//!
3//! Independent pure-Rust implementation of the binary ABI of the Open Multiplayer
4//! server: vtables, layout of `IComponent`/`ICore`/`ITimer`, calling
5//! conventions, and subobject offsets. No dependency on the original C++ libs
6//! (`robin_hood`, `glm`, `nonstd`) — only the types sufficient to implement a
7//! component's lifecycle.
8//!
9//! Offsets and slots were confirmed via disasm of `Console.dll` / `Console.so`
10//! and `omp-server.exe`, not by guessing from the C++ headers.
11//!
12//! Supports the two i686 ABIs used by the server:
13//! - **Itanium** (Linux GCC) — calling convention `extern "C"`
14//! - **MSVC** (Windows) — calling convention `extern "thiscall"` for virtual
15//! methods, `extern "C"` (cdecl) for variadic
16
17pub mod component;
18pub mod component_api;
19pub mod containers;
20pub mod core;
21pub mod dispatch;
22pub mod events;
23pub mod extensions;
24pub mod generated;
25pub mod players;
26pub mod server;
27pub mod timers;
28pub mod types;
29pub mod vehicles;
30pub mod vtable;
31pub mod world;
32
33// Every module's public items at the root, so `samp_sdk::omp::player_name`
34// works as well as the qualified path. Globs rather than lists: a list had to
35// be edited alongside every new function, and grew by batches.
36pub use component::*;
37pub use component_api::*;
38pub use containers::*;
39pub use core::*;
40pub use dispatch::*;
41pub use events::*;
42pub use extensions::*;
43pub use generated::*;
44pub use players::*;
45pub use server::*;
46pub use timers::*;
47pub use types::*;
48pub use vehicles::*;
49pub use world::*;