pub mod r#box;
pub mod sphere;
use std::borrow::Cow;
use math::{Vector3, Vector4};
pub use r#box::BoxMeshGenerator;
pub use sphere::SphereMeshGenerator;
pub trait MeshGenerator: Send + Sync {
fn positions(&self) -> Cow<'_, [(f32, f32, f32)]>;
fn normals(&self) -> Cow<'_, [(f32, f32, f32)]>;
fn uvs(&self) -> Cow<'_, [(f32, f32)]>;
fn indices(&self) -> Cow<'_, [u32]>;
fn tangents(&self) -> Cow<'_, [Vector3]>;
fn bitangents(&self) -> Cow<'_, [Vector3]>;
fn colors(&self) -> Option<Cow<'_, [Vector4]>> {
None
}
fn meshlet_indices(&self) -> Option<Cow<'_, [u8]>> {
None
}
fn hash(&self) -> u64;
}