//! Parsers and mesh builders for `.moc3` binary model data.
//!
//! The types in this module expose the pieces needed to build drawable meshes
//! from model parameters: canvas information, ids, keyforms, deformers, glues,
//! parts, and draw-order groups. Most applications should prefer
//! [`crate::assets::load_model_runtime`], while renderer and tooling authors may
//! use these building blocks directly.

mod art_meshes;
mod canvas;
mod compose;
mod counts;
mod deformers;
mod draw_order_groups;
mod drawable;
mod glues;
mod header;
mod ids;
mod keyform_bindings;
mod keyforms;
mod mesh_build;
mod offscreen;
mod offsets;
mod parse;
mod parts;

pub use art_meshes::{Moc3ArtMeshInfo, Moc3ArtMeshes};
pub use canvas::Moc3CanvasInfo;
pub use counts::Moc3CountInfo;
pub use deformers::Moc3Deformers;
pub use draw_order_groups::Moc3DrawOrderGroups;
pub use drawable::{
    Moc3DrawableBlendMode, Moc3DrawableMesh, Moc3DrawableVertex, build_moc3_drawable_mesh,
    build_moc3_drawable_meshes,
};
pub use glues::Moc3Glues;
pub use header::{Endianness, Moc3Header, Moc3Version};
pub use ids::Moc3Ids;
pub use keyform_bindings::Moc3KeyformBindings;
pub use keyforms::{Moc3ArtMeshKeyformInfo, Moc3ArtMeshKeyforms};
pub(crate) use mesh_build::{
    Moc3MeshUpdateScratch, update_moc3_drawable_meshes_with_parameters_offscreen_and_part_opacities,
};
pub use mesh_build::{
    build_moc3_drawable_meshes_for_default_pose,
    build_moc3_drawable_meshes_for_default_pose_with_offscreen_state,
    build_moc3_drawable_meshes_with_parameters,
    build_moc3_drawable_meshes_with_parameters_and_offscreen_state,
    build_moc3_drawable_meshes_with_parameters_offscreen_and_part_opacities,
};
pub use offscreen::Moc3OffscreenInfo;
pub use offsets::Moc3SectionOffsets;
pub use parts::Moc3Parts;
