use core::hash::Hash;
pub(crate) use animation::{Animation, Keys, Mixed, Moves, Timeline, Track};
pub use clip::{Clip, NoClips};
pub use data::{MeshData, MeshError, Vertex};
pub use geometry::Geometry;
pub(crate) use geometry::{BoundingSphere, MeshPlane};
pub use instance::Instance;
pub(crate) use instance::{Draw, Placement};
pub use part::{NoParts, Part};
pub(crate) use pose::{Palette, Posing, Sampled, Skinned};
pub use primitives::{Cube, Plane, Quad, Sphere};
pub(crate) use rig::{Joint, Local, Placed, Rig, Weighted};
pub use set::Meshes;
pub use sheet::{Frame, Sheet};
pub use slot::Slot;
use crate::{Assets, Catalog, Transform};
pub trait Mesh<P: Part = NoParts, C: Clip = NoClips>: Catalog + Hash + Eq + Clone {
fn build(&self, assets: &Assets) -> MeshData<P, C>;
fn at<S: crate::SurfaceStyles>(self, transform: impl Into<Transform>) -> Instance<Self, S> {
Instance::new(self, transform.into())
}
}
mod animation;
mod clip;
mod data;
mod geometry;
mod instance;
mod part;
mod pose;
mod primitives;
mod rig;
mod set;
mod sheet;
mod slot;