feat: allow adding file info
This commit is contained in:
parent
8f5c55df10
commit
cbc0f4246d
|
@ -110,7 +110,14 @@ impl MpdEncoder {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn add_texture_file(&mut self, file_info: FileInfo, size: usize, mut data: impl Read) -> Result<()> {
|
||||
pub fn add_file_info(&mut self, hash: &[u8], file_info: FileInfo) {
|
||||
self.hashes.entry(hash.to_vec())
|
||||
.and_modify(|info| {
|
||||
info.files.insert(file_info);
|
||||
});
|
||||
}
|
||||
|
||||
pub fn add_texture_file(&mut self, file_info: FileInfo, size: usize, mut data: impl Read) -> Result<Vec<u8>> {
|
||||
#[derive(binrw::BinRead)]
|
||||
#[br(little)]
|
||||
struct RawTextureHeader {
|
||||
|
@ -235,7 +242,7 @@ impl MpdEncoder {
|
|||
.insert(file_info);
|
||||
|
||||
if contained {
|
||||
return Ok(());
|
||||
return Ok(hash.to_vec());
|
||||
}
|
||||
|
||||
// write the headers
|
||||
|
@ -263,14 +270,14 @@ impl MpdEncoder {
|
|||
// seek past the data
|
||||
self.writer.seek(SeekFrom::Start(after_data)).map_err(Error::Io)?;
|
||||
|
||||
Ok(())
|
||||
Ok(hash.to_vec())
|
||||
}
|
||||
|
||||
fn alignment_necessary(size: usize) -> usize {
|
||||
ALIGN - (size % ALIGN)
|
||||
}
|
||||
|
||||
pub fn add_model_file(&mut self, file_info: FileInfo, size: usize, mut data: impl Read) -> Result<()> {
|
||||
pub fn add_model_file(&mut self, file_info: FileInfo, size: usize, mut data: impl Read) -> Result<Vec<u8>> {
|
||||
#[derive(binrw::BinRead)]
|
||||
#[br(little)]
|
||||
struct RawModelHeader {
|
||||
|
@ -431,7 +438,7 @@ impl MpdEncoder {
|
|||
.insert(file_info);
|
||||
|
||||
if contained {
|
||||
return Ok(());
|
||||
return Ok(hash.to_vec());
|
||||
}
|
||||
|
||||
// write the file header
|
||||
|
@ -452,7 +459,7 @@ impl MpdEncoder {
|
|||
// now seek past the data
|
||||
self.writer.seek(SeekFrom::Start(after_data)).map_err(Error::Io)?;
|
||||
|
||||
Ok(())
|
||||
Ok(hash.to_vec())
|
||||
}
|
||||
|
||||
fn write_lod(&mut self, lod: usize, lod_count: u8, offsets: &[u32], sizes: &[u32], mut data: impl Read, hasher: &mut impl Digest) -> Result<Vec<DatStdFileBlockInfos>> {
|
||||
|
@ -486,7 +493,7 @@ impl MpdEncoder {
|
|||
num_blocks
|
||||
}
|
||||
|
||||
pub fn add_standard_file(&mut self, file_info: FileInfo, size: usize, data: impl Read) -> Result<()> {
|
||||
pub fn add_standard_file(&mut self, file_info: FileInfo, size: usize, data: impl Read) -> Result<Vec<u8>> {
|
||||
// store position before doing anything
|
||||
let pos = self.writer.stream_position().map_err(Error::Io)?;
|
||||
|
||||
|
@ -524,7 +531,7 @@ impl MpdEncoder {
|
|||
self.writer.seek(SeekFrom::Start(pos)).map_err(Error::Io)?;
|
||||
|
||||
if contained {
|
||||
return Ok(());
|
||||
return Ok(hash.to_vec());
|
||||
}
|
||||
|
||||
// add headers
|
||||
|
@ -546,7 +553,7 @@ impl MpdEncoder {
|
|||
// seek past data
|
||||
self.writer.seek(SeekFrom::Start(after_blocks)).map_err(Error::Io)?;
|
||||
|
||||
Ok(())
|
||||
Ok(hash.to_vec())
|
||||
}
|
||||
|
||||
fn align_to(&mut self, n: usize) -> Result<usize> {
|
||||
|
|
Loading…
Reference in New Issue