|
|
|
@ -15,10 +15,10 @@ use crate::tracking_reader::TrackingReader;
|
|
|
|
|
use crate::util::{MAX_MODEL_LODS, read_struct};
|
|
|
|
|
|
|
|
|
|
#[doc(hidden)]
|
|
|
|
|
pub trait WriteSeek: Write + Seek + Read {}
|
|
|
|
|
pub trait WriteSeek: Write + Seek {}
|
|
|
|
|
|
|
|
|
|
impl<T> WriteSeek for T
|
|
|
|
|
where T: Write + Seek + Read {}
|
|
|
|
|
where T: Write + Seek {}
|
|
|
|
|
|
|
|
|
|
pub struct TtmpExtractor<R> {
|
|
|
|
|
manifest: ManifestKind,
|
|
|
|
@ -128,7 +128,7 @@ impl<R: Read + Seek> TtmpExtractor<R> {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl<R: Read> TtmpExtractor<R> {
|
|
|
|
|
pub fn extract_one_into<W: Read + Write + Seek>(mod_file: &ModFile, mut reader: R, mut writer: W) -> Result<()> {
|
|
|
|
|
pub fn extract_one_into<W: Write + Seek>(mod_file: &ModFile, mut reader: R, mut writer: W) -> Result<()> {
|
|
|
|
|
let mut reader = TrackingReader::new(&mut reader);
|
|
|
|
|
let mut buf = [0; 4096];
|
|
|
|
|
let file = mod_file.file;
|
|
|
|
@ -175,7 +175,7 @@ impl<R: Read> TtmpExtractor<R> {
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn extract_model_file<T: Read, W: Read + Write + Seek>(info: &SqPackFileInfoHeader, mut reader: T, mut writer: W, buf: &mut [u8]) -> Result<()> {
|
|
|
|
|
fn extract_model_file<T: Read, W: Write + Seek>(info: &SqPackFileInfoHeader, mut reader: T, mut writer: W, buf: &mut [u8]) -> Result<()> {
|
|
|
|
|
let model_info: ModelBlock = read_struct(&mut reader, buf)?;
|
|
|
|
|
|
|
|
|
|
let block_counts = &model_info.block_num;
|
|
|
|
|