diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-14 20:10:00 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-14 20:10:00 +0100 |
commit | d116a1df8fe14edc8de157bf8088244261fca30f (patch) | |
tree | 6e6b0c2eb62f035a38bc4a14df2c9fa76b92aec9 /src/main.rs | |
parent | b3ae58d1ab1f3b35b4a86234e424b3675af323e5 (diff) | |
download | unity-tools-d116a1df8fe14edc8de157bf8088244261fca30f.tar unity-tools-d116a1df8fe14edc8de157bf8088244261fca30f.tar.bz2 unity-tools-d116a1df8fe14edc8de157bf8088244261fca30f.tar.zst |
trying to read objects
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index beab8a1..450f4a7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,8 @@ -use std::{env::args, fs::File, io::BufReader}; +use std::{ + env::args, + fs::File, + io::{BufReader, Read, Seek, SeekFrom}, +}; use unity_tools::{serialized_file::read_serialized_file, unityfs::UnityFS}; fn main() -> anyhow::Result<()> { @@ -10,12 +14,28 @@ fn main() -> anyhow::Result<()> { if node.name.ends_with(".resource") || node.name.ends_with(".resS") { continue; } - let cab = fs.read(&node)?; + let mut cab = fs.read(&node)?; // let mut writer = File::create(format!("/tmp/{}", node.name))?; // std::io::copy(&mut cab, &mut writer)?; // continue; - let file = read_serialized_file(cab)?; + let file = read_serialized_file(&mut cab)?; + + for ob in file.objects { + cab.seek(SeekFrom::Start(ob.data_offset))?; + let ob_data = cab.by_ref().take(ob.data_size as u64); + + eprintln!("{:#?}", ob); + let typetree = if ob.type_id < 0 { + unimplemented!() + } else { + file.types + .iter() + .find(|t| t.class_id == ob.type_id) + .expect("unknown type") + }; + } + // eprintln!("{:#?}", file.types); } Ok(()) |