summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-04-17 17:02:08 +0200
committerHampusM <hampus@hampusmat.com>2026-04-17 17:02:08 +0200
commitef22fdcb1dbfc89aa524016637fe32597481e196 (patch)
treeefc6f0f27e93279eac3b04c2c94255c7db2e1859 /engine
parent6683bb039c531db1cf9fa696fb7260e8b85826ba (diff)
feat(engine): add sequential renderer object ids
Diffstat (limited to 'engine')
-rw-r--r--engine/src/renderer/object.rs17
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