use std::collections::HashMap;
pub type ComputeResource = wgpu::Buffer;
pub type ComputeResourceRef = usize;
#[derive(Debug)]
pub struct ComputeResourceManager {
idx: usize,
resources: HashMap<usize, ComputeResource>,
}
impl Default for ComputeResourceManager {
fn default() -> Self {
Self::new()
}
}
impl ComputeResourceManager {
pub fn new() -> Self {
Self {
idx: 0,
resources: HashMap::new(),
}
}
pub fn clear(&mut self) {
self.idx = 0;
self.resources.clear();
}
pub fn push(&mut self, buffer: wgpu::Buffer) -> ComputeResourceRef {
self.resources.insert(self.idx, buffer);
let id = self.idx;
self.idx += 1;
id
}
pub fn get(&self, id: &ComputeResourceRef) -> Option<&ComputeResource> {
self.resources.get(id)
}
pub fn contains(&self, id: &ComputeResourceRef) -> bool {
self.resources.contains_key(id)
}
pub fn take(&mut self, id: &ComputeResourceRef) -> Option<ComputeResource> {
self.resources.remove(id)
}
}