mirror of
https://github.com/G2-Games/minecraft_alpha_server.git
synced 2025-04-18 23:03:00 -05:00
28 lines
702 B
Rust
28 lines
702 B
Rust
use std::sync::atomic::{self, AtomicI32};
|
|
|
|
/// The current Entity ID. Incremented by one every time there is a new entity.
|
|
///
|
|
/// This value should rarely be accessed directly, and definitely never updated.
|
|
pub static ENTITY_ID: EntityID = EntityID::new(0);
|
|
|
|
pub struct EntityID {
|
|
id: AtomicI32
|
|
}
|
|
|
|
impl EntityID {
|
|
/// Create a new entity ID
|
|
const fn new(id: i32) -> Self {
|
|
Self {
|
|
id: AtomicI32::new(id)
|
|
}
|
|
}
|
|
|
|
/// Get a new Entity ID and increment the global value by 1.
|
|
#[inline]
|
|
pub fn get(&self) -> i32 {
|
|
let eid = self.id.load(atomic::Ordering::Relaxed);
|
|
self.id.store(eid + 1, atomic::Ordering::Relaxed);
|
|
|
|
eid
|
|
}
|
|
}
|