diff options
Diffstat (limited to 'engine/src')
| -rw-r--r-- | engine/src/renderer/object.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/engine/src/renderer/object.rs b/engine/src/renderer/object.rs index eba5bdf..8e2254f 100644 --- a/engine/src/renderer/object.rs +++ b/engine/src/renderer/object.rs @@ -1,5 +1,6 @@ use std::collections::HashMap; use std::collections::hash_map::Entry as HashMapEntry; +use std::sync::atomic::{AtomicU64, Ordering}; use ecs::Component; @@ -12,8 +13,24 @@ pub type RawValue = u32; pub enum Id { Asset(AssetId), + Sequential(SequentialId), } +impl Id +{ + pub fn new_sequential() -> Self + { + static NEXT_SEQUENTIAL_ID: AtomicU64 = AtomicU64::new(0); + + Self::Sequential(SequentialId( + NEXT_SEQUENTIAL_ID.fetch_add(1, Ordering::Relaxed), + )) + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub struct SequentialId(u64); + /// Renderer object store. #[derive(Debug, Default, Component)] pub struct Store |
