use std::sync::atomic::AtomicU64;
static COUNTER: AtomicU64 = AtomicU64::new(0);
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
pub struct Entity(u64);
impl Entity {
pub fn new() -> Self {
Self(COUNTER.fetch_add(1, std::sync::atomic::Ordering::SeqCst))
}
}
impl Default for Entity {
fn default() -> Self {
Self::new()
}
}
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
pub struct SystemEntity(u64);
impl SystemEntity {
pub fn new() -> Self {
Self(COUNTER.fetch_add(1, std::sync::atomic::Ordering::SeqCst))
}
}
impl Default for SystemEntity {
fn default() -> Self {
Self::new()
}
}