aboutsummaryrefslogtreecommitdiff
path: root/src/bin/json.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-10 20:45:18 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-10 20:45:18 +0100
commit30bf5e07e52142a154a5660574213e59e0363ada (patch)
treea6a619a033269ab76650a820826255acafaa9b6c /src/bin/json.rs
parent42a5916cf742779d016eeefd1c59efbdfab64feb (diff)
downloadunity-tools-30bf5e07e52142a154a5660574213e59e0363ada.tar
unity-tools-30bf5e07e52142a154a5660574213e59e0363ada.tar.bz2
unity-tools-30bf5e07e52142a154a5660574213e59e0363ada.tar.zst
type graph
Diffstat (limited to 'src/bin/json.rs')
-rw-r--r--src/bin/json.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/bin/json.rs b/src/bin/json.rs
index a9685ed..3155b02 100644
--- a/src/bin/json.rs
+++ b/src/bin/json.rs
@@ -3,12 +3,17 @@ 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::{Value, read_value},
+ serialized_file::read_serialized_file,
+ unityfs::UnityFS,
+};
fn main() -> anyhow::Result<()> {
env_logger::init_from_env("LOG");
let file = BufReader::new(File::open(args().nth(1).unwrap())?);
let mut fs = UnityFS::open(file)?;
+ let filter = args().nth(2);
for node in fs.nodes().to_vec() {
if node.name.ends_with(".resource") || node.name.ends_with(".resS") {
@@ -26,6 +31,15 @@ fn main() -> anyhow::Result<()> {
&file.types[ob.type_id as usize]
};
let value = read_value(typetree.type_tree.as_ref().unwrap(), e, &mut cab)?;
+ if let Some(f) = &filter {
+ if let Value::Object { class, .. } = &value {
+ if class != f {
+ continue;
+ }
+ } else {
+ continue;
+ }
+ }
serde_json::to_writer(stdout(), &value.to_json()).unwrap();
println!()
}