diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-12 12:41:39 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-12 12:41:39 +0100 |
commit | 8bea7b0838ca83af9abf2ec64b679b98c92d472e (patch) | |
tree | bf9fb2188bf49aece0304c61842afe5516173cbd /src/bin/textures.rs | |
parent | cb9a60f45cb8438c58c2f1ecb2f59611dc5d515a (diff) | |
download | unity-tools-8bea7b0838ca83af9abf2ec64b679b98c92d472e.tar unity-tools-8bea7b0838ca83af9abf2ec64b679b98c92d472e.tar.bz2 unity-tools-8bea7b0838ca83af9abf2ec64b679b98c92d472e.tar.zst |
many more texture formats
Diffstat (limited to 'src/bin/textures.rs')
-rw-r--r-- | src/bin/textures.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/bin/textures.rs b/src/bin/textures.rs index 83ffb07..4a35de7 100644 --- a/src/bin/textures.rs +++ b/src/bin/textures.rs @@ -31,11 +31,10 @@ fn main() -> anyhow::Result<()> { .nodes() .iter() .find(|n| n.name.ends_with(".resS")) - .ok_or(anyhow!("no resS file found"))? - .to_owned(); + .cloned(); let mut cab = fs.read(&cabfile)?; - let mut ress = fs2.read(&ressfile)?; + 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))?; @@ -51,6 +50,7 @@ fn main() -> anyhow::Result<()> { 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 as u64))?; ress.by_ref() .take(texture.stream_data.size as u64) @@ -60,12 +60,11 @@ fn main() -> anyhow::Result<()> { "/tmp/tex/{}_{i}.png", texture.name.replace("/", "-").replace(".", "-") ); - println!( - "{path} {}x{} {:?}", - texture.width, texture.height, texture.format - ); match texture.to_image() { - Ok(im) => im.save(path).unwrap(), + Ok(im) => { + im.save(&path).unwrap(); + println!("{path}"); + } Err(e) => warn!("{e}"), } i += 1; |