//! Dump a fingerprint of every decoded index run, so two decoder settings can be //! diffed exactly. Usage: index_hash_dump use sylpheed_formats::mesh::Xbg7Model; fn main() { let dir = std::env::args().nth(1).expect("resource3d dir"); let mut files: Vec<_> = std::fs::read_dir(&dir) .unwrap() .flatten() .map(|e| e.path()) .filter(|p| p.extension().and_then(|s| s.to_str()) == Some("xpr")) .collect(); files.sort(); for f in &files { let Ok(bytes) = std::fs::read(f) else { continue }; let w = f.file_name().unwrap().to_string_lossy().to_string(); for m in Xbg7Model::stage_models(&bytes) { for (k, sm) in m.meshes.iter().enumerate() { let mut h = 1469598103934665603u64; for i in &sm.indices { h = (h ^ *i as u64).wrapping_mul(1099511628211); } println!( "{w} {} {k} vb={:?} n={} h={h:016x}", m.name, sm.vbuf_offset, sm.indices.len() ); } } } }