summaryrefslogtreecommitdiff
path: root/engine/src
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src')
-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