Skip to main content

parsing/
parsing.rs

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    // puppet.save(format!("{}_serialized.inx", path))?;
25
26    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}