From 58ae76634da13423894a958e3a71cf8f001054e4 Mon Sep 17 00:00:00 2001 From: tcmal Date: Sun, 25 Aug 2024 17:44:21 +0100 Subject: feat(levels): add get_texture method to HasTextures trait --- stockton-levels/src/q3/textures.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'stockton-levels/src/q3/textures.rs') diff --git a/stockton-levels/src/q3/textures.rs b/stockton-levels/src/q3/textures.rs index 85093b5..5aa1ba2 100644 --- a/stockton-levels/src/q3/textures.rs +++ b/stockton-levels/src/q3/textures.rs @@ -42,7 +42,7 @@ pub fn from_data(lump: &[u8]) -> Result> { for n in 0..length { let offset = n * TEXTURE_LUMP_SIZE; textures.push(Texture { - name: str::from_utf8(&lump[offset..offset + 64]).map_err(|_| ParseError::Invalid)?.to_owned(), + name: str::from_utf8(&lump[offset..offset + 64]).map_err(|_| ParseError::Invalid)?.trim_matches('\0').to_owned(), surface: SurfaceFlags::from_bits_truncate(slice_to_u32(&lump[offset + 64..offset + 68])), contents: ContentsFlags::from_bits_truncate(slice_to_u32(&lump[offset + 68..offset + 72])), }); @@ -57,6 +57,10 @@ impl HasTextures for Q3BSPFile { fn textures_iter<'a>(&'a self) -> Self::TexturesIter<'a> { self.textures.iter() } + + fn get_texture<'a>(&'a self, idx: u32) -> &'a Texture { + &self.textures[idx as usize] + } } #[test] @@ -75,7 +79,7 @@ fn textures_single_texture() { assert_eq!(lump.len(), 1); - assert_eq!(lump[0].name, format!("{:64}", "TEST TEXTURE")); + assert_eq!(lump[0].name, "TEST TEXTURE"); assert_eq!( lump[0].surface, SurfaceFlags::NO_DAMAGE | SurfaceFlags::SLICK | SurfaceFlags::FLESH | SurfaceFlags::DUST -- cgit v1.2.3