1use inochi2d_parser::prelude::*;
2
3fn main() -> std::io::Result<()> {
4 let time = std::time::Instant::now();
5
6 let path = std::env::args()
7 .nth(1)
8 .expect("\n ✦ Usage: parsing <.inx/.inp file>\n\n ✦ Example: parsing ArchChan.inx\n");
9
10 let puppet = Puppet::open(path)?;
11
12 let time = time.elapsed();
13
14 println!("\nMeta: {:#?}", puppet.meta);
15
16 println!("\nNodes Hierarchy:");
17 let mut tab = String::new();
18 recursive_nodes(&puppet.nodes, &mut tab);
19
20 println!("\nParams: {}", puppet.params.len());
21
22 println!("\nAnimations: {}", puppet.animations.len());
23
24 println!("\nDone: {:?}", time);
27 Ok(())
28}
29
30fn recursive_nodes(node: &Node, tab: &mut String) {
31 tab.push('-');
32 println!(
33 "{tab}Node {}: {:?} - uuid: {} - z_sort: {}",
34 match &node.type_node {
35 NodeDataType::Part(_) => "Part",
36 NodeDataType::Composite(_) => "Composite",
37 NodeDataType::Mask(_) => "Mask",
38 NodeDataType::MeshGroup(_) => "MeshGroup",
39 NodeDataType::Camera(_) => "Camera",
40 NodeDataType::SimplePhysics(_) => "SimplePhysics",
41 NodeDataType::Generic => "Generic",
42 },
43 node.name,
44 node.uuid,
45 node.zsort
46 );
47 for child in &node.children {
48 recursive_nodes(child, tab);
49 }
50 tab.pop();
51}