diff options
Diffstat (limited to 'src/bin/textures.rs')
-rw-r--r-- | src/bin/textures.rs | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/src/bin/textures.rs b/src/bin/textures.rs index 00f3596..6cd9577 100644 --- a/src/bin/textures.rs +++ b/src/bin/textures.rs @@ -3,7 +3,7 @@ use log::warn; use std::{ env::args, fs::{File, create_dir_all}, - io::{BufReader, Read, Seek, SeekFrom}, + io::{BufReader, Seek, SeekFrom}, }; use unity_tools::{ classes::texture2d::Texture2D, @@ -27,14 +27,8 @@ fn main() -> anyhow::Result<()> { .find(|n| !n.name.ends_with(".resource") && !n.name.ends_with(".resS")) .ok_or(anyhow!("no CAB file found"))? .to_owned(); - let ressfile = fs2 - .nodes() - .iter() - .find(|n| n.name.ends_with(".resS")) - .cloned(); let mut cab = fs.read(&cabfile)?; - let mut ress = ressfile.map(|p| fs2.read(&p)).transpose()?; let file = read_serialized_file(&mut cab)?; for ob in file.objects { cab.seek(SeekFrom::Start(ob.data_offset))?; @@ -48,13 +42,9 @@ fn main() -> anyhow::Result<()> { continue; } let value = read_value(typetree, file.endianness, &mut cab)?; - let mut texture = Texture2D::from_value(value).unwrap(); - if texture.image_data.len() == 0 { - let ress = ress.as_mut().unwrap(); - ress.seek(SeekFrom::Start(texture.stream_data.offset))?; - ress.by_ref() - .take(texture.stream_data.size as u64) - .read_to_end(&mut texture.image_data)?; + let mut texture = Texture2D::from_value(value)?; + if texture.image_data.is_empty() { + texture.image_data = texture.stream_data.read(&mut fs2)?; } let path = format!( "/tmp/a/{}_{i}.png", |