From db9aa9f1bf49e8bede384b9ceb1e1fb82b522799 Mon Sep 17 00:00:00 2001 From: Micha White Date: Thu, 15 Aug 2024 20:16:32 -0400 Subject: Delete stuff --- textures/src/lib.rs | 96 ----------------------------------------------------- 1 file changed, 96 deletions(-) delete mode 100644 textures/src/lib.rs (limited to 'textures/src/lib.rs') diff --git a/textures/src/lib.rs b/textures/src/lib.rs deleted file mode 100644 index c1b56a8..0000000 --- a/textures/src/lib.rs +++ /dev/null @@ -1,96 +0,0 @@ -use std::collections::HashMap; -use std::path::Path; -use std::sync::Arc; - -use exun::{RawUnexpected, ResultErrorExt}; -use image::RgbaImage; -use packer::{RectanglePacker, TextureAtlas}; - -type ExunResult = Result; - -pub struct TextureManager { - textures: HashMap, TextureMetadata>, - loaded_textures: HashMap, Arc>, - packer: RectanglePacker, - target_size: usize, - current_size: usize, -} - -struct TextureMetadata { - path: Arc, - size: usize, -} - -impl TextureManager { - pub fn new(target_size: usize) -> Self { - Self { - textures: HashMap::new(), - loaded_textures: HashMap::new(), - packer: RectanglePacker::new(), - target_size, - current_size: 0, - } - } - - pub fn add_texture(&mut self, name: Arc, path: Arc, size: usize) { - self.textures.insert(name, TextureMetadata { path, size }); - } - - pub fn try_preload(&mut self, name: Arc) -> ExunResult> { - let Some(metadata) = self.textures.get(&name) else { - return Ok(None); - }; - - if self.current_size + metadata.size < self.target_size { - self.load(name)?; - Ok(Some(true)) - } else { - Ok(Some(false)) - } - } - - pub fn load(&mut self, name: Arc) -> ExunResult> { - let Some(metadata) = self.textures.get(&name) else { - return Ok(None); - }; - - self.current_size += metadata.size; - let texture = image::open(&metadata.path).unexpect()?.to_rgba8(); - self.loaded_textures.insert(name, Arc::new(texture)); - - Ok(Some(())) - } - - pub fn unload(&mut self, name: Arc) -> Option<()> { - self.loaded_textures.remove(&name)?; - Some(()) - } - - pub fn pack_texture(&mut self, name: Arc) -> ExunResult<()> { - if !self.loaded_textures.contains_key(&name) { - self.load(name.clone())?; - } - - self.packer.add_texture( - name.clone(), - self.loaded_textures - .get(&name) - .expect("we checked to make sure it was loaded") - .clone(), - ); - - Ok(()) - } - - pub fn reset_packer(&mut self) { - self.packer = RectanglePacker::new(); - } - - pub fn reload_texture_atlas( - &mut self, - min_width: u32, - min_height: u32, - ) -> ExunResult { - self.packer.output(min_width, min_height) - } -} -- cgit v1.2.3