summaryrefslogtreecommitdiff
path: root/engine/src/renderer/object.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-06-01 17:00:40 +0200
committerHampusM <hampus@hampusmat.com>2026-06-01 17:00:40 +0200
commit76b84cc648ff2bcb2bf2f504e4c5b36d47e72684 (patch)
treee1ace98dfb92bac779137df9be184e49905ec039 /engine/src/renderer/object.rs
parent8d5668151c3efbb757c4421a9fe35e2c35cbd992 (diff)
refactor(engine): rename 'renderer' module to 'rendering'
Diffstat (limited to 'engine/src/renderer/object.rs')
-rw-r--r--engine/src/renderer/object.rs136
1 files changed, 0 insertions, 136 deletions
diff --git a/engine/src/renderer/object.rs b/engine/src/renderer/object.rs
deleted file mode 100644
index e10011d..0000000
--- a/engine/src/renderer/object.rs
+++ /dev/null
@@ -1,136 +0,0 @@
-use std::collections::HashMap;
-use std::sync::atomic::{AtomicU64, Ordering};
-
-use crate::asset::Id as AssetId;
-use crate::ecs::Sole;
-
-pub type RawValue = u32;
-
-/// Renderer object ID.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
-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),
- ))
- }
-
- pub fn into_asset_id(self) -> Option<AssetId>
- {
- match self {
- Self::Asset(asset_id) => Some(asset_id),
- Self::Sequential(_) => None,
- }
- }
-}
-
-#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
-pub struct SequentialId(u64);
-
-/// Renderer object store.
-#[derive(Debug, Default, Sole)]
-pub struct Store
-{
- objects: HashMap<Id, Option<Object>>,
-}
-
-impl Store
-{
- pub fn get_obj(&self, id: &Id) -> Option<&Object>
- {
- self.objects.get(id).and_then(|obj| obj.as_ref())
- }
-
- pub fn get_texture_obj(&self, id: &Id) -> Option<&Object>
- {
- let obj = self.get_obj(id)?;
-
- if !matches!(obj.kind(), Kind::Texture) {
- return None;
- }
-
- Some(obj)
- }
-
- pub fn get_shader_program_obj(&self, id: &Id) -> Option<&Object>
- {
- let obj = self.get_obj(id)?;
-
- if !matches!(obj.kind(), Kind::ShaderProgram) {
- return None;
- }
-
- Some(obj)
- }
-
- pub fn contains_maybe_pending_with_id(&self, id: &Id) -> bool
- {
- self.objects.contains_key(id)
- }
-
- pub fn contains_non_pending_with_id(&self, id: &Id) -> bool
- {
- self.objects.get(id).and_then(|obj| obj.as_ref()).is_some()
- }
-
- pub fn insert(&mut self, id: Id, object: Object)
- {
- self.objects.insert(id, Some(object));
- }
-
- pub fn insert_pending(&mut self, id: Id)
- {
- self.objects.insert(id, None);
- }
-
- pub fn remove(&mut self, id: &Id) -> Option<Option<Object>>
- {
- self.objects.remove(id)
- }
-}
-
-/// Renderer object.
-#[derive(Debug, Clone)]
-pub struct Object
-{
- raw: RawValue,
- kind: Kind,
-}
-
-impl Object
-{
- pub fn from_raw(raw: RawValue, kind: Kind) -> Self
- {
- Self { raw, kind }
- }
-
- pub fn as_raw(&self) -> RawValue
- {
- self.raw
- }
-
- pub fn kind(&self) -> Kind
- {
- self.kind
- }
-}
-
-/// Renderer object kind.
-#[derive(Debug, Clone, Copy)]
-#[non_exhaustive]
-pub enum Kind
-{
- Texture,
- ShaderProgram,
- ImplementationSpecific,
-}