#![cfg_attr(not(feature = "std"), no_std)]
#![forbid(unsafe_code)]
extern crate alloc;
#[cfg(all(not(feature = "std"), not(feature = "libm")))]
compile_error!(
"rebirth-ik needs either the `std` feature or the `libm` feature for floating point math"
);
pub mod analytic;
pub mod chain;
pub mod constraint;
pub mod math;
pub mod single;
pub mod skeleton;
pub mod solver;
pub use analytic::{one_bone, segment_rotation, two_bone};
pub use chain::{Chain, ChainTree};
pub use constraint::Constraint;
pub use math::{Quat, Vec3};
#[cfg(feature = "rayon")]
pub use single::solve_chains_par;
pub use single::{segment_lengths, solve_chain, ChainResult};
#[cfg(feature = "std")]
pub use single::{solve_chains, ChainBuf};
pub use skeleton::{Effector, EffectorFlags, Node, NodeId, Skeleton};
pub use solver::{Config, Fabrik, SolveInfo};