#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(all(not(feature = "std"), feature = "alloc"))]
extern crate alloc;
#[cfg(all(feature = "polygon2", not(any(feature = "std", feature = "alloc"))))]
compile_error!("feature \"polygon2\" requires either \"std\" (default) or \"alloc\" (for no_std builds).");
#[cfg(feature = "aabb2")]
pub mod aabb2;
#[cfg(feature = "aabb3")]
pub mod aabb3;
#[cfg(feature = "math")]
pub mod math;
#[cfg(feature = "math")]
pub mod numeric;
pub mod markers;
#[cfg(feature = "half_float")]
pub mod half_float;
#[cfg(feature = "mat2")]
pub mod mat2;
#[cfg(feature = "mat3")]
pub mod mat3;
#[cfg(feature = "mat4")]
pub mod mat4;
#[cfg(feature = "quat")]
pub mod quat;
#[cfg(feature = "rect2")]
pub mod rect2;
#[cfg(feature = "rect3")]
pub mod rect3;
#[cfg(feature = "scalar")]
pub mod scalar;
#[cfg(feature = "unit_vec")]
pub mod unit_vec;
#[cfg(feature = "vec2")]
pub mod vec2;
#[cfg(feature = "vec3")]
pub mod vec3;
#[cfg(feature = "vec4")]
pub mod vec4;
#[cfg(feature = "angle")]
pub mod angle;
#[cfg(feature = "geometry")]
pub mod geometry;
#[cfg(feature = "collision")]
pub mod collision;
#[cfg(all(feature = "polygon2", any(feature = "std", feature = "alloc")))]
pub mod polygon2;
#[cfg(all(feature = "spatial", any(feature = "std", feature = "alloc")))]
#[path = "spatial.rs"]
pub mod spatial;
#[cfg(feature = "mint")]
mod mint_conv;
#[cfg(feature = "aabb2")]
pub use aabb2::Aabb2;
#[cfg(feature = "aabb3")]
pub use aabb3::Aabb3;
pub use markers::{Local, Meters, Pixels, Screen, World};
pub type Real = f32;
#[cfg(feature = "unit_vec")]
pub use unit_vec::{UnitVec2, UnitVec3, UnitVec4};
#[cfg(feature = "half_float")]
pub use half_float::{Half, f16s_from_half_array, f32s_from_half_array, halfs_from_f16_array, halfs_from_f32_array};
#[cfg(any(feature = "std", feature = "alloc"))]
#[cfg(feature = "half_float")]
pub use half_float::{
f16s_from_half_slice,
f32s_from_half_slice,
halfs_from_f16_slice,
halfs_from_f32_slice,
};
#[cfg(feature = "mat2")]
pub use mat2::Mat2;
#[cfg(feature = "mat3")]
pub use mat3::Mat3;
#[cfg(feature = "mat4")]
pub use mat4::Mat4;
#[cfg(feature = "quat")]
pub use quat::Quat;
#[cfg(feature = "rect2")]
pub use rect2::Rect2;
#[cfg(feature = "rect3")]
pub use rect3::Rect3;
#[cfg(feature = "scalar")]
pub use scalar::{abs, approx_eq, clamp, is_finite, is_nan, max, min, sign, to_degrees, to_radians};
#[cfg(feature = "math")]
pub use numeric::GemathFloat;
#[cfg(feature = "vec2")]
pub use vec2::Vec2;
#[cfg(feature = "vec3")]
pub use vec3::Vec3;
#[cfg(feature = "vec4")]
pub use vec4::Vec4;
#[cfg(feature = "angle")]
pub use angle::{Degrees, Radians};
#[cfg(feature = "geometry")]
pub use geometry::{Capsule2, Capsule3, Circle, Obb2, Obb3, Plane, Ray2, Ray3, Segment2, Segment3, Sphere};
#[cfg(all(feature = "polygon2", any(feature = "std", feature = "alloc")))]
pub use polygon2::Polygon2;
#[cfg(feature = "collision")]
pub use collision::{
circle_aabb2_intersects,
circle_rect2_intersects,
ray2_circle_cast,
ray2_circle_intersect,
ray3_sphere_cast,
ray3_sphere_intersect,
RayHit2,
RayHit3,
segment2_circle_intersects,
segment2_intersection_point,
segment2_intersects,
segment3_sphere_intersects,
sphere_aabb3_intersects,
sphere_rect3_intersects,
};
#[cfg(all(feature = "spatial", any(feature = "std", feature = "alloc")))]
pub use spatial::{Bvh3, Quadtree2, UniformGrid2};