diff --git a/src/source.rs b/src/source.rs index cfb2f87..f75b321 100644 --- a/src/source.rs +++ b/src/source.rs @@ -3,32 +3,46 @@ use std::path::PathBuf; use std::collections::HashMap; use crate::texture::{Texture,Textures}; use strafesnet_common::model::{MeshId,TextureId}; -pub struct Loader{ + +pub struct TextureLoader{ texture_paths:HashMap, - mesh_paths:HashMap, } -impl Loader{ - pub fn new()->Self{ - Self{ - texture_paths:HashMap::new(), - mesh_paths:HashMap::new(), - } - } -} - -//cannot fail atm -enum AcquireTextureError{} -enum AcquireMeshError{} - -impl Loader{ +impl TextureLoader{ pub fn acquire_texture_id(&mut self,name:&str)->TextureId{ let texture_id=TextureId::new(self.texture_paths.len() as u32); *self.texture_paths.entry(name.into()).or_insert(texture_id) } +} +pub struct MeshLoader{ + mesh_paths:HashMap, +} +impl MeshLoader{ pub fn acquire_mesh_id(&mut self,name:&str)->MeshId{ let texture_id=MeshId::new(self.mesh_paths.len() as u32); *self.mesh_paths.entry(name.into()).or_insert(texture_id) } +} + +pub struct Loader{ + texture_loader:TextureLoader, + mesh_loader:MeshLoader, +} +impl Loader{ + pub fn new()->Self{ + Self{ + texture_loader:TextureLoader{texture_paths:HashMap::new()}, + mesh_loader:MeshLoader{mesh_paths:HashMap::new()}, + } + } + pub fn texture_mut(&self)->&mut TextureLoader{ + &mut self.texture_loader + } + pub fn mesh_mut(&self)->&mut MeshLoader{ + &mut self.mesh_loader + } +} + +impl Loader{ pub fn load_textures(&self)->Result{ Ok(Textures::new(Vec::new())) }