add source

This commit is contained in:
Quaternions 2024-02-13 19:48:53 -08:00
parent 2c7ced7151
commit 08cdba3e60
2 changed files with 39 additions and 1 deletions

@ -8,7 +8,7 @@ edition = "2021"
[features]
legacy = ["dep:lazy-regex"]
#roblox = []
#source = []
source = []
[dependencies]
lazy-regex = { version = "3.1.0", optional = true }

@ -0,0 +1,38 @@
use std::io::Read;
use std::path::PathBuf;
use std::collections::HashMap;
use crate::texture::{Texture,Textures};
use strafesnet_common::model::{MeshId,TextureId};
pub struct Loader{
texture_paths:HashMap<PathBuf,TextureId>,
mesh_paths:HashMap<PathBuf,MeshId>,
}
impl Loader{
pub fn new()->Self{
Self{
texture_paths:HashMap::new(),
mesh_paths:HashMap::new(),
}
}
}
//cannot fail atm
enum AcquireTextureError{}
enum AcquireMeshError{}
impl Loader{
pub fn acquire_texture_id(&mut self,name:&str)->Result<TextureId,AcquireTextureError>{
let texture_id=TextureId::new(self.texture_paths.len() as u32);
Ok(*self.texture_paths.entry(name.into()).or_insert(texture_id))
}
pub fn acquire_mesh_id(&mut self,name:&str)->Result<MeshId,AcquireMeshError>{
let texture_id=MeshId::new(self.mesh_paths.len() as u32);
Ok(*self.mesh_paths.entry(name.into()).or_insert(texture_id))
}
pub fn load_textures(&self)->Result<Textures,std::io::Error>{
Ok(Textures::new(Vec::new()))
}
// fn load_meshes(&self)->Result<Meshes,std::io::Error>{
// Ok(Meshes::new(Vec::new()))
// }
}