use oxide_renderer::mesh::Mesh3D;
use super::{Assets, Handle};
pub struct MeshCache {
meshes: Assets<Mesh3D>,
}
impl MeshCache {
pub fn new() -> Self {
Self {
meshes: Assets::new(),
}
}
pub fn insert(&mut self, handle: Handle<Mesh3D>, mesh: Mesh3D) {
self.meshes.insert(handle, mesh);
}
pub fn get(&self, handle: Handle<Mesh3D>) -> Option<&Mesh3D> {
self.meshes.get(&handle)
}
pub fn remove(&mut self, handle: Handle<Mesh3D>) -> Option<Mesh3D> {
self.meshes.remove(&handle)
}
pub fn len(&self) -> usize {
self.meshes.len()
}
pub fn is_empty(&self) -> bool {
self.meshes.is_empty()
}
}
impl Default for MeshCache {
fn default() -> Self {
Self::new()
}
}
#[derive(Clone, Debug)]
pub struct MeshFilter {
pub mesh: Handle<Mesh3D>,
}
impl MeshFilter {
pub fn new(mesh: Handle<Mesh3D>) -> Self {
Self { mesh }
}
}