#![warn(missing_docs)]
#![warn(missing_debug_implementations)]
pub mod bounds;
pub mod dag;
pub mod dgc;
pub mod error;
pub mod local_triangle;
pub mod meshlet_builder;
pub mod obj;
pub mod simplify;
pub mod types;
pub mod validation;
pub use dag::{build_meshlet_dag, DagLevel, DagOptions, MeshletDag};
pub use dgc::{crc32c, read_dgc, write_dgc, DgcWriteOptions, FLAG_ZLIB, NO_PARENT};
pub use error::{DagError, DagResult};
pub use local_triangle::{pack_local_triangle, unpack_local_triangle};
pub use meshlet_builder::{build_meshlets, MeshletBuildResult};
pub use obj::{parse_obj, write_obj};
pub use simplify::{cluster_simplify, ClusterSimplifyResult};
pub use types::{
IndexedGeometry, MESHLET_BOUNDS_STRIDE, MESHLET_DESCRIPTOR_STRIDE, MESHLET_SCHEMA_VERSION,
};
pub use validation::validate_input;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn public_pipeline_smoke() {
let geometry = IndexedGeometry {
positions: vec![0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0],
indices: vec![0, 1, 2],
};
let dag = build_meshlet_dag(&geometry, &DagOptions::default()).expect("dag");
assert_eq!(dag.levels[0].meshlet_count, 1);
let bytes = write_dgc(&dag, &DgcWriteOptions::default()).expect("dgc");
let back = read_dgc(&bytes).expect("parse dgc");
assert_eq!(back.levels[0].indices, geometry.indices);
}
}