diff options
Diffstat (limited to 'src/bin/gltf.rs')
-rw-r--r-- | src/bin/gltf.rs | 57 |
1 files changed, 3 insertions, 54 deletions
diff --git a/src/bin/gltf.rs b/src/bin/gltf.rs index 07adec6..323b6d2 100644 --- a/src/bin/gltf.rs +++ b/src/bin/gltf.rs @@ -1,16 +1,7 @@ #![feature(array_chunks)] use anyhow::anyhow; -use std::{ - env::args, - fs::{File, create_dir_all}, - io::{BufReader, BufWriter, Seek, SeekFrom, Write}, -}; -use unity_tools::{ - classes::mesh::{Mesh, VertexDataChannel}, - object::{parser::FromValue, read::read_value}, - serialized_file::SerializedFile, - unityfs::UnityFS, -}; +use std::{env::args, fs::File, io::BufReader}; +use unity_tools::{serialized_file::SerializedFile, unityfs::UnityFS}; fn main() -> anyhow::Result<()> { env_logger::init_from_env("LOG"); @@ -18,9 +9,6 @@ fn main() -> anyhow::Result<()> { let mut fs = UnityFS::open(file())?; // let mut fs2 = UnityFS::open(file())?; - let mut i = 0; - create_dir_all("/tmp/a").unwrap(); - let cabfile = fs .find_main_file() .ok_or(anyhow!("no CAB file found"))? @@ -28,46 +16,7 @@ fn main() -> anyhow::Result<()> { let mut cab = fs.read(&cabfile)?; let file = SerializedFile::read(&mut cab)?; - for ob in file.objects { - cab.seek(SeekFrom::Start(ob.data_offset))?; - let typetree = if ob.type_id < 0 { - unimplemented!() - } else { - &file.types[ob.type_id as usize] - }; - if let Some(typetree) = &typetree.type_tree { - if typetree.type_string != "Mesh" { - continue; - } - let value = read_value(typetree, file.endianness, &mut cab)?; - let mesh = Mesh::from_value(value).unwrap(); - // if mesh.stream_data.len() == 0 { - // let ress = ress.as_mut().unwrap(); - // ress.seek(SeekFrom::Start(mesh.stream_data.offset))?; - // ress.by_ref() - // .take(mesh.stream_data.size as u64) - // .read_to_end(&mut mesh.)?; - // } - let mut obj = BufWriter::new(File::create(format!( - "/tmp/a/{}_{i}.obj", - mesh.name.replace("/", "-").replace(".", "-") - ))?); - - let (pos_dims, positions) = mesh - .vertex_data - .read_channel(VertexDataChannel::Position) - .unwrap(); - assert_eq!(pos_dims, 3); - - for [x, y, z] in positions.array_chunks() { - writeln!(obj, "v {x} {y} {z}")?; - } - for [a, b, c] in mesh.read_indecies() { - writeln!(obj, "f {} {} {}", a + 1, b + 1, c + 1)?; - } - i += 1; - } - } + for _ob in file.objects {} Ok(()) } |