diff options
| author | HampusM <hampus@hampusmat.com> | 2026-04-17 17:02:08 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-04-17 17:02:08 +0200 |
| commit | ef22fdcb1dbfc89aa524016637fe32597481e196 (patch) | |
| tree | efc6f0f27e93279eac3b04c2c94255c7db2e1859 /engine/src/renderer/object.rs | |
| parent | 6683bb039c531db1cf9fa696fb7260e8b85826ba (diff) | |
feat(engine): add sequential renderer object ids
Diffstat (limited to 'engine/src/renderer/object.rs')
| -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 |
