ttmp-rs/src/util.rs

23 lines
572 B
Rust

use std::io::{Cursor, Read};
use sqpack::binrw::BinRead;
use sqpack::binrw::meta::ReadEndian;
use crate::error::{Error, Result};
pub const MAX_MODEL_LODS: usize = 3;
pub const MAX_TEXTURE_LODS: usize = 3;
pub fn read_struct<S: BinRead + ReadEndian, T: Read>(mut reader: T, buf: &mut [u8]) -> Result<S>
where S::Args: Default,
{
let size = std::mem::size_of::<S>();
if size > buf.len() {
panic!();
}
reader.read_exact(&mut buf[..size]).map_err(Error::Io)?;
S::read(&mut Cursor::new(&buf[..size]))
.map_err(Error::SqPackError)
}