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    println!("\nMeta: {:#?}", puppet.meta);
13
14    println!("\nNodes Hierarchy:");
15    let mut tab = String::new();
16    recursive_nodes(&puppet.nodes, &mut tab);
17
18    println!("\nParams: {}", puppet.params.len());
19
20    println!("\nAnimations: {}", puppet.animations.len());
21
22    // puppet.save(format!("{}_serialized.inx", path))?;
23
24    println!("\nDone: {:?}", time.elapsed());
25    Ok(())
26}
27
28fn recursive_nodes(node: &Node, tab: &mut String) {
29    tab.push_str("-");
30    println!(
31        "{tab}Node {}: {:?} - uuid: {} - z_sort: {}",
32        match &node.type_node {
33            NodeDataType::Part(_) => "Part",
34            NodeDataType::Composite(_) => "Composite",
35            NodeDataType::Mask(_) => "Mask",
36            NodeDataType::MeshGroup(_) => "MeshGroup",
37            NodeDataType::Camera(_) => "Camera",
38            NodeDataType::SimplePhysics(_) => "SimplePhysics",
39            NodeDataType::Generic => "Generic",
40        },
41        node.name,
42        node.uuid,
43        node.zsort
44    );
45    for child in &node.children {
46        recursive_nodes(child, tab);
47    }
48    tab.pop();
49}