diff options
Diffstat (limited to 'src/bin')
-rw-r--r-- | src/bin/json.rs | 4 | ||||
-rw-r--r-- | src/bin/textures.rs | 4 | ||||
-rw-r--r-- | src/bin/yaml.rs | 22 |
3 files changed, 26 insertions, 4 deletions
diff --git a/src/bin/json.rs b/src/bin/json.rs index 4611530..b969beb 100644 --- a/src/bin/json.rs +++ b/src/bin/json.rs @@ -3,7 +3,9 @@ use std::{ fs::File, io::{BufReader, Seek, SeekFrom, stdout}, }; -use unity_tools::{object::read_value, serialized_file::read_serialized_file, unityfs::UnityFS}; +use unity_tools::{ + object::read::read_value, serialized_file::read_serialized_file, unityfs::UnityFS, +}; fn main() -> anyhow::Result<()> { env_logger::init_from_env("LOG"); diff --git a/src/bin/textures.rs b/src/bin/textures.rs index 5db888e..d85f494 100644 --- a/src/bin/textures.rs +++ b/src/bin/textures.rs @@ -6,8 +6,8 @@ use std::{ io::{BufReader, Read, Seek, SeekFrom}, }; use unity_tools::{ - classes::{FromValue, texture2d::Texture2D}, - object::read_value, + classes::texture2d::Texture2D, + object::{parser::FromValue, read::read_value}, serialized_file::read_serialized_file, unityfs::UnityFS, }; diff --git a/src/bin/yaml.rs b/src/bin/yaml.rs index e541c62..e3b1df8 100644 --- a/src/bin/yaml.rs +++ b/src/bin/yaml.rs @@ -1,10 +1,12 @@ +use serde_yml::Value; use std::{ env::args, fs::File, io::{BufReader, Seek, SeekFrom, stdout}, }; use unity_tools::{ - classes::HValue, object::read_value, serialized_file::read_serialized_file, unityfs::UnityFS, + classes::HValue, object::read::read_value, serialized_file::read_serialized_file, + unityfs::UnityFS, }; fn main() -> anyhow::Result<()> { @@ -34,6 +36,10 @@ fn main() -> anyhow::Result<()> { } let value = read_value(typetree, file.endianness, &mut cab)?; let hvalue = HValue::from_value(value)?; + + let mut hvalue = serde_yml::to_value(hvalue)?; + reduce_large_arrays(&mut hvalue); + serde_yml::to_writer(stdout(), &hvalue).unwrap(); println!() } @@ -42,3 +48,17 @@ fn main() -> anyhow::Result<()> { Ok(()) } + +fn reduce_large_arrays(v: &mut Value) { + match v { + Value::Sequence(values) => { + values.iter_mut().for_each(reduce_large_arrays); + while values.len() > 32 { + values.pop(); + } + } + Value::Mapping(mapping) => mapping.map.values_mut().for_each(reduce_large_arrays), + Value::Tagged(tagged_value) => reduce_large_arrays(&mut tagged_value.value), + _ => (), + } +} |