feat: allow adding file info
This commit is contained in:
parent
8f5c55df10
commit
cbc0f4246d
|
@ -110,7 +110,14 @@ impl MpdEncoder {
|
||||||
Ok(())
|
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)]
|
#[derive(binrw::BinRead)]
|
||||||
#[br(little)]
|
#[br(little)]
|
||||||
struct RawTextureHeader {
|
struct RawTextureHeader {
|
||||||
|
@ -235,7 +242,7 @@ impl MpdEncoder {
|
||||||
.insert(file_info);
|
.insert(file_info);
|
||||||
|
|
||||||
if contained {
|
if contained {
|
||||||
return Ok(());
|
return Ok(hash.to_vec());
|
||||||
}
|
}
|
||||||
|
|
||||||
// write the headers
|
// write the headers
|
||||||
|
@ -263,14 +270,14 @@ impl MpdEncoder {
|
||||||
// seek past the data
|
// seek past the data
|
||||||
self.writer.seek(SeekFrom::Start(after_data)).map_err(Error::Io)?;
|
self.writer.seek(SeekFrom::Start(after_data)).map_err(Error::Io)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(hash.to_vec())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn alignment_necessary(size: usize) -> usize {
|
fn alignment_necessary(size: usize) -> usize {
|
||||||
ALIGN - (size % ALIGN)
|
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)]
|
#[derive(binrw::BinRead)]
|
||||||
#[br(little)]
|
#[br(little)]
|
||||||
struct RawModelHeader {
|
struct RawModelHeader {
|
||||||
|
@ -431,7 +438,7 @@ impl MpdEncoder {
|
||||||
.insert(file_info);
|
.insert(file_info);
|
||||||
|
|
||||||
if contained {
|
if contained {
|
||||||
return Ok(());
|
return Ok(hash.to_vec());
|
||||||
}
|
}
|
||||||
|
|
||||||
// write the file header
|
// write the file header
|
||||||
|
@ -452,7 +459,7 @@ impl MpdEncoder {
|
||||||
// now seek past the data
|
// now seek past the data
|
||||||
self.writer.seek(SeekFrom::Start(after_data)).map_err(Error::Io)?;
|
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>> {
|
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
|
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
|
// store position before doing anything
|
||||||
let pos = self.writer.stream_position().map_err(Error::Io)?;
|
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)?;
|
self.writer.seek(SeekFrom::Start(pos)).map_err(Error::Io)?;
|
||||||
|
|
||||||
if contained {
|
if contained {
|
||||||
return Ok(());
|
return Ok(hash.to_vec());
|
||||||
}
|
}
|
||||||
|
|
||||||
// add headers
|
// add headers
|
||||||
|
@ -546,7 +553,7 @@ impl MpdEncoder {
|
||||||
// seek past data
|
// seek past data
|
||||||
self.writer.seek(SeekFrom::Start(after_blocks)).map_err(Error::Io)?;
|
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> {
|
fn align_to(&mut self, n: usize) -> Result<usize> {
|
||||||
|
|
Loading…
Reference in New Issue