From c1ac2eb1d8d534951997a36f926caa369c7c6a00 Mon Sep 17 00:00:00 2001 From: Quaternions Date: Tue, 13 Feb 2024 19:48:53 -0800 Subject: [PATCH] add source --- Cargo.toml | 2 +- src/source.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index f7e925f..1faa702 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [features] legacy = ["dep:lazy-regex"] #roblox = [] -#source = [] +source = [] [dependencies] lazy-regex = { version = "3.1.0", optional = true } diff --git a/src/source.rs b/src/source.rs index e69de29..70d8b7d 100644 --- a/src/source.rs +++ b/src/source.rs @@ -0,0 +1,51 @@ +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 TextureLoader{ + texture_paths:HashMap, +} +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 get_inner_mut(&mut self)->(&mut TextureLoader,&mut MeshLoader){ + (&mut self.texture_loader,&mut self.mesh_loader) + } +} + +impl Loader{ + pub fn load_textures(&self)->Result{ + Ok(Textures::new(Vec::new())) + } + //load_meshes should look like load_textures + /* + pub fn load_meshes(&mut self)->Result{ + } + */ +}