dynamis-abi 0.7.0

Host to device record layouts, counters, and step parameters shared with WGSL
Documentation
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;