aboutsummaryrefslogtreecommitdiff
path: root/exporter/src/bin/scenetree.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-05-14 21:04:04 +0200
committermetamuffin <metamuffin@disroot.org>2025-05-14 21:04:04 +0200
commit476e550b0909012e594f2163d95565c42119a18b (patch)
treed29ac018831580a8b278169a7fbc52680429f15a /exporter/src/bin/scenetree.rs
parent65adfb4be36e1d0cdb8926fb734b0477fb146631 (diff)
downloadunity-tools-476e550b0909012e594f2163d95565c42119a18b.tar
unity-tools-476e550b0909012e594f2163d95565c42119a18b.tar.bz2
unity-tools-476e550b0909012e594f2163d95565c42119a18b.tar.zst
add tool script for debugging parentnig
Diffstat (limited to 'exporter/src/bin/scenetree.rs')
-rw-r--r--exporter/src/bin/scenetree.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/exporter/src/bin/scenetree.rs b/exporter/src/bin/scenetree.rs
new file mode 100644
index 0000000..66276df
--- /dev/null
+++ b/exporter/src/bin/scenetree.rs
@@ -0,0 +1,29 @@
+use std::{env::args, fs::File, io::BufReader};
+use unity_tools::{assetbundle::AssetBundle, classes::transform::Transform};
+
+fn main() -> anyhow::Result<()> {
+ env_logger::init_from_env("LOG");
+ let file = BufReader::new(File::open(args().nth(1).unwrap()).unwrap());
+ let mut bundle = AssetBundle::open(file, "samples")?;
+
+ println!("digraph {{");
+ for ob in bundle.all_toplevel_of_class("Transform") {
+ let i = ob.path_id;
+ let tr = ob.load(&mut bundle)?.parse::<Transform>()?;
+
+ let mut name = "(no gameobject)".to_string();
+ if !tr.gameobject.is_null() {
+ let go = tr.gameobject.load(&mut bundle)?;
+ name = go.name;
+ }
+ println!("n{i} [label={name:?}];");
+
+ if !tr.father.is_null() {
+ let j = tr.father.path_id;
+ println!("n{j} -> n{i};")
+ }
+ }
+ println!("}}");
+
+ Ok(())
+}