1mod body;
2mod collider;
3mod constant;
4mod constraint;
5mod counter;
6mod decode;
7mod param;
8mod query;
9mod row;
10mod soft;
11mod surface;
12
13mod records {
14 include!(concat!(env!("OUT_DIR"), "/records.rs"));
15}
16mod wgsl;
17
18pub const RECORDS_WGSL: &str = include_str!("../abi/records.wgsl");
19
20pub trait StreamRecord {
21 const WGSL: &'static str;
22}
23
24impl StreamRecord for u32 {
25 const WGSL: &'static str = "u32";
26}
27
28impl StreamRecord for f32 {
29 const WGSL: &'static str = "f32";
30}
31
32impl StreamRecord for [f32; 4] {
33 const WGSL: &'static str = "vec4f";
34}
35
36pub use constant::{
37 BODY_CCD, BODY_KINEMATIC, COLLIDER_EVENT_BEGIN_END, COLLIDER_EVENT_PERSIST, COLLIDER_SENSOR,
38 CONSTRAINT_ACCUMULATOR_SLOTS, CONSTRAINT_BALL, CONSTRAINT_CONE, CONSTRAINT_DISABLE_COLLISIONS,
39 CONSTRAINT_DISTANCE, CONSTRAINT_FIXED, CONSTRAINT_GEAR, CONSTRAINT_HAS_BREAK,
40 CONSTRAINT_HAS_LIMIT, CONSTRAINT_HAS_MOTOR, CONSTRAINT_HAS_SWING, CONSTRAINT_IS_SPRING,
41 CONSTRAINT_PRISMATIC, CONSTRAINT_PULLEY, CONSTRAINT_REVOLUTE, CONSTRAINT_SIXDOF,
42 CONSTRAINT_WARM_START, CONTACT_ANNOUNCED, CONTACT_MAX_POINTS, DOF_COUNT, DOF_DRIVEN,
43 DOF_LIMIT_ROW_BASE, DOF_LIMITED, DOF_LOCKED, EDIT_ANGULAR_IMPULSE, EDIT_FORCE,
44 EDIT_FORCE_AT_POINT, EDIT_IMPULSE, EDIT_IMPULSE_AT_POINT, EDIT_PATCH, EDIT_SLEEP, EDIT_TORQUE,
45 EDIT_WAKE, ELEMENT_AREA, ELEMENT_BEND, ELEMENT_BROKEN, ELEMENT_DISTANCE, ELEMENT_KIND_MASK,
46 ELEMENT_PARTICLES, ELEMENT_ROLE_BITS, ELEMENT_ROLE_MASK, ELEMENT_VOLUME, ENTRY_AWAKE,
47 ENTRY_CELL_MASK, ENTRY_CELL_SHIFT, ENTRY_CELLS_PER_PARTICLE, ENTRY_INDEX_BITS,
48 ENTRY_INDEX_MASK, ENTRY_KIND_COLLIDER, ENTRY_KIND_MASK, ENTRY_KIND_PARTICLE, ENTRY_KIND_SHIFT,
49 ENTRY_MOBILE, ENTRY_PRIMARY, EVENT_BEGIN, EVENT_END, EVENT_PERSIST, FEATURE_CLIP, FEATURE_EDGE,
50 FEATURE_FACE, FEATURE_FACE_BIT, FEATURE_FIELD_BITS, FEATURE_FIELD_MASK, FEATURE_INDEX_LIMIT,
51 FEATURE_KIND_MASK, FEATURE_POINT, FEATURE_TRIANGLE, FEATURE_TRIANGLE_MASK,
52 FEATURE_TRIANGLE_SIDE, FEATURE_VERTEX, FILTER_IGNORE_KINEMATIC, FILTER_IGNORE_SENSORS,
53 FILTER_IGNORE_SLEEPING, FILTER_IGNORE_STATIC, ISLAND_WAKE, MAX_CELLS_PER_AXIS,
54 MAX_CELLS_PER_COLLIDER, MAX_HITS_PER_QUERY, NO_BODY, NO_COLLISION_FILTER, NO_HIT, NO_SLOT,
55 NO_SURFACE, NO_TRIANGLE, OVERRIDE_SLEEP_ANGULAR, OVERRIDE_SLEEP_LINEAR, PATCH_ANGULAR_VELOCITY,
56 PATCH_ORIENTATION, PATCH_POSITION, PATCH_VELOCITY, QUERY_CONVEX, QUERY_CUBOID, QUERY_POINT,
57 QUERY_RAY, QUERY_SPHERE, QUERY_SWEEP, SHAPE_CAPSULE, SHAPE_CUBOID, SHAPE_CYLINDER,
58 SHAPE_HEIGHTFIELD, SHAPE_HULL, SHAPE_MESH, SHAPE_NONE, SHAPE_PLANE, SHAPE_SPHERE,
59 SHAPE_TRIANGLE, SOLVER_BLOCK_CONSTRAINT, SOLVER_BLOCK_CONTACT, SOLVER_DELTA_WORDS, dof_driven,
60 dof_limited, dof_locked, set_dof_driven, set_dof_limited, set_dof_locked,
61};
62pub use counter::device::{
63 COUNTER_ACTIVE, COUNTER_ARCHIVED, COUNTER_BLOCKS, COUNTER_BREAKS, COUNTER_COARSE_ACTIVE,
64 COUNTER_CONTACTS, COUNTER_DEVICE_COUNT, COUNTER_ENTRIES, COUNTER_EVENTS, COUNTER_GRID_EXTENT,
65 COUNTER_GRID_LEVELS, COUNTER_GRID_SCALE, COUNTER_JOINTS, COUNTER_LIVE, COUNTER_PAIRS,
66 COUNTER_PARTICLE_REACH, COUNTER_RESTING, COUNTER_RESTING_GATHER, COUNTER_RESTING_INDEX,
67 COUNTER_RESTING_PENDING, COUNTER_SLEPT, COUNTER_SOFT_ACTIVE, COUNTER_SOFT_SLEPT,
68 COUNTER_SOFT_WOKE, COUNTER_SPILLOVER_ENTRIES, COUNTER_SPILLOVER_EVENTS, COUNTER_SPILLOVER_LIVE,
69 COUNTER_SPILLOVER_NEIGHBOURS, COUNTER_SPILLOVER_PAIRS, COUNTER_SPILLOVER_RESTING, COUNTER_WOKE,
70 COUNTER_WOKE_DEFERRED,
71};
72pub use counter::host::{
73 COUNTER_BODIES, COUNTER_BODY_EDITS, COUNTER_BODY_MOVES, COUNTER_COLLIDERS,
74 COUNTER_CONSTRAINT_COMMANDS, COUNTER_CONSTRAINT_MOVES, COUNTER_CONSTRAINTS,
75};
76pub use counter::{COUNTER_COUNT, COUNTER_STRIDE, Counters, DeclaredCounters};
77pub use decode::decode;
78pub use param::{Count, FrameCounts, RowStreams};
79pub use records::*;
80pub use soft::{SoftAttachmentInit, SoftElementInit, SoftParticleInit};
81pub use wgsl::constants_wgsl;