voxj_codec/
encode_voxj_file_smallest.rs1use crate::{Result, encode_voxj_object_smallest, voxj_palette_cell_counts};
2use voxj::{VoxjCodecFile, VoxjSerdeFile, VoxjSerdeMain};
3
4pub fn encode_voxj_file_smallest(file: &VoxjCodecFile) -> Result<VoxjSerdeFile> {
13 let palettes = &file.main.palettes;
14 let objects = file
15 .main
16 .objects
17 .iter()
18 .map(|object| {
19 let cell_counts = voxj_palette_cell_counts(&object.palette_refs, palettes)?;
20 encode_voxj_object_smallest(object, &cell_counts)
21 })
22 .collect::<Result<Vec<_>>>()?;
23 Ok(VoxjSerdeFile {
24 version: file.version,
25 main: VoxjSerdeMain {
26 objects,
27 palettes: palettes.clone(),
28 hierarchy_nodes: file.main.hierarchy_nodes.clone(),
29 root_hierarchy_nodes: file.main.root_hierarchy_nodes.clone(),
30 ext: file.main.ext.clone(),
31 },
32 })
33}