aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs26
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(())