use crate::{Result, encode_voxj_object_smallest, voxj_palette_cell_counts};
use voxj::{VoxjCodecFile, VoxjSerdeFile, VoxjSerdeMain};
pub fn encode_voxj_file_smallest(file: &VoxjCodecFile) -> Result<VoxjSerdeFile> {
let palettes = &file.main.palettes;
let objects = file
.main
.objects
.iter()
.map(|object| {
let cell_counts = voxj_palette_cell_counts(&object.palette_refs, palettes)?;
encode_voxj_object_smallest(object, &cell_counts)
})
.collect::<Result<Vec<_>>>()?;
Ok(VoxjSerdeFile {
version: file.version,
main: VoxjSerdeMain {
objects,
palettes: palettes.clone(),
hierarchy_nodes: file.main.hierarchy_nodes.clone(),
root_hierarchy_nodes: file.main.root_hierarchy_nodes.clone(),
ext: file.main.ext.clone(),
},
})
}