use {crate::topology::TriangleList, std::marker::PhantomData};
#[derive(Clone, Copy)]
#[must_use]
pub struct LayerHandle<V, T = TriangleList>(u32, PhantomData<(V, T)>);
impl<V, T> LayerHandle<V, T> {
pub(crate) fn new(id: u32) -> Self {
Self(id, PhantomData)
}
pub(crate) fn id(self) -> u32 {
self.0
}
}
#[derive(Clone, Copy)]
#[must_use]
pub struct TextureHandle(pub(crate) u32);
#[derive(Clone, Copy)]
#[must_use]
pub struct InstanceHandle(pub(crate) u32);
#[derive(Clone, Copy)]
#[must_use]
pub struct MeshHandle<V, T = TriangleList>(u32, PhantomData<(V, T)>);
impl<V, T> MeshHandle<V, T> {
pub(crate) fn new(id: u32) -> Self {
Self(id, PhantomData)
}
pub(crate) fn id(self) -> u32 {
self.0
}
}
#[derive(Clone, Copy)]
#[must_use]
pub struct ViewHandle(pub(crate) u32);
#[derive(Clone, Copy)]
#[must_use]
pub struct LightHandle(pub(crate) u32);
impl LightHandle {
pub(crate) const DEFAULT: Self = Self(0);
}
#[derive(Clone, Copy)]
#[must_use]
pub struct SpaceHandle(pub(crate) u32);
impl SpaceHandle {
pub(crate) const DEFAULT: Self = Self(0);
}