mod body;
mod collider;
mod constant;
mod constraint;
mod counter;
mod decode;
mod param;
mod query;
mod row;
mod soft;
mod surface;
mod records {
include!(concat!(env!("OUT_DIR"), "/records.rs"));
}
mod wgsl;
pub const RECORDS_WGSL: &str = include_str!("../abi/records.wgsl");
pub trait StreamRecord {
const WGSL: &'static str;
}
impl StreamRecord for u32 {
const WGSL: &'static str = "u32";
}
impl StreamRecord for f32 {
const WGSL: &'static str = "f32";
}
impl StreamRecord for [f32; 4] {
const WGSL: &'static str = "vec4f";
}
pub use constant::{
BODY_CCD, BODY_KINEMATIC, COLLIDER_EVENT_BEGIN_END, COLLIDER_EVENT_PERSIST, COLLIDER_SENSOR,
CONSTRAINT_ACCUMULATOR_SLOTS, CONSTRAINT_BALL, CONSTRAINT_CONE, CONSTRAINT_DISABLE_COLLISIONS,
CONSTRAINT_DISTANCE, CONSTRAINT_FIXED, CONSTRAINT_GEAR, CONSTRAINT_HAS_BREAK,
CONSTRAINT_HAS_LIMIT, CONSTRAINT_HAS_MOTOR, CONSTRAINT_HAS_SWING, CONSTRAINT_IS_SPRING,
CONSTRAINT_PRISMATIC, CONSTRAINT_PULLEY, CONSTRAINT_REVOLUTE, CONSTRAINT_SIXDOF,
CONSTRAINT_WARM_START, CONTACT_ANNOUNCED, CONTACT_MAX_POINTS, DOF_COUNT, DOF_DRIVEN,
DOF_LIMIT_ROW_BASE, DOF_LIMITED, DOF_LOCKED, EDIT_ANGULAR_IMPULSE, EDIT_FORCE,
EDIT_FORCE_AT_POINT, EDIT_IMPULSE, EDIT_IMPULSE_AT_POINT, EDIT_PATCH, EDIT_SLEEP, EDIT_TORQUE,
EDIT_WAKE, ELEMENT_AREA, ELEMENT_BEND, ELEMENT_BROKEN, ELEMENT_DISTANCE, ELEMENT_KIND_MASK,
ELEMENT_PARTICLES, ELEMENT_ROLE_BITS, ELEMENT_ROLE_MASK, ELEMENT_VOLUME, ENTRY_AWAKE,
ENTRY_CELL_MASK, ENTRY_CELL_SHIFT, ENTRY_CELLS_PER_PARTICLE, ENTRY_INDEX_BITS,
ENTRY_INDEX_MASK, ENTRY_KIND_COLLIDER, ENTRY_KIND_MASK, ENTRY_KIND_PARTICLE, ENTRY_KIND_SHIFT,
ENTRY_MOBILE, ENTRY_PRIMARY, EVENT_BEGIN, EVENT_END, EVENT_PERSIST, FEATURE_CLIP, FEATURE_EDGE,
FEATURE_FACE, FEATURE_FACE_BIT, FEATURE_FIELD_BITS, FEATURE_FIELD_MASK, FEATURE_INDEX_LIMIT,
FEATURE_KIND_MASK, FEATURE_POINT, FEATURE_TRIANGLE, FEATURE_TRIANGLE_MASK,
FEATURE_TRIANGLE_SIDE, FEATURE_VERTEX, FILTER_IGNORE_KINEMATIC, FILTER_IGNORE_SENSORS,
FILTER_IGNORE_SLEEPING, FILTER_IGNORE_STATIC, ISLAND_WAKE, MAX_CELLS_PER_AXIS,
MAX_CELLS_PER_COLLIDER, MAX_HITS_PER_QUERY, NO_BODY, NO_COLLISION_FILTER, NO_HIT, NO_SLOT,
NO_SURFACE, NO_TRIANGLE, OVERRIDE_SLEEP_ANGULAR, OVERRIDE_SLEEP_LINEAR, PATCH_ANGULAR_VELOCITY,
PATCH_ORIENTATION, PATCH_POSITION, PATCH_VELOCITY, QUERY_CONVEX, QUERY_CUBOID, QUERY_POINT,
QUERY_RAY, QUERY_SPHERE, QUERY_SWEEP, SHAPE_CAPSULE, SHAPE_CUBOID, SHAPE_CYLINDER,
SHAPE_HEIGHTFIELD, SHAPE_HULL, SHAPE_MESH, SHAPE_NONE, SHAPE_PLANE, SHAPE_SPHERE,
SHAPE_TRIANGLE, SOLVER_BLOCK_CONSTRAINT, SOLVER_BLOCK_CONTACT, SOLVER_DELTA_WORDS, dof_driven,
dof_limited, dof_locked, set_dof_driven, set_dof_limited, set_dof_locked,
};
pub use counter::device::{
COUNTER_ACTIVE, COUNTER_ARCHIVED, COUNTER_BLOCKS, COUNTER_BREAKS, COUNTER_COARSE_ACTIVE,
COUNTER_CONTACTS, COUNTER_DEVICE_COUNT, COUNTER_ENTRIES, COUNTER_EVENTS, COUNTER_GRID_EXTENT,
COUNTER_GRID_LEVELS, COUNTER_GRID_SCALE, COUNTER_JOINTS, COUNTER_LIVE, COUNTER_PAIRS,
COUNTER_PARTICLE_REACH, COUNTER_RESTING, COUNTER_RESTING_GATHER, COUNTER_RESTING_INDEX,
COUNTER_RESTING_PENDING, COUNTER_SLEPT, COUNTER_SOFT_ACTIVE, COUNTER_SOFT_SLEPT,
COUNTER_SOFT_WOKE, COUNTER_SPILLOVER_ENTRIES, COUNTER_SPILLOVER_EVENTS, COUNTER_SPILLOVER_LIVE,
COUNTER_SPILLOVER_NEIGHBOURS, COUNTER_SPILLOVER_PAIRS, COUNTER_SPILLOVER_RESTING, COUNTER_WOKE,
COUNTER_WOKE_DEFERRED,
};
pub use counter::host::{
COUNTER_BODIES, COUNTER_BODY_EDITS, COUNTER_BODY_MOVES, COUNTER_COLLIDERS,
COUNTER_CONSTRAINT_COMMANDS, COUNTER_CONSTRAINT_MOVES, COUNTER_CONSTRAINTS,
};
pub use counter::{COUNTER_COUNT, COUNTER_STRIDE, Counters, DeclaredCounters};
pub use decode::decode;
pub use param::{Count, FrameCounts, RowStreams};
pub use records::*;
pub use soft::{SoftAttachmentInit, SoftElementInit, SoftParticleInit};
pub use wgsl::constants_wgsl;