const _: () = assert!(
boxdd_sys::IS_DOUBLE_PRECISION == cfg!(feature = "double-precision"),
"boxdd and boxdd-sys precision features must be enabled through the same dependency edge"
);
pub mod body;
pub mod collision;
pub mod contact;
pub mod debug_draw;
pub mod dynamic_tree;
pub mod error;
pub mod events;
pub mod filter;
pub mod id;
pub mod joints;
pub mod prelude;
pub mod query;
pub mod recording;
pub mod replay;
pub mod shapes;
pub mod snapshot;
pub mod tuning;
pub mod types;
pub mod world;
pub mod world_extras;
pub mod core {
pub(crate) mod callback_state;
pub(crate) mod ffi_vec;
pub mod foundation;
pub(crate) mod identity_registry;
pub(crate) mod length_scale;
#[cfg(not(target_arch = "wasm32"))]
pub(crate) mod material_mix_registry;
pub mod math;
pub(crate) mod native_defaults;
pub(crate) mod user_data;
pub(crate) mod world_core;
}
pub use body::{Body, BodyBuilder, BodyDef, BodyType, MAX_BODY_NAME_BYTES};
pub use collision::{
CastOutput, DistanceInput, DistanceOutput, LocalManifold, LocalManifoldPoint,
MAX_LOCAL_MANIFOLD_POINTS, MAX_SHAPE_PROXY_POINTS, SegmentDistanceResult, ShapeCastInput,
ShapeCastPairInput, ShapeProxy, SimplexCache, Sweep, ToiInput, ToiOutput, ToiState,
collide_capsule_and_circle, collide_capsules, collide_chain_segment_and_capsule,
collide_chain_segment_and_circle, collide_chain_segment_and_polygon, collide_circles,
collide_polygon_and_capsule, collide_polygon_and_circle, collide_polygons,
collide_segment_and_capsule, collide_segment_and_circle, collide_segment_and_polygon,
segment_distance, shape_cast, shape_distance, time_of_impact,
};
pub use core::foundation::{
Foundation, FoundationActivity, FoundationActivityError, FoundationAdapterIdentityField,
FoundationConfig, FoundationDiagnostics, FoundationInitError,
};
#[cfg(not(target_arch = "wasm32"))]
pub use core::foundation::{FoundationAssertHook, FoundationLogHook};
#[cfg(feature = "glam")]
#[cfg_attr(docsrs, doc(cfg(feature = "glam")))]
pub use core::math::RotFromGlamError;
#[cfg(feature = "mint")]
#[cfg_attr(docsrs, doc(cfg(feature = "mint")))]
pub use core::math::RotFromMintError;
#[cfg(feature = "glam")]
#[cfg_attr(docsrs, doc(cfg(feature = "glam")))]
pub use core::math::TransformFromGlamError;
#[cfg(feature = "mint")]
#[cfg_attr(docsrs, doc(cfg(feature = "mint")))]
pub use core::math::TransformFromMintError;
pub use core::math::{
HASH_INIT, Rot, Transform, Version, allocated_byte_count, atan2, compute_cos_sin, hash_bytes,
is_valid_float, milliseconds_and_reset, milliseconds_since, rotation_between_unit_vectors,
ticks, version, yield_now,
};
#[cfg(not(target_arch = "wasm32"))]
pub use debug_draw::DebugDraw;
pub use debug_draw::{DebugDrawCmd, DebugDrawOptions, HexColor};
pub use dynamic_tree::{
DynamicTree, TreeBoxCastInput, TreeCastControl, TreeProxyId, TreeRayCastInput, TreeStats,
};
pub use error::{Error, Result};
pub use events::{
BodyEvents, BodyMoveEvent, CompletedStep, ContactBeginTouchEvent, ContactEndTouchEvent,
ContactEvents, ContactEventsView, ContactHitEvent, JointEvent, JointEvents,
SensorBeginTouchEvent, SensorEndTouchEvent, SensorEvents, SensorEventsView, StepEventsSnapshot,
};
pub use filter::Filter;
pub use joints::{
ConstraintTuning, DistanceJoint, DistanceJointBuilder, DistanceJointDef, FilterJoint,
FilterJointBuilder, FilterJointDef, Joint, JointBase, JointType, MotorJoint, MotorJointBuilder,
MotorJointDef, PrismaticJoint, PrismaticJointBuilder, PrismaticJointDef, RevoluteJoint,
RevoluteJointBuilder, RevoluteJointDef, WeldJoint, WeldJointBuilder, WeldJointDef, WheelJoint,
WheelJointBuilder, WheelJointDef,
};
pub use query::{
Aabb, ClosestRayCastResult, CollisionPlane, MoverPlaneResult, Plane, PlaneSolverResult, Query,
QueryFilter, RayResult, clip_vector, solve_planes,
};
#[cfg(not(target_arch = "wasm32"))]
pub use query::{MoverQueryBuffer, RayQueryBuffer, ShapeQueryBuffer};
pub use recording::{MixerId, MixerIdentities, Recording, RecordingLimits, RecordingSession};
pub use replay::{
ReplayBodyView, ReplayConfig, ReplayEpoch, ReplayInfo, ReplayKeyframePolicy,
ReplayKeyframeState, ReplayPlayer, ReplayQueryHitView, ReplayQueryKind, ReplayQueryView,
ReplayStatus, ReplayView,
};
pub use shapes::chain::{Chain, ChainDef, ChainDefBuilder, ChainDefMaterialLayout};
pub use shapes::{
Capsule, ChainSegment, Circle, MAX_POLYGON_VERTICES, Polygon, Segment, Shape, ShapeDef,
ShapeDefBuilder, ShapeType, SurfaceMaterial,
};
pub use snapshot::{PreparedSnapshotRestore, Snapshot, SnapshotRestore};
pub use types::{
BodyId, ChainId, ContactData, ContactId, JointId, MAX_MANIFOLD_POINTS, Manifold, ManifoldPoint,
MassData, MotionLocks, Position, PositionToLocalError, ShapeId, Vec2, WorldCastOutput,
WorldScalar, WorldTransform, WorldTransformFromInteropError,
};
pub use world::{
B2_MAX_WORKERS, Counters, MaterialMixInput, Profile, WorkerCount, World, WorldBuilder,
WorldCapacity, WorldDef,
};
pub use world_extras::ExplosionDef;