use nalgebra::RealField;
use num_traits::ToPrimitive;
use std::collections::HashMap;
use crate::{
bvh::BvhConfig,
error::{Result, SceneError},
geometry::Mesh,
};
#[derive(Debug)]
pub struct Assets<T: RealField + Copy + ToPrimitive> {
pub bvh_config: BvhConfig<T>,
pub meshes: HashMap<String, Mesh<T>>,
}
impl<T: RealField + Copy + ToPrimitive> Assets<T> {
pub fn empty(bvh_config: BvhConfig<T>) -> Self {
Self {
bvh_config,
meshes: HashMap::new(),
}
}
pub fn add_mesh(mut self, id: &str, mesh: Mesh<T>) -> Result<Self> {
if self.meshes.contains_key(id) {
return Err(SceneError::DuplicateAssetId { id: id.to_string() }.into());
}
let _unused = self.meshes.insert(id.into(), mesh);
Ok(self)
}
}