aboutsummaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/json.rs4
-rw-r--r--src/bin/textures.rs4
-rw-r--r--src/bin/yaml.rs22
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),
+ _ => (),
+ }
+}