use std::{ env::{args, var}, 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")?; let draw_children = var("DRAW_CHILDREN").is_ok(); println!("digraph {{"); for ob in bundle.all_toplevel_of_class("Transform") { let i = ob.path_id; let tr = ob.load(&mut bundle)?.parse::()?; 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() { assert_eq!(tr.father.file_id, 0); let j = tr.father.path_id; println!("n{j} -> n{i};") } if draw_children { for ch in tr.children { assert_eq!(ch.file_id, 0); let j = ch.path_id; println!("n{i} -> n{j} [color=red];") } } } println!("}}"); Ok(()) }