aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-02-14 20:10:00 +0100
committermetamuffin <metamuffin@disroot.org>2025-02-14 20:10:00 +0100
commitd116a1df8fe14edc8de157bf8088244261fca30f (patch)
tree6e6b0c2eb62f035a38bc4a14df2c9fa76b92aec9 /src/main.rs
parentb3ae58d1ab1f3b35b4a86234e424b3675af323e5 (diff)
downloadunity-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.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(())