diff options
Diffstat (limited to 'src/bin/textures.rs')
-rw-r--r-- | src/bin/textures.rs | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/src/bin/textures.rs b/src/bin/textures.rs deleted file mode 100644 index 2e077fe..0000000 --- a/src/bin/textures.rs +++ /dev/null @@ -1,55 +0,0 @@ -use anyhow::anyhow; -use log::warn; -use std::{ - env::args, - fs::{File, create_dir_all}, - io::BufReader, -}; -use unity_tools::{ - classes::texture2d::Texture2D, object::parser::FromValue, serialized_file::SerializedFile, - unityfs::UnityFS, -}; - -fn main() -> anyhow::Result<()> { - env_logger::init_from_env("LOG"); - let file = || BufReader::new(File::open(args().nth(1).unwrap()).unwrap()); - let mut fs = UnityFS::open(file())?; - let mut fs2 = UnityFS::open(file())?; - - let mut i = 0; - create_dir_all("/tmp/a").unwrap(); - - let cabfile = fs - .find_main_file() - .ok_or(anyhow!("no CAB file found"))? - .to_owned(); - - let mut cab = fs.read(&cabfile)?; - let mut file = SerializedFile::read(&mut cab)?; - for ob in file.objects.clone() { - if file.get_object_type_tree(&ob)?.type_string != "Texture2D" { - continue; - } - let value = file.read_object(ob)?; - 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", - texture.name.replace("/", "-").replace(".", "-") - ); - match texture.to_image() { - Ok(im) => { - if !im.as_rgba32f().is_some() { - im.save(&path).unwrap(); - println!("{path}"); - } - } - Err(e) => warn!("{e}"), - } - i += 1; - } - - Ok(()) -} |