diff options
author | metamuffin <metamuffin@disroot.org> | 2025-05-14 21:04:04 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-05-14 21:04:04 +0200 |
commit | 476e550b0909012e594f2163d95565c42119a18b (patch) | |
tree | d29ac018831580a8b278169a7fbc52680429f15a /exporter/src/bin | |
parent | 65adfb4be36e1d0cdb8926fb734b0477fb146631 (diff) | |
download | unity-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')
-rw-r--r-- | exporter/src/bin/scenetree.rs | 29 |
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(()) +} |