aboutsummaryrefslogtreecommitdiff
path: root/src/bin/textures.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/textures.rs')
-rw-r--r--src/bin/textures.rs18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/bin/textures.rs b/src/bin/textures.rs
index 00f3596..6cd9577 100644
--- a/src/bin/textures.rs
+++ b/src/bin/textures.rs
@@ -3,7 +3,7 @@ use log::warn;
use std::{
env::args,
fs::{File, create_dir_all},
- io::{BufReader, Read, Seek, SeekFrom},
+ io::{BufReader, Seek, SeekFrom},
};
use unity_tools::{
classes::texture2d::Texture2D,
@@ -27,14 +27,8 @@ fn main() -> anyhow::Result<()> {
.find(|n| !n.name.ends_with(".resource") && !n.name.ends_with(".resS"))
.ok_or(anyhow!("no CAB file found"))?
.to_owned();
- let ressfile = fs2
- .nodes()
- .iter()
- .find(|n| n.name.ends_with(".resS"))
- .cloned();
let mut cab = fs.read(&cabfile)?;
- let mut ress = ressfile.map(|p| fs2.read(&p)).transpose()?;
let file = read_serialized_file(&mut cab)?;
for ob in file.objects {
cab.seek(SeekFrom::Start(ob.data_offset))?;
@@ -48,13 +42,9 @@ fn main() -> anyhow::Result<()> {
continue;
}
let value = read_value(typetree, file.endianness, &mut cab)?;
- let mut texture = Texture2D::from_value(value).unwrap();
- if texture.image_data.len() == 0 {
- let ress = ress.as_mut().unwrap();
- ress.seek(SeekFrom::Start(texture.stream_data.offset))?;
- ress.by_ref()
- .take(texture.stream_data.size as u64)
- .read_to_end(&mut texture.image_data)?;
+ let mut texture = Texture2D::from_value(value)?;
+ if texture.image_data.is_empty() {
+ texture.image_data = texture.stream_data.read(&mut fs2)?;
}
let path = format!(
"/tmp/a/{}_{i}.png",