mt-lang 0.3.41 → 0.3.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -2
  3. data/docs/index.html +20 -4
  4. data/docs/language-design.md +5 -2
  5. data/docs/language-manual.md +28 -5
  6. data/lib/milk_tea/base.rb +1 -1
  7. data/lib/milk_tea/bindings/bindgen/declaration.rb +17 -0
  8. data/lib/milk_tea/bindings/bindgen/emitter.rb +44 -5
  9. data/lib/milk_tea/bindings/imported_bindings/defaults.rb +7 -0
  10. data/lib/milk_tea/bindings/raw_bindings/defaults.rb +22 -0
  11. data/lib/milk_tea/bindings/upstream_sources.rb +9 -0
  12. data/lib/milk_tea/bindings/vendored_box3d.rb +77 -0
  13. data/lib/milk_tea/bindings.rb +1 -0
  14. data/lib/milk_tea/core/c_backend/expressions.rb +21 -5
  15. data/lib/milk_tea/core/c_backend/feature_detection.rb +6 -1
  16. data/lib/milk_tea/core/c_backend/runtime_helpers.rb +38 -4
  17. data/lib/milk_tea/core/c_backend/statements.rb +1 -1
  18. data/lib/milk_tea/core/c_backend/type_collectors.rb +97 -4
  19. data/lib/milk_tea/core/c_backend.rb +9 -0
  20. data/lib/milk_tea/core/lowering/async/async_lowering.rb +2 -6
  21. data/lib/milk_tea/core/lowering/async/frame_builder.rb +12 -5
  22. data/lib/milk_tea/core/lowering/async/normalization.rb +28 -5
  23. data/lib/milk_tea/core/lowering/expressions.rb +31 -6
  24. data/lib/milk_tea/core/lowering/proc.rb +3 -0
  25. data/lib/milk_tea/core/lowering/resolve.rb +3 -0
  26. data/lib/milk_tea/core/lowering/utils.rb +26 -0
  27. data/lib/milk_tea/core/semantic_analyzer/expressions.rb +21 -2
  28. data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +49 -1
  29. data/lib/milk_tea/core/semantic_analyzer/statements.rb +1 -0
  30. data/lib/milk_tea/core/types/registry.rb +39 -16
  31. data/lib/milk_tea/lsp/server/hover.rb +0 -1
  32. data/lib/milk_tea/lsp/server/text_documents.rb +1 -1
  33. data/lib/milk_tea/tooling/docs_app.rb +1 -1
  34. data/std/box3d.mt +784 -0
  35. data/std/c/box3d.mt +1871 -0
  36. data/std/c/miniaudio.mt +19 -28
  37. data/std/c/steamworks.mt +2 -5
  38. data/std/miniaudio.mt +9 -12
  39. data/std/steamworks.mt +0 -1
  40. metadata +5 -2
data/std/box3d.mt ADDED
@@ -0,0 +1,784 @@
1
+ # generated by mtc imported-bindings from std.c.box3d using bindings/imported/box3d.binding.json
2
+
3
+ import std.c.box3d as c
4
+
5
+ public type MeshNode_data = c.b3MeshNode_data
6
+ public type MeshNode_data_asNode = c.b3MeshNode_data_asNode
7
+ public type MeshNode_data_asLeaf = c.b3MeshNode_data_asLeaf
8
+ public type AllocFcn = c.b3AllocFcn
9
+ public type FreeFcn = c.b3FreeFcn
10
+ public type AssertFcn = c.b3AssertFcn
11
+ public type LogFcn = c.b3LogFcn
12
+ public type Version = c.b3Version
13
+ public type Vec2 = c.b3Vec2
14
+ public type Vec3 = c.b3Vec3
15
+ public type CosSin = c.b3CosSin
16
+ public type Quat = c.b3Quat
17
+ public type Transform = c.b3Transform
18
+ public type Pos = c.b3Pos
19
+ public type WorldTransform = c.b3WorldTransform
20
+ public type Matrix3 = c.b3Matrix3
21
+ public type AABB = c.b3AABB
22
+ public type Plane = c.b3Plane
23
+ public type SegmentDistanceResult = c.b3SegmentDistanceResult
24
+ public type WorldId = c.b3WorldId
25
+ public type BodyId = c.b3BodyId
26
+ public type ShapeId = c.b3ShapeId
27
+ public type JointId = c.b3JointId
28
+ public type ContactId = c.b3ContactId
29
+ public type TaskCallback = c.b3TaskCallback
30
+ public type EnqueueTaskCallback = c.b3EnqueueTaskCallback
31
+ public type FinishTaskCallback = c.b3FinishTaskCallback
32
+ public type CreateDebugShapeCallback = c.b3CreateDebugShapeCallback
33
+ public type DestroyDebugShapeCallback = c.b3DestroyDebugShapeCallback
34
+ public type FrictionCallback = c.b3FrictionCallback
35
+ public type RestitutionCallback = c.b3RestitutionCallback
36
+ public type CustomFilterFcn = c.b3CustomFilterFcn
37
+ public type PreSolveFcn = c.b3PreSolveFcn
38
+ public type OverlapResultFcn = c.b3OverlapResultFcn
39
+ public type CastResultFcn = c.b3CastResultFcn
40
+ public type Capacity = c.b3Capacity
41
+ public type WorldDef = c.b3WorldDef
42
+ public type BodyType = c.b3BodyType
43
+ public type MotionLocks = c.b3MotionLocks
44
+ public type BodyDef = c.b3BodyDef
45
+ public type Filter = c.b3Filter
46
+ public type SurfaceMaterial = c.b3SurfaceMaterial
47
+ public type ShapeType = c.b3ShapeType
48
+ public type ShapeDef = c.b3ShapeDef
49
+ public type Profile = c.b3Profile
50
+ public type Counters = c.b3Counters
51
+ public type JointType = c.b3JointType
52
+ public type JointDef = c.b3JointDef
53
+ public type DistanceJointDef = c.b3DistanceJointDef
54
+ public type MotorJointDef = c.b3MotorJointDef
55
+ public type FilterJointDef = c.b3FilterJointDef
56
+ public type ParallelJointDef = c.b3ParallelJointDef
57
+ public type PrismaticJointDef = c.b3PrismaticJointDef
58
+ public type RevoluteJointDef = c.b3RevoluteJointDef
59
+ public type SphericalJointDef = c.b3SphericalJointDef
60
+ public type WeldJointDef = c.b3WeldJointDef
61
+ public type WheelJointDef = c.b3WheelJointDef
62
+ public type ExplosionDef = c.b3ExplosionDef
63
+ public type SensorBeginTouchEvent = c.b3SensorBeginTouchEvent
64
+ public type SensorEndTouchEvent = c.b3SensorEndTouchEvent
65
+ public type SensorEvents = c.b3SensorEvents
66
+ public type ContactBeginTouchEvent = c.b3ContactBeginTouchEvent
67
+ public type ContactEndTouchEvent = c.b3ContactEndTouchEvent
68
+ public type ContactHitEvent = c.b3ContactHitEvent
69
+ public type ContactEvents = c.b3ContactEvents
70
+ public type BodyMoveEvent = c.b3BodyMoveEvent
71
+ public type BodyEvents = c.b3BodyEvents
72
+ public type JointEvent = c.b3JointEvent
73
+ public type JointEvents = c.b3JointEvents
74
+ public type ContactData = c.b3ContactData
75
+ public type QueryFilter = c.b3QueryFilter
76
+ public type RayCastInput = c.b3RayCastInput
77
+ public type RayResult = c.b3RayResult
78
+ public type ShapeProxy = c.b3ShapeProxy
79
+ public type ShapeCastInput = c.b3ShapeCastInput
80
+ public type BoxCastInput = c.b3BoxCastInput
81
+ public type CastOutput = c.b3CastOutput
82
+ public type WorldCastOutput = c.b3WorldCastOutput
83
+ public type BodyCastResult = c.b3BodyCastResult
84
+ public type SimplexCache = c.b3SimplexCache
85
+ public type ShapeCastPairInput = c.b3ShapeCastPairInput
86
+ public type DistanceInput = c.b3DistanceInput
87
+ public type DistanceOutput = c.b3DistanceOutput
88
+ public type SimplexVertex = c.b3SimplexVertex
89
+ public type Simplex = c.b3Simplex
90
+ public type Sweep = c.b3Sweep
91
+ public type TOIInput = c.b3TOIInput
92
+ public type TOIState = c.b3TOIState
93
+ public type TOIOutput = c.b3TOIOutput
94
+ public type TreeNodeFlags = c.b3TreeNodeFlags
95
+ public type TreeNodeChildren = c.b3TreeNodeChildren
96
+ public type TreeNode = c.b3TreeNode
97
+ public type DynamicTree = c.b3DynamicTree
98
+ public type TreeStats = c.b3TreeStats
99
+ public type TreeQueryCallbackFcn = c.b3TreeQueryCallbackFcn
100
+ public type TreeQueryClosestCallbackFcn = c.b3TreeQueryClosestCallbackFcn
101
+ public type TreeBoxCastCallbackFcn = c.b3TreeBoxCastCallbackFcn
102
+ public type TreeRayCastCallbackFcn = c.b3TreeRayCastCallbackFcn
103
+ public type PlaneResult = c.b3PlaneResult
104
+ public type CollisionPlane = c.b3CollisionPlane
105
+ public type PlaneSolverResult = c.b3PlaneSolverResult
106
+ public type BodyPlaneResult = c.b3BodyPlaneResult
107
+ public type PlaneResultFcn = c.b3PlaneResultFcn
108
+ public type MoverFilterFcn = c.b3MoverFilterFcn
109
+ public type MassData = c.b3MassData
110
+ public type Sphere = c.b3Sphere
111
+ public type Capsule = c.b3Capsule
112
+ public type HullVertex = c.b3HullVertex
113
+ public type HullHalfEdge = c.b3HullHalfEdge
114
+ public type HullFace = c.b3HullFace
115
+ public type HullData = c.b3HullData
116
+ public type BoxHull = c.b3BoxHull
117
+ public type MeshDef = c.b3MeshDef
118
+ public type MeshEdgeFlags = c.b3MeshEdgeFlags
119
+ public type MeshTriangle = c.b3MeshTriangle
120
+ public type MeshNode = c.b3MeshNode
121
+ public type MeshData = c.b3MeshData
122
+ public type Mesh = c.b3Mesh
123
+ public type HeightFieldDef = c.b3HeightFieldDef
124
+ public type HeightFieldData = c.b3HeightFieldData
125
+ public type CompoundCapsuleDef = c.b3CompoundCapsuleDef
126
+ public type CompoundHullDef = c.b3CompoundHullDef
127
+ public type CompoundMeshDef = c.b3CompoundMeshDef
128
+ public type CompoundSphereDef = c.b3CompoundSphereDef
129
+ public type CompoundDef = c.b3CompoundDef
130
+ public type CompoundData = c.b3CompoundData
131
+ public type CompoundCapsule = c.b3CompoundCapsule
132
+ public type CompoundHull = c.b3CompoundHull
133
+ public type CompoundMesh = c.b3CompoundMesh
134
+ public type CompoundSphere = c.b3CompoundSphere
135
+ public type ChildShape = c.b3ChildShape
136
+ public type CompoundQueryFcn = c.b3CompoundQueryFcn
137
+ public type ManifoldPoint = c.b3ManifoldPoint
138
+ public type Manifold = c.b3Manifold
139
+ public type SeparatingFeature = c.b3SeparatingFeature
140
+ public type TriangleFeature = c.b3TriangleFeature
141
+ public type SATCache = c.b3SATCache
142
+ public type FeaturePair = c.b3FeaturePair
143
+ public type LocalManifoldPoint = c.b3LocalManifoldPoint
144
+ public type LocalManifold = c.b3LocalManifold
145
+ public type HexColor = c.b3HexColor
146
+ public type DebugMaterial = c.b3DebugMaterial
147
+ public type DebugShape = c.b3DebugShape
148
+ public type DebugDraw = c.b3DebugDraw
149
+ public type MeshQueryFcn = c.b3MeshQueryFcn
150
+ public opaque Recording = c"b3Recording"
151
+ public opaque RecPlayer = c"b3RecPlayer"
152
+ public type RecPlayerInfo = c.b3RecPlayerInfo
153
+ public type RecQueryType = c.b3RecQueryType
154
+ public type RecQueryInfo = c.b3RecQueryInfo
155
+ public type RecQueryHit = c.b3RecQueryHit
156
+
157
+ public const b3Vec3_zero: Vec3 = c.b3Vec3_zero
158
+ public const b3Vec3_one: Vec3 = c.b3Vec3_one
159
+ public const b3Vec3_axisX: Vec3 = c.b3Vec3_axisX
160
+ public const b3Vec3_axisY: Vec3 = c.b3Vec3_axisY
161
+ public const b3Vec3_axisZ: Vec3 = c.b3Vec3_axisZ
162
+ public const b3Quat_identity: Quat = c.b3Quat_identity
163
+ public const b3Transform_identity: Transform = c.b3Transform_identity
164
+ public const b3Mat3_zero: Matrix3 = c.b3Mat3_zero
165
+ public const b3Mat3_identity: Matrix3 = c.b3Mat3_identity
166
+ public const b3Pos_zero: Vec3 = c.b3Pos_zero
167
+ public const b3WorldTransform_identity: Transform = c.b3WorldTransform_identity
168
+ public const b3_nullWorldId: WorldId = c.b3_nullWorldId
169
+ public const b3_nullBodyId: BodyId = c.b3_nullBodyId
170
+ public const b3_nullShapeId: ShapeId = c.b3_nullShapeId
171
+ public const b3_nullJointId: JointId = c.b3_nullJointId
172
+ public const b3_nullContactId: ContactId = c.b3_nullContactId
173
+ public const b3_emptyDistanceCache: SimplexCache = c.b3_emptyDistanceCache
174
+ public const B3_ENABLE_VALIDATION: int = c.B3_ENABLE_VALIDATION
175
+ public const B3_NULL_INDEX: int = c.B3_NULL_INDEX
176
+ public const B3_HASH_INIT: int = c.B3_HASH_INIT
177
+ public const B3_PI: float = c.B3_PI
178
+ public const B3_DEG_TO_RAD: float = c.B3_DEG_TO_RAD
179
+ public const B3_RAD_TO_DEG: float = c.B3_RAD_TO_DEG
180
+ public const B3_MIN_SCALE: float = c.B3_MIN_SCALE
181
+ public const B3_MAX_WORKERS: int = c.B3_MAX_WORKERS
182
+ public const B3_MAX_TASKS: int = c.B3_MAX_TASKS
183
+ public const B3_GRAPH_COLOR_COUNT: int = c.B3_GRAPH_COLOR_COUNT
184
+ public const B3_CONTACT_MANIFOLD_COUNT_BUCKETS: int = c.B3_CONTACT_MANIFOLD_COUNT_BUCKETS
185
+ public const B3_MIN_FRICTION_WEIGHT: float = c.B3_MIN_FRICTION_WEIGHT
186
+ public const B3_MAX_WORLDS: int = c.B3_MAX_WORLDS
187
+ public const B3_CONTACT_RECYCLE_ANGULAR_DISTANCE: float = c.B3_CONTACT_RECYCLE_ANGULAR_DISTANCE
188
+ public const B3_AABB_MARGIN_FRACTION: float = c.B3_AABB_MARGIN_FRACTION
189
+ public const B3_TIME_TO_SLEEP: float = c.B3_TIME_TO_SLEEP
190
+ public const B3_MAX_MANIFOLD_POINTS: int = c.B3_MAX_MANIFOLD_POINTS
191
+ public const B3_GYROSCOPIC_ITERATIONS: int = c.B3_GYROSCOPIC_ITERATIONS
192
+ public const B3_MAX_HULL_VERTICES: int = c.B3_MAX_HULL_VERTICES
193
+ public const B3_MAX_HULL_FACES: int = c.B3_MAX_HULL_FACES
194
+ public const B3_MAX_HULL_EDGES: int = c.B3_MAX_HULL_EDGES
195
+ public const B3_PARALLEL_EDGE_TOL: float = c.B3_PARALLEL_EDGE_TOL
196
+ public const B3_SHAPE_POWER: int = c.B3_SHAPE_POWER
197
+ public const B3_RESTITUTION_ITERATIONS: int = c.B3_RESTITUTION_ITERATIONS
198
+ public const B3_DYNAMIC_TREE_VERSION: ulong = c.B3_DYNAMIC_TREE_VERSION
199
+ public const B3_HULL_VERSION: ulong = c.B3_HULL_VERSION
200
+ public const B3_MESH_VERSION: ulong = c.B3_MESH_VERSION
201
+ public const B3_HEIGHT_FIELD_HOLE: int = c.B3_HEIGHT_FIELD_HOLE
202
+ public const B3_HEIGHT_FIELD_VERSION: ulong = c.B3_HEIGHT_FIELD_VERSION
203
+ public const B3_MAX_COMPOUND_MESH_MATERIALS: int = c.B3_MAX_COMPOUND_MESH_MATERIALS
204
+
205
+ public foreign function set_allocator(alloc_fcn: AllocFcn, free_fcn: FreeFcn) -> void = c.b3SetAllocator
206
+ public foreign function get_byte_count() -> int = c.b3GetByteCount
207
+ public foreign function set_assert_fcn(assert_fcn: AssertFcn) -> void = c.b3SetAssertFcn
208
+ public foreign function internal_assert(condition: str as cstr, file_name: str as cstr, line_number: int) -> int = c.b3InternalAssert
209
+ public foreign function set_log_fcn(log_fcn: LogFcn) -> void = c.b3SetLogFcn
210
+ public foreign function get_version() -> Version = c.b3GetVersion
211
+ public foreign function is_double_precision() -> bool = c.b3IsDoublePrecision
212
+ public foreign function get_ticks() -> ulong = c.b3GetTicks
213
+ public foreign function get_milliseconds(ticks: ptr_uint) -> float = c.b3GetMilliseconds
214
+ public foreign function get_milliseconds_and_reset(ticks: ptr[ulong]) -> float = c.b3GetMillisecondsAndReset
215
+ public foreign function yield() -> void = c.b3Yield
216
+ public foreign function sleep(milliseconds: int) -> void = c.b3Sleep
217
+ public foreign function hash(hash: uint, data: const_ptr[ubyte], count: int) -> uint = c.b3Hash
218
+ public foreign function atan2(y: float, x: float) -> float = c.b3Atan2
219
+ public foreign function compute_cos_sin(radians: float) -> CosSin = c.b3ComputeCosSin
220
+ public foreign function make_quat_from_matrix(m: const_ptr[Matrix3]) -> Quat = c.b3MakeQuatFromMatrix
221
+ public foreign function compute_quat_between_unit_vectors(v1: Vec3, v2: Vec3) -> Quat = c.b3ComputeQuatBetweenUnitVectors
222
+ public foreign function steiner(mass: float, origin: Vec3) -> Matrix3 = c.b3Steiner
223
+ public foreign function point_to_segment_distance(a: Vec3, b: Vec3, q: Vec3) -> Vec3 = c.b3PointToSegmentDistance
224
+ public foreign function line_distance(p1: Vec3, d1: Vec3, p2: Vec3, d2: Vec3) -> SegmentDistanceResult = c.b3LineDistance
225
+ public foreign function segment_distance(p1: Vec3, q1: Vec3, p2: Vec3, q2: Vec3) -> SegmentDistanceResult = c.b3SegmentDistance
226
+ public foreign function is_valid_float(a: float) -> bool = c.b3IsValidFloat
227
+ public foreign function is_valid_vec3(a: Vec3) -> bool = c.b3IsValidVec3
228
+ public foreign function is_valid_quat(q: Quat) -> bool = c.b3IsValidQuat
229
+ public foreign function is_valid_transform(a: Transform) -> bool = c.b3IsValidTransform
230
+ public foreign function is_valid_matrix3(a: Matrix3) -> bool = c.b3IsValidMatrix3
231
+ public foreign function is_valid_aabb(a: AABB) -> bool = c.b3IsValidAABB
232
+ public foreign function is_bounded_aabb(a: AABB) -> bool = c.b3IsBoundedAABB
233
+ public foreign function is_sane_aabb(a: AABB) -> bool = c.b3IsSaneAABB
234
+ public foreign function is_valid_plane(a: Plane) -> bool = c.b3IsValidPlane
235
+ public foreign function is_valid_position(p: Vec3) -> bool = c.b3IsValidPosition
236
+ public foreign function is_valid_world_transform(t: Transform) -> bool = c.b3IsValidWorldTransform
237
+ public foreign function set_length_units_per_meter(length_units: float) -> void = c.b3SetLengthUnitsPerMeter
238
+ public foreign function get_length_units_per_meter() -> float = c.b3GetLengthUnitsPerMeter
239
+ public foreign function set_stall_threshold(seconds: float) -> void = c.b3SetStallThreshold
240
+ public foreign function get_stall_threshold() -> float = c.b3GetStallThreshold
241
+ public foreign function default_world_def() -> WorldDef = c.b3DefaultWorldDef
242
+ public foreign function default_body_def() -> BodyDef = c.b3DefaultBodyDef
243
+ public foreign function default_filter() -> Filter = c.b3DefaultFilter
244
+ public foreign function default_surface_material() -> SurfaceMaterial = c.b3DefaultSurfaceMaterial
245
+ public foreign function default_shape_def() -> ShapeDef = c.b3DefaultShapeDef
246
+ public foreign function default_distance_joint_def() -> DistanceJointDef = c.b3DefaultDistanceJointDef
247
+ public foreign function default_motor_joint_def() -> MotorJointDef = c.b3DefaultMotorJointDef
248
+ public foreign function default_filter_joint_def() -> FilterJointDef = c.b3DefaultFilterJointDef
249
+ public foreign function default_parallel_joint_def() -> ParallelJointDef = c.b3DefaultParallelJointDef
250
+ public foreign function default_prismatic_joint_def() -> PrismaticJointDef = c.b3DefaultPrismaticJointDef
251
+ public foreign function default_revolute_joint_def() -> RevoluteJointDef = c.b3DefaultRevoluteJointDef
252
+ public foreign function default_spherical_joint_def() -> SphericalJointDef = c.b3DefaultSphericalJointDef
253
+ public foreign function default_weld_joint_def() -> WeldJointDef = c.b3DefaultWeldJointDef
254
+ public foreign function default_wheel_joint_def() -> WheelJointDef = c.b3DefaultWheelJointDef
255
+ public foreign function default_explosion_def() -> ExplosionDef = c.b3DefaultExplosionDef
256
+ public foreign function default_query_filter() -> QueryFilter = c.b3DefaultQueryFilter
257
+ public foreign function get_graph_color(index: int) -> HexColor = c.b3GetGraphColor
258
+ public foreign function default_debug_draw() -> DebugDraw = c.b3DefaultDebugDraw
259
+ public foreign function dynamic_tree_create(proxy_capacity: int) -> DynamicTree = c.b3DynamicTree_Create
260
+ public foreign function dynamic_tree_destroy(tree: ptr[DynamicTree]) -> void = c.b3DynamicTree_Destroy
261
+ public foreign function dynamic_tree_create_proxy(tree: ptr[DynamicTree], aabb: AABB, category_bits: ptr_uint, user_data: ptr_uint) -> int = c.b3DynamicTree_CreateProxy
262
+ public foreign function dynamic_tree_destroy_proxy(tree: ptr[DynamicTree], proxy_id: int) -> void = c.b3DynamicTree_DestroyProxy
263
+ public foreign function dynamic_tree_move_proxy(tree: ptr[DynamicTree], proxy_id: int, aabb: AABB) -> void = c.b3DynamicTree_MoveProxy
264
+ public foreign function dynamic_tree_enlarge_proxy(tree: ptr[DynamicTree], proxy_id: int, aabb: AABB) -> void = c.b3DynamicTree_EnlargeProxy
265
+ public foreign function dynamic_tree_set_category_bits(tree: ptr[DynamicTree], proxy_id: int, category_bits: ptr_uint) -> void = c.b3DynamicTree_SetCategoryBits
266
+ public foreign function dynamic_tree_get_category_bits(tree: ptr[DynamicTree], proxy_id: int) -> ulong = c.b3DynamicTree_GetCategoryBits
267
+ public foreign function dynamic_tree_query(tree: const_ptr[DynamicTree], aabb: AABB, mask_bits: ptr_uint, require_all_bits: bool, callback: TreeQueryCallbackFcn, context: ptr[void]) -> TreeStats = c.b3DynamicTree_Query
268
+ public foreign function dynamic_tree_query_closest(tree: const_ptr[DynamicTree], point: Vec3, mask_bits: ptr_uint, require_all_bits: bool, callback: TreeQueryClosestCallbackFcn, context: ptr[void], min_distance_sqr: ptr[float]) -> TreeStats = c.b3DynamicTree_QueryClosest
269
+ public foreign function dynamic_tree_ray_cast(tree: const_ptr[DynamicTree], input: const_ptr[RayCastInput], mask_bits: ptr_uint, require_all_bits: bool, callback: TreeRayCastCallbackFcn, context: ptr[void]) -> TreeStats = c.b3DynamicTree_RayCast
270
+ public foreign function dynamic_tree_box_cast(tree: const_ptr[DynamicTree], input: const_ptr[BoxCastInput], mask_bits: ptr_uint, require_all_bits: bool, callback: TreeBoxCastCallbackFcn, context: ptr[void]) -> TreeStats = c.b3DynamicTree_BoxCast
271
+ public foreign function dynamic_tree_get_height(tree: const_ptr[DynamicTree]) -> int = c.b3DynamicTree_GetHeight
272
+ public foreign function dynamic_tree_get_area_ratio(tree: const_ptr[DynamicTree]) -> float = c.b3DynamicTree_GetAreaRatio
273
+ public foreign function dynamic_tree_get_root_bounds(tree: const_ptr[DynamicTree]) -> AABB = c.b3DynamicTree_GetRootBounds
274
+ public foreign function dynamic_tree_get_proxy_count(tree: const_ptr[DynamicTree]) -> int = c.b3DynamicTree_GetProxyCount
275
+ public foreign function dynamic_tree_rebuild(tree: ptr[DynamicTree], full_build: bool) -> int = c.b3DynamicTree_Rebuild
276
+ public foreign function dynamic_tree_get_byte_count(tree: const_ptr[DynamicTree]) -> int = c.b3DynamicTree_GetByteCount
277
+ public foreign function dynamic_tree_validate(tree: const_ptr[DynamicTree]) -> void = c.b3DynamicTree_Validate
278
+ public foreign function dynamic_tree_validate_no_enlarged(tree: const_ptr[DynamicTree]) -> void = c.b3DynamicTree_ValidateNoEnlarged
279
+ public foreign function dynamic_tree_save(tree: const_ptr[DynamicTree], file_name: str as cstr) -> void = c.b3DynamicTree_Save
280
+ public foreign function dynamic_tree_load(file_name: str as cstr, scale: float) -> DynamicTree = c.b3DynamicTree_Load
281
+ public foreign function create_cylinder(height: float, radius: float, y_offset: float, sides: int) -> ptr[HullData] = c.b3CreateCylinder
282
+ public foreign function create_cone(height: float, radius1: float, radius2: float, slices: int) -> ptr[HullData] = c.b3CreateCone
283
+ public foreign function create_rock(radius: float) -> ptr[HullData] = c.b3CreateRock
284
+ public foreign function create_hull(points: const_ptr[Vec3], point_count: int, max_vertex_count: int) -> ptr[HullData] = c.b3CreateHull
285
+ public foreign function clone_hull(hull: const_ptr[HullData]) -> ptr[HullData] = c.b3CloneHull
286
+ public foreign function clone_and_transform_hull(original: const_ptr[HullData], transform: Transform, scale: Vec3) -> ptr[HullData] = c.b3CloneAndTransformHull
287
+ public foreign function destroy_hull(hull: ptr[HullData]) -> void = c.b3DestroyHull
288
+ public foreign function make_cube_hull(half_width: float) -> BoxHull = c.b3MakeCubeHull
289
+ public foreign function make_box_hull(hx: float, hy: float, hz: float) -> BoxHull = c.b3MakeBoxHull
290
+ public foreign function make_offset_box_hull(hx: float, hy: float, hz: float, offset: Vec3) -> BoxHull = c.b3MakeOffsetBoxHull
291
+ public foreign function make_transformed_box_hull(hx: float, hy: float, hz: float, transform: Transform) -> BoxHull = c.b3MakeTransformedBoxHull
292
+ public foreign function make_scaled_box_hull(half_widths: Vec3, transform: Transform, post_scale: Vec3) -> BoxHull = c.b3MakeScaledBoxHull
293
+ public foreign function scale_box(half_widths: ptr[Vec3], transform: ptr[Transform], post_scale: Vec3, min_half_width: float) -> void = c.b3ScaleBox
294
+ public foreign function create_grid_mesh(x_count: int, z_count: int, cell_width: float, material_count: int, identify_edges: bool) -> ptr[MeshData] = c.b3CreateGridMesh
295
+ public foreign function create_wave_mesh(x_count: int, z_count: int, cell_width: float, amplitude: float, row_frequency: float, column_frequency: float) -> ptr[MeshData] = c.b3CreateWaveMesh
296
+ public foreign function create_torus_mesh(radial_resolution: int, tubular_resolution: int, radius: float, thickness: float) -> ptr[MeshData] = c.b3CreateTorusMesh
297
+ public foreign function create_box_mesh(center: Vec3, extent: Vec3, identify_edges: bool) -> ptr[MeshData] = c.b3CreateBoxMesh
298
+ public foreign function create_hollow_box_mesh(center: Vec3, extent: Vec3) -> ptr[MeshData] = c.b3CreateHollowBoxMesh
299
+ public foreign function create_platform_mesh(center: Vec3, height: float, top_width: float, bottom_width: float) -> ptr[MeshData] = c.b3CreatePlatformMesh
300
+ public foreign function create_mesh(def: const_ptr[MeshDef], degenerate_triangle_indices: ptr[int], degenerate_capacity: int) -> ptr[MeshData] = c.b3CreateMesh
301
+ public foreign function destroy_mesh(mesh: ptr[MeshData]) -> void = c.b3DestroyMesh
302
+ public foreign function get_height(mesh: const_ptr[MeshData]) -> int = c.b3GetHeight
303
+ public foreign function create_height_field(data: const_ptr[HeightFieldDef]) -> ptr[HeightFieldData] = c.b3CreateHeightField
304
+ public foreign function create_grid(row_count: int, column_count: int, scale: Vec3, make_holes: bool) -> ptr[HeightFieldData] = c.b3CreateGrid
305
+ public foreign function create_wave(row_count: int, column_count: int, scale: Vec3, row_frequency: float, column_frequency: float, make_holes: bool) -> ptr[HeightFieldData] = c.b3CreateWave
306
+ public foreign function destroy_height_field(height_field: ptr[HeightFieldData]) -> void = c.b3DestroyHeightField
307
+ public foreign function dump_height_data(data: const_ptr[HeightFieldDef], file_name: str as cstr) -> void = c.b3DumpHeightData
308
+ public foreign function load_height_field(file_name: str as cstr) -> ptr[HeightFieldData] = c.b3LoadHeightField
309
+ public foreign function get_compound_child(compound: const_ptr[CompoundData], child_index: int) -> ChildShape = c.b3GetCompoundChild
310
+ public foreign function query_compound(compound: const_ptr[CompoundData], aabb: AABB, fcn: CompoundQueryFcn, context: ptr[void]) -> void = c.b3QueryCompound
311
+ public foreign function get_compound_capsule(compound: const_ptr[CompoundData], index: int) -> CompoundCapsule = c.b3GetCompoundCapsule
312
+ public foreign function get_compound_hull(compound: const_ptr[CompoundData], index: int) -> CompoundHull = c.b3GetCompoundHull
313
+ public foreign function get_compound_mesh(compound: const_ptr[CompoundData], index: int) -> CompoundMesh = c.b3GetCompoundMesh
314
+ public foreign function get_compound_sphere(compound: const_ptr[CompoundData], index: int) -> CompoundSphere = c.b3GetCompoundSphere
315
+ public foreign function get_compound_materials(compound: const_ptr[CompoundData]) -> const_ptr[SurfaceMaterial] = c.b3GetCompoundMaterials
316
+ public foreign function create_compound(def: const_ptr[CompoundDef]) -> ptr[CompoundData] = c.b3CreateCompound
317
+ public foreign function destroy_compound(compound: ptr[CompoundData]) -> void = c.b3DestroyCompound
318
+ public foreign function convert_compound_to_bytes(compound: ptr[CompoundData]) -> ptr[ubyte] = c.b3ConvertCompoundToBytes
319
+ public foreign function convert_bytes_to_compound(bytes: ptr[ubyte], byte_count: int) -> ptr[CompoundData] = c.b3ConvertBytesToCompound
320
+ public foreign function compute_sphere_mass(shape: const_ptr[Sphere], density: float) -> MassData = c.b3ComputeSphereMass
321
+ public foreign function compute_capsule_mass(shape: const_ptr[Capsule], density: float) -> MassData = c.b3ComputeCapsuleMass
322
+ public foreign function compute_hull_mass(shape: const_ptr[HullData], density: float) -> MassData = c.b3ComputeHullMass
323
+ public foreign function compute_sphere_aabb(shape: const_ptr[Sphere], transform: Transform) -> AABB = c.b3ComputeSphereAABB
324
+ public foreign function compute_capsule_aabb(shape: const_ptr[Capsule], transform: Transform) -> AABB = c.b3ComputeCapsuleAABB
325
+ public foreign function compute_hull_aabb(shape: const_ptr[HullData], transform: Transform) -> AABB = c.b3ComputeHullAABB
326
+ public foreign function compute_mesh_aabb(shape: const_ptr[MeshData], transform: Transform, scale: Vec3) -> AABB = c.b3ComputeMeshAABB
327
+ public foreign function compute_height_field_aabb(shape: const_ptr[HeightFieldData], transform: Transform) -> AABB = c.b3ComputeHeightFieldAABB
328
+ public foreign function compute_compound_aabb(shape: const_ptr[CompoundData], transform: Transform) -> AABB = c.b3ComputeCompoundAABB
329
+ public foreign function is_valid_ray(input: const_ptr[RayCastInput]) -> bool = c.b3IsValidRay
330
+ public foreign function overlap_capsule(shape: const_ptr[Capsule], shape_transform: Transform, proxy: const_ptr[ShapeProxy]) -> bool = c.b3OverlapCapsule
331
+ public foreign function overlap_compound(shape: const_ptr[CompoundData], shape_transform: Transform, proxy: const_ptr[ShapeProxy]) -> bool = c.b3OverlapCompound
332
+ public foreign function overlap_height_field(shape: const_ptr[HeightFieldData], shape_transform: Transform, proxy: const_ptr[ShapeProxy]) -> bool = c.b3OverlapHeightField
333
+ public foreign function overlap_hull(shape: const_ptr[HullData], shape_transform: Transform, proxy: const_ptr[ShapeProxy]) -> bool = c.b3OverlapHull
334
+ public foreign function overlap_mesh(shape: const_ptr[Mesh], shape_transform: Transform, proxy: const_ptr[ShapeProxy]) -> bool = c.b3OverlapMesh
335
+ public foreign function overlap_sphere(shape: const_ptr[Sphere], shape_transform: Transform, proxy: const_ptr[ShapeProxy]) -> bool = c.b3OverlapSphere
336
+ public foreign function ray_cast_sphere(shape: const_ptr[Sphere], input: const_ptr[RayCastInput]) -> CastOutput = c.b3RayCastSphere
337
+ public foreign function ray_cast_hollow_sphere(shape: const_ptr[Sphere], input: const_ptr[RayCastInput]) -> CastOutput = c.b3RayCastHollowSphere
338
+ public foreign function ray_cast_capsule(shape: const_ptr[Capsule], input: const_ptr[RayCastInput]) -> CastOutput = c.b3RayCastCapsule
339
+ public foreign function ray_cast_compound(shape: const_ptr[CompoundData], input: const_ptr[RayCastInput]) -> CastOutput = c.b3RayCastCompound
340
+ public foreign function ray_cast_hull(shape: const_ptr[HullData], input: const_ptr[RayCastInput]) -> CastOutput = c.b3RayCastHull
341
+ public foreign function ray_cast_mesh(shape: const_ptr[Mesh], input: const_ptr[RayCastInput]) -> CastOutput = c.b3RayCastMesh
342
+ public foreign function ray_cast_height_field(shape: const_ptr[HeightFieldData], input: const_ptr[RayCastInput]) -> CastOutput = c.b3RayCastHeightField
343
+ public foreign function shape_cast_sphere(shape: const_ptr[Sphere], input: const_ptr[ShapeCastInput]) -> CastOutput = c.b3ShapeCastSphere
344
+ public foreign function shape_cast_capsule(shape: const_ptr[Capsule], input: const_ptr[ShapeCastInput]) -> CastOutput = c.b3ShapeCastCapsule
345
+ public foreign function shape_cast_compound(shape: const_ptr[CompoundData], input: const_ptr[ShapeCastInput]) -> CastOutput = c.b3ShapeCastCompound
346
+ public foreign function shape_cast_hull(shape: const_ptr[HullData], input: const_ptr[ShapeCastInput]) -> CastOutput = c.b3ShapeCastHull
347
+ public foreign function shape_cast_mesh(shape: const_ptr[Mesh], input: const_ptr[ShapeCastInput]) -> CastOutput = c.b3ShapeCastMesh
348
+ public foreign function shape_cast_height_field(shape: const_ptr[HeightFieldData], input: const_ptr[ShapeCastInput]) -> CastOutput = c.b3ShapeCastHeightField
349
+ public foreign function query_mesh(mesh: const_ptr[Mesh], bounds: AABB, fcn: MeshQueryFcn, context: ptr[void]) -> void = c.b3QueryMesh
350
+ public foreign function query_height_field(height_field: const_ptr[HeightFieldData], bounds: AABB, fcn: MeshQueryFcn, context: ptr[void]) -> void = c.b3QueryHeightField
351
+ public foreign function shape_distance(input: const_ptr[DistanceInput], cache: ptr[SimplexCache], simplexes: ptr[Simplex], simplex_capacity: int) -> DistanceOutput = c.b3ShapeDistance
352
+ public foreign function shape_cast(input: const_ptr[ShapeCastPairInput]) -> CastOutput = c.b3ShapeCast
353
+ public foreign function get_sweep_transform(sweep: const_ptr[Sweep], time: float) -> Transform = c.b3GetSweepTransform
354
+ public foreign function time_of_impact(input: const_ptr[TOIInput]) -> TOIOutput = c.b3TimeOfImpact
355
+ public foreign function collide_spheres(manifold: ptr[LocalManifold], capacity: int, sphere_a: const_ptr[Sphere], sphere_b: const_ptr[Sphere], transform_bto_a: Transform) -> void = c.b3CollideSpheres
356
+ public foreign function collide_capsule_and_sphere(manifold: ptr[LocalManifold], capacity: int, capsule_a: const_ptr[Capsule], sphere_b: const_ptr[Sphere], transform_bto_a: Transform) -> void = c.b3CollideCapsuleAndSphere
357
+ public foreign function collide_hull_and_sphere(manifold: ptr[LocalManifold], capacity: int, hull_a: const_ptr[HullData], sphere_b: const_ptr[Sphere], transform_bto_a: Transform, cache: ptr[SimplexCache]) -> void = c.b3CollideHullAndSphere
358
+ public foreign function collide_capsules(manifold: ptr[LocalManifold], capacity: int, capsule_a: const_ptr[Capsule], capsule_b: const_ptr[Capsule], transform_bto_a: Transform) -> void = c.b3CollideCapsules
359
+ public foreign function collide_hull_and_capsule(manifold: ptr[LocalManifold], capacity: int, hull_a: const_ptr[HullData], capsule_b: const_ptr[Capsule], transform_bto_a: Transform, cache: ptr[SimplexCache]) -> void = c.b3CollideHullAndCapsule
360
+ public foreign function collide_hulls(manifold: ptr[LocalManifold], capacity: int, hull_a: const_ptr[HullData], hull_b: const_ptr[HullData], transform_bto_a: Transform, cache: ptr[SATCache]) -> void = c.b3CollideHulls
361
+ public foreign function collide_triangle_and_capsule(manifold: ptr[LocalManifold], capacity: int, triangle_a: const_ptr[Vec3], capsule_b: const_ptr[Capsule], cache: ptr[SimplexCache]) -> void = c.b3CollideTriangleAndCapsule
362
+ public foreign function collide_triangle_and_hull(manifold: ptr[LocalManifold], capacity: int, v1: Vec3, v2: Vec3, v3: Vec3, triangle_flags: int, hull_b: const_ptr[HullData], cache: ptr[SATCache], enable_speculative: bool) -> void = c.b3CollideTriangleAndHull
363
+ public foreign function collide_triangle_and_sphere(manifold: ptr[LocalManifold], capacity: int, triangle_a: const_ptr[Vec3], sphere_b: const_ptr[Sphere]) -> void = c.b3CollideTriangleAndSphere
364
+ public foreign function solve_planes(target_delta: Vec3, planes: ptr[CollisionPlane], count: int) -> PlaneSolverResult = c.b3SolvePlanes
365
+ public foreign function clip_vector(vector: Vec3, planes: const_ptr[CollisionPlane], count: int) -> Vec3 = c.b3ClipVector
366
+ public foreign function create_world(in world_def: WorldDef) -> WorldId = c.b3CreateWorld
367
+ public foreign function destroy_world(world_id: WorldId) -> void = c.b3DestroyWorld
368
+ public foreign function get_world_count() -> int = c.b3GetWorldCount
369
+ public foreign function get_max_world_count() -> int = c.b3GetMaxWorldCount
370
+ public foreign function world_is_valid(id: WorldId) -> bool = c.b3World_IsValid
371
+ public foreign function world_step(world_id: WorldId, time_step: float, sub_step_count: int) -> void = c.b3World_Step
372
+ public foreign function world_draw(world_id: WorldId, inout draw: DebugDraw, mask_bits: ulong) -> void = c.b3World_Draw
373
+ public foreign function world_get_bounds(world_id: WorldId) -> AABB = c.b3World_GetBounds
374
+ public foreign function world_get_body_events(world_id: WorldId) -> BodyEvents = c.b3World_GetBodyEvents
375
+ public foreign function world_get_sensor_events(world_id: WorldId) -> SensorEvents = c.b3World_GetSensorEvents
376
+ public foreign function world_get_contact_events(world_id: WorldId) -> ContactEvents = c.b3World_GetContactEvents
377
+ public foreign function world_get_joint_events(world_id: WorldId) -> JointEvents = c.b3World_GetJointEvents
378
+ public foreign function world_overlap_aabb(world_id: WorldId, aabb: AABB, filter: QueryFilter, fcn: OverlapResultFcn, context: ptr[void]) -> TreeStats = c.b3World_OverlapAABB
379
+ public foreign function world_overlap_shape(world_id: WorldId, origin: Vec3, proxy: const_ptr[ShapeProxy], filter: QueryFilter, fcn: OverlapResultFcn, context: ptr[void]) -> TreeStats = c.b3World_OverlapShape
380
+ public foreign function world_cast_ray(world_id: WorldId, origin: Vec3, translation: Vec3, filter: QueryFilter, fcn: CastResultFcn, context: ptr[void]) -> TreeStats = c.b3World_CastRay
381
+ public foreign function world_cast_ray_closest(world_id: WorldId, origin: Vec3, translation: Vec3, filter: QueryFilter) -> RayResult = c.b3World_CastRayClosest
382
+ public foreign function world_cast_shape(world_id: WorldId, origin: Vec3, proxy: const_ptr[ShapeProxy], translation: Vec3, filter: QueryFilter, fcn: CastResultFcn, context: ptr[void]) -> TreeStats = c.b3World_CastShape
383
+ public foreign function world_cast_mover(world_id: WorldId, origin: Vec3, mover: const_ptr[Capsule], translation: Vec3, filter: QueryFilter, fcn: MoverFilterFcn, context: ptr[void]) -> float = c.b3World_CastMover
384
+ public foreign function world_collide_mover(world_id: WorldId, origin: Vec3, mover: const_ptr[Capsule], filter: QueryFilter, fcn: PlaneResultFcn, context: ptr[void]) -> void = c.b3World_CollideMover
385
+ public foreign function world_enable_sleeping(world_id: WorldId, flag: bool) -> void = c.b3World_EnableSleeping
386
+ public foreign function world_is_sleeping_enabled(world_id: WorldId) -> bool = c.b3World_IsSleepingEnabled
387
+ public foreign function world_enable_continuous(world_id: WorldId, flag: bool) -> void = c.b3World_EnableContinuous
388
+ public foreign function world_is_continuous_enabled(world_id: WorldId) -> bool = c.b3World_IsContinuousEnabled
389
+ public foreign function world_set_restitution_threshold(world_id: WorldId, value: float) -> void = c.b3World_SetRestitutionThreshold
390
+ public foreign function world_get_restitution_threshold(world_id: WorldId) -> float = c.b3World_GetRestitutionThreshold
391
+ public foreign function world_set_hit_event_threshold(world_id: WorldId, value: float) -> void = c.b3World_SetHitEventThreshold
392
+ public foreign function world_get_hit_event_threshold(world_id: WorldId) -> float = c.b3World_GetHitEventThreshold
393
+ public foreign function world_set_custom_filter_callback(world_id: WorldId, fcn: CustomFilterFcn, context: ptr[void]) -> void = c.b3World_SetCustomFilterCallback
394
+ public foreign function world_set_pre_solve_callback(world_id: WorldId, fcn: PreSolveFcn, context: ptr[void]) -> void = c.b3World_SetPreSolveCallback
395
+ public foreign function world_set_gravity(world_id: WorldId, gravity: Vec3) -> void = c.b3World_SetGravity
396
+ public foreign function world_get_gravity(world_id: WorldId) -> Vec3 = c.b3World_GetGravity
397
+ public foreign function world_explode(world_id: WorldId, in explosion_def: ExplosionDef) -> void = c.b3World_Explode
398
+ public foreign function world_set_contact_tuning(world_id: WorldId, hertz: float, damping_ratio: float, contact_speed: float) -> void = c.b3World_SetContactTuning
399
+ public foreign function world_set_contact_recycle_distance(world_id: WorldId, recycle_distance: float) -> void = c.b3World_SetContactRecycleDistance
400
+ public foreign function world_get_contact_recycle_distance(world_id: WorldId) -> float = c.b3World_GetContactRecycleDistance
401
+ public foreign function world_set_maximum_linear_speed(world_id: WorldId, maximum_linear_speed: float) -> void = c.b3World_SetMaximumLinearSpeed
402
+ public foreign function world_get_maximum_linear_speed(world_id: WorldId) -> float = c.b3World_GetMaximumLinearSpeed
403
+ public foreign function world_enable_warm_starting(world_id: WorldId, flag: bool) -> void = c.b3World_EnableWarmStarting
404
+ public foreign function world_is_warm_starting_enabled(world_id: WorldId) -> bool = c.b3World_IsWarmStartingEnabled
405
+ public foreign function world_get_awake_body_count(world_id: WorldId) -> int = c.b3World_GetAwakeBodyCount
406
+ public foreign function world_get_profile(world_id: WorldId) -> Profile = c.b3World_GetProfile
407
+ public foreign function world_get_counters(world_id: WorldId) -> Counters = c.b3World_GetCounters
408
+ public foreign function world_get_max_capacity(world_id: WorldId) -> Capacity = c.b3World_GetMaxCapacity
409
+ public foreign function world_set_user_data(world_id: WorldId, user_data: ptr[void]) -> void = c.b3World_SetUserData
410
+ public foreign function world_get_user_data(world_id: WorldId) -> ptr[void] = c.b3World_GetUserData
411
+ public foreign function world_set_friction_callback(world_id: WorldId, callback: FrictionCallback) -> void = c.b3World_SetFrictionCallback
412
+ public foreign function world_set_restitution_callback(world_id: WorldId, callback: RestitutionCallback) -> void = c.b3World_SetRestitutionCallback
413
+ public foreign function world_set_worker_count(world_id: WorldId, count: int) -> void = c.b3World_SetWorkerCount
414
+ public foreign function world_get_worker_count(world_id: WorldId) -> int = c.b3World_GetWorkerCount
415
+ public foreign function world_dump_memory_stats(world_id: WorldId) -> void = c.b3World_DumpMemoryStats
416
+ public foreign function world_dump_shape_bounds(world_id: WorldId, type_: BodyType) -> void = c.b3World_DumpShapeBounds
417
+ public foreign function world_rebuild_static_tree(world_id: WorldId) -> void = c.b3World_RebuildStaticTree
418
+ public foreign function world_enable_speculative(world_id: WorldId, flag: bool) -> void = c.b3World_EnableSpeculative
419
+ public foreign function create_recording(byte_capacity: int) -> Recording = c.b3CreateRecording
420
+ public foreign function destroy_recording(recording: Recording) -> void = c.b3DestroyRecording
421
+ public foreign function recording_get_data(recording: Recording) -> const_ptr[ubyte] = c.b3Recording_GetData
422
+ public foreign function recording_get_size(recording: Recording) -> int = c.b3Recording_GetSize
423
+ public foreign function world_start_recording(world_id: WorldId, recording: Recording) -> void = c.b3World_StartRecording
424
+ public foreign function world_stop_recording(world_id: WorldId) -> void = c.b3World_StopRecording
425
+ public foreign function save_recording_to_file(recording: Recording, path: str as cstr) -> bool = c.b3SaveRecordingToFile
426
+ public foreign function load_recording_from_file(path: str as cstr) -> Recording = c.b3LoadRecordingFromFile
427
+ public foreign function validate_replay(data: const_ptr[void], size: int, worker_count: int) -> bool = c.b3ValidateReplay
428
+ public foreign function create_player(data: const_ptr[void], size: int, worker_count: int) -> RecPlayer = c.b3CreatePlayer
429
+ public foreign function destroy_player(player: RecPlayer) -> void = c.b3DestroyPlayer
430
+ public foreign function rec_player_step_frame(player: RecPlayer) -> bool = c.b3RecPlayer_StepFrame
431
+ public foreign function rec_player_sub_step_frame(player: RecPlayer) -> void = c.b3RecPlayer_SubStepFrame
432
+ public foreign function rec_player_restart(player: RecPlayer) -> void = c.b3RecPlayer_Restart
433
+ public foreign function rec_player_seek_frame(player: RecPlayer, target_frame: int) -> void = c.b3RecPlayer_SeekFrame
434
+ public foreign function rec_player_get_world_id(player: RecPlayer) -> WorldId = c.b3RecPlayer_GetWorldId
435
+ public foreign function rec_player_get_frame(player: RecPlayer) -> int = c.b3RecPlayer_GetFrame
436
+ public foreign function rec_player_get_frame_count(player: RecPlayer) -> int = c.b3RecPlayer_GetFrameCount
437
+ public foreign function rec_player_is_at_end(player: RecPlayer) -> bool = c.b3RecPlayer_IsAtEnd
438
+ public foreign function rec_player_is_at_pre_step(player: RecPlayer) -> bool = c.b3RecPlayer_IsAtPreStep
439
+ public foreign function rec_player_has_diverged(player: RecPlayer) -> bool = c.b3RecPlayer_HasDiverged
440
+ public foreign function rec_player_get_info(player: RecPlayer) -> RecPlayerInfo = c.b3RecPlayer_GetInfo
441
+ public foreign function rec_player_get_diverge_frame(player: RecPlayer) -> int = c.b3RecPlayer_GetDivergeFrame
442
+ public foreign function rec_player_set_worker_count(player: RecPlayer, count: int) -> void = c.b3RecPlayer_SetWorkerCount
443
+ public foreign function rec_player_set_keyframe_policy(player: RecPlayer, budget_bytes: ptr_uint, min_interval_frames: int) -> void = c.b3RecPlayer_SetKeyframePolicy
444
+ public foreign function rec_player_get_keyframe_budget(player: RecPlayer) -> ptr_uint = c.b3RecPlayer_GetKeyframeBudget
445
+ public foreign function rec_player_get_keyframe_min_interval(player: RecPlayer) -> int = c.b3RecPlayer_GetKeyframeMinInterval
446
+ public foreign function rec_player_get_keyframe_interval(player: RecPlayer) -> int = c.b3RecPlayer_GetKeyframeInterval
447
+ public foreign function rec_player_get_keyframe_bytes(player: RecPlayer) -> ptr_uint = c.b3RecPlayer_GetKeyframeBytes
448
+ public foreign function rec_player_get_body_count(player: RecPlayer) -> int = c.b3RecPlayer_GetBodyCount
449
+ public foreign function rec_player_get_body_id(player: RecPlayer, index: int) -> BodyId = c.b3RecPlayer_GetBodyId
450
+ public foreign function rec_player_set_debug_shape_callbacks(player: RecPlayer, create_debug_shape: CreateDebugShapeCallback, destroy_debug_shape: DestroyDebugShapeCallback, context: ptr[void]) -> void = c.b3RecPlayer_SetDebugShapeCallbacks
451
+ public foreign function rec_player_draw_frame_queries(player: RecPlayer, draw: ptr[DebugDraw], query_index: int, selected_index: int) -> void = c.b3RecPlayer_DrawFrameQueries
452
+ public foreign function rec_player_get_frame_query_count(player: RecPlayer) -> int = c.b3RecPlayer_GetFrameQueryCount
453
+ public foreign function rec_player_get_frame_query(player: RecPlayer, index: int) -> RecQueryInfo = c.b3RecPlayer_GetFrameQuery
454
+ public foreign function rec_player_get_frame_query_hit(player: RecPlayer, query_index: int, hit_index: int) -> RecQueryHit = c.b3RecPlayer_GetFrameQueryHit
455
+ public foreign function create_body(world_id: WorldId, in body_def: BodyDef) -> BodyId = c.b3CreateBody
456
+ public foreign function destroy_body(body_id: BodyId) -> void = c.b3DestroyBody
457
+ public foreign function body_is_valid(id: BodyId) -> bool = c.b3Body_IsValid
458
+ public foreign function body_get_type(body_id: BodyId) -> BodyType = c.b3Body_GetType
459
+ public foreign function body_set_type(body_id: BodyId, type_: BodyType) -> void = c.b3Body_SetType
460
+ public foreign function body_set_name(body_id: BodyId, name: str as cstr) -> void = c.b3Body_SetName
461
+ public foreign function body_get_name(body_id: BodyId) -> cstr = c.b3Body_GetName
462
+ public foreign function body_set_user_data(body_id: BodyId, user_data: ptr[void]) -> void = c.b3Body_SetUserData
463
+ public foreign function body_get_user_data(body_id: BodyId) -> ptr[void] = c.b3Body_GetUserData
464
+ public foreign function body_get_position(body_id: BodyId) -> Pos = c.b3Body_GetPosition
465
+ public foreign function body_get_rotation(body_id: BodyId) -> Quat = c.b3Body_GetRotation
466
+ public foreign function body_get_transform(body_id: BodyId) -> WorldTransform = c.b3Body_GetTransform
467
+ public foreign function body_set_transform(body_id: BodyId, position: Vec3, rotation: Quat) -> void = c.b3Body_SetTransform
468
+ public foreign function body_get_local_point(body_id: BodyId, world_point: Vec3) -> Vec3 = c.b3Body_GetLocalPoint
469
+ public foreign function body_get_world_point(body_id: BodyId, local_point: Vec3) -> Pos = c.b3Body_GetWorldPoint
470
+ public foreign function body_get_local_vector(body_id: BodyId, world_vector: Vec3) -> Vec3 = c.b3Body_GetLocalVector
471
+ public foreign function body_get_world_vector(body_id: BodyId, local_vector: Vec3) -> Vec3 = c.b3Body_GetWorldVector
472
+ public foreign function body_get_linear_velocity(body_id: BodyId) -> Vec3 = c.b3Body_GetLinearVelocity
473
+ public foreign function body_get_angular_velocity(body_id: BodyId) -> Vec3 = c.b3Body_GetAngularVelocity
474
+ public foreign function body_set_linear_velocity(body_id: BodyId, linear_velocity: Vec3) -> void = c.b3Body_SetLinearVelocity
475
+ public foreign function body_set_angular_velocity(body_id: BodyId, angular_velocity: Vec3) -> void = c.b3Body_SetAngularVelocity
476
+ public foreign function body_set_target_transform(body_id: BodyId, target: Transform, time_step: float, wake: bool) -> void = c.b3Body_SetTargetTransform
477
+ public foreign function body_get_local_point_velocity(body_id: BodyId, local_point: Vec3) -> Vec3 = c.b3Body_GetLocalPointVelocity
478
+ public foreign function body_get_world_point_velocity(body_id: BodyId, world_point: Vec3) -> Vec3 = c.b3Body_GetWorldPointVelocity
479
+ public foreign function body_apply_force(body_id: BodyId, force: Vec3, point: Vec3, wake: bool) -> void = c.b3Body_ApplyForce
480
+ public foreign function body_apply_force_to_center(body_id: BodyId, force: Vec3, wake: bool) -> void = c.b3Body_ApplyForceToCenter
481
+ public foreign function body_apply_torque(body_id: BodyId, torque: Vec3, wake: bool) -> void = c.b3Body_ApplyTorque
482
+ public foreign function body_apply_linear_impulse(body_id: BodyId, impulse: Vec3, point: Vec3, wake: bool) -> void = c.b3Body_ApplyLinearImpulse
483
+ public foreign function body_apply_linear_impulse_to_center(body_id: BodyId, impulse: Vec3, wake: bool) -> void = c.b3Body_ApplyLinearImpulseToCenter
484
+ public foreign function body_apply_angular_impulse(body_id: BodyId, impulse: Vec3, wake: bool) -> void = c.b3Body_ApplyAngularImpulse
485
+ public foreign function body_get_mass(body_id: BodyId) -> float = c.b3Body_GetMass
486
+ public foreign function body_get_local_rotational_inertia(body_id: BodyId) -> Matrix3 = c.b3Body_GetLocalRotationalInertia
487
+ public foreign function body_get_inverse_mass(body_id: BodyId) -> float = c.b3Body_GetInverseMass
488
+ public foreign function body_get_world_inverse_rotational_inertia(body_id: BodyId) -> Matrix3 = c.b3Body_GetWorldInverseRotationalInertia
489
+ public foreign function body_get_local_center(body_id: BodyId) -> Vec3 = c.b3Body_GetLocalCenter
490
+ public foreign function body_get_world_center(body_id: BodyId) -> Pos = c.b3Body_GetWorldCenter
491
+ public foreign function body_set_mass_data(body_id: BodyId, mass_data: MassData) -> void = c.b3Body_SetMassData
492
+ public foreign function body_get_mass_data(body_id: BodyId) -> MassData = c.b3Body_GetMassData
493
+ public foreign function body_apply_mass_from_shapes(body_id: BodyId) -> void = c.b3Body_ApplyMassFromShapes
494
+ public foreign function body_set_linear_damping(body_id: BodyId, linear_damping: float) -> void = c.b3Body_SetLinearDamping
495
+ public foreign function body_get_linear_damping(body_id: BodyId) -> float = c.b3Body_GetLinearDamping
496
+ public foreign function body_set_angular_damping(body_id: BodyId, angular_damping: float) -> void = c.b3Body_SetAngularDamping
497
+ public foreign function body_get_angular_damping(body_id: BodyId) -> float = c.b3Body_GetAngularDamping
498
+ public foreign function body_set_gravity_scale(body_id: BodyId, gravity_scale: float) -> void = c.b3Body_SetGravityScale
499
+ public foreign function body_get_gravity_scale(body_id: BodyId) -> float = c.b3Body_GetGravityScale
500
+ public foreign function body_is_awake(body_id: BodyId) -> bool = c.b3Body_IsAwake
501
+ public foreign function body_set_awake(body_id: BodyId, awake: bool) -> void = c.b3Body_SetAwake
502
+ public foreign function body_enable_sleep(body_id: BodyId, enable_sleep: bool) -> void = c.b3Body_EnableSleep
503
+ public foreign function body_is_sleep_enabled(body_id: BodyId) -> bool = c.b3Body_IsSleepEnabled
504
+ public foreign function body_set_sleep_threshold(body_id: BodyId, sleep_threshold: float) -> void = c.b3Body_SetSleepThreshold
505
+ public foreign function body_get_sleep_threshold(body_id: BodyId) -> float = c.b3Body_GetSleepThreshold
506
+ public foreign function body_is_enabled(body_id: BodyId) -> bool = c.b3Body_IsEnabled
507
+ public foreign function body_disable(body_id: BodyId) -> void = c.b3Body_Disable
508
+ public foreign function body_enable(body_id: BodyId) -> void = c.b3Body_Enable
509
+ public foreign function body_set_motion_locks(body_id: BodyId, locks: MotionLocks) -> void = c.b3Body_SetMotionLocks
510
+ public foreign function body_get_motion_locks(body_id: BodyId) -> MotionLocks = c.b3Body_GetMotionLocks
511
+ public foreign function body_set_bullet(body_id: BodyId, flag: bool) -> void = c.b3Body_SetBullet
512
+ public foreign function body_is_bullet(body_id: BodyId) -> bool = c.b3Body_IsBullet
513
+ public foreign function body_allow_fast_rotation(body_id: BodyId, flag: bool) -> void = c.b3Body_AllowFastRotation
514
+ public foreign function body_is_fast_rotation_allowed(body_id: BodyId) -> bool = c.b3Body_IsFastRotationAllowed
515
+ public foreign function body_enable_contact_recycling(body_id: BodyId, flag: bool) -> void = c.b3Body_EnableContactRecycling
516
+ public foreign function body_is_contact_recycling_enabled(body_id: BodyId) -> bool = c.b3Body_IsContactRecyclingEnabled
517
+ public foreign function body_enable_hit_events(body_id: BodyId, flag: bool) -> void = c.b3Body_EnableHitEvents
518
+ public foreign function body_get_world(body_id: BodyId) -> WorldId = c.b3Body_GetWorld
519
+ public foreign function body_get_shape_count(body_id: BodyId) -> int = c.b3Body_GetShapeCount
520
+ public foreign function body_get_shapes(body_id: BodyId, shape_array: ptr[ShapeId], capacity: int) -> int = c.b3Body_GetShapes
521
+ public foreign function body_get_joint_count(body_id: BodyId) -> int = c.b3Body_GetJointCount
522
+ public foreign function body_get_joints(body_id: BodyId, joint_array: ptr[JointId], capacity: int) -> int = c.b3Body_GetJoints
523
+ public foreign function body_get_contact_capacity(body_id: BodyId) -> int = c.b3Body_GetContactCapacity
524
+ public foreign function body_get_contact_data(body_id: BodyId, contact_data: ptr[ContactData], capacity: int) -> int = c.b3Body_GetContactData
525
+ public foreign function body_compute_aabb(body_id: BodyId) -> AABB = c.b3Body_ComputeAABB
526
+ public foreign function body_get_closest_point(body_id: BodyId, result: ptr[Vec3], target: Vec3) -> float = c.b3Body_GetClosestPoint
527
+ public foreign function body_cast_ray(body_id: BodyId, origin: Vec3, translation: Vec3, filter: QueryFilter, max_fraction: float, body_transform: Transform) -> BodyCastResult = c.b3Body_CastRay
528
+ public foreign function body_cast_shape(body_id: BodyId, origin: Vec3, proxy: const_ptr[ShapeProxy], translation: Vec3, filter: QueryFilter, max_fraction: float, can_encroach: bool, body_transform: Transform) -> BodyCastResult = c.b3Body_CastShape
529
+ public foreign function body_overlap_shape(body_id: BodyId, origin: Vec3, proxy: const_ptr[ShapeProxy], filter: QueryFilter, body_transform: Transform) -> bool = c.b3Body_OverlapShape
530
+ public foreign function body_collide_mover(body_id: BodyId, body_planes: ptr[BodyPlaneResult], plane_capacity: int, origin: Vec3, mover: const_ptr[Capsule], filter: QueryFilter, body_transform: Transform) -> int = c.b3Body_CollideMover
531
+ public foreign function create_sphere_shape(body_id: BodyId, in shape_def: ShapeDef, in sphere: Sphere) -> ShapeId = c.b3CreateSphereShape
532
+ public foreign function create_capsule_shape(body_id: BodyId, in shape_def: ShapeDef, in capsule: Capsule) -> ShapeId = c.b3CreateCapsuleShape
533
+ public foreign function create_hull_shape(body_id: BodyId, in shape_def: ShapeDef, in hull: HullData) -> ShapeId = c.b3CreateHullShape
534
+ public foreign function create_transformed_hull_shape(body_id: BodyId, in shape_def: ShapeDef, in hull: HullData, transform: Transform, scale: Vec3) -> ShapeId = c.b3CreateTransformedHullShape
535
+ public foreign function create_mesh_shape(body_id: BodyId, in shape_def: ShapeDef, in mesh: MeshData, scale: Vec3) -> ShapeId = c.b3CreateMeshShape
536
+ public foreign function create_height_field_shape(body_id: BodyId, in shape_def: ShapeDef, in height_field: HeightFieldData) -> ShapeId = c.b3CreateHeightFieldShape
537
+ public foreign function create_baked_compound_shape(body_id: BodyId, inout shape_def: ShapeDef, compound: const_ptr[CompoundData]) -> ShapeId = c.b3CreateBakedCompoundShape
538
+ public foreign function destroy_shape(shape_id: ShapeId, update_body_mass: bool) -> void = c.b3DestroyShape
539
+ public foreign function shape_is_valid(id: ShapeId) -> bool = c.b3Shape_IsValid
540
+ public foreign function shape_get_type(shape_id: ShapeId) -> ShapeType = c.b3Shape_GetType
541
+ public foreign function shape_get_body(shape_id: ShapeId) -> BodyId = c.b3Shape_GetBody
542
+ public foreign function shape_get_world(shape_id: ShapeId) -> WorldId = c.b3Shape_GetWorld
543
+ public foreign function shape_is_sensor(shape_id: ShapeId) -> bool = c.b3Shape_IsSensor
544
+ public foreign function shape_set_name(shape_id: ShapeId, name: str as cstr) -> void = c.b3Shape_SetName
545
+ public foreign function shape_get_name(shape_id: ShapeId) -> cstr = c.b3Shape_GetName
546
+ public foreign function shape_set_user_data(shape_id: ShapeId, user_data: ptr[void]) -> void = c.b3Shape_SetUserData
547
+ public foreign function shape_get_user_data(shape_id: ShapeId) -> ptr[void] = c.b3Shape_GetUserData
548
+ public foreign function shape_set_density(shape_id: ShapeId, density: float, update_body_mass: bool) -> void = c.b3Shape_SetDensity
549
+ public foreign function shape_get_density(shape_id: ShapeId) -> float = c.b3Shape_GetDensity
550
+ public foreign function shape_set_friction(shape_id: ShapeId, friction: float) -> void = c.b3Shape_SetFriction
551
+ public foreign function shape_get_friction(shape_id: ShapeId) -> float = c.b3Shape_GetFriction
552
+ public foreign function shape_set_restitution(shape_id: ShapeId, restitution: float) -> void = c.b3Shape_SetRestitution
553
+ public foreign function shape_get_restitution(shape_id: ShapeId) -> float = c.b3Shape_GetRestitution
554
+ public foreign function shape_set_surface_material(shape_id: ShapeId, surface_material: SurfaceMaterial) -> void = c.b3Shape_SetSurfaceMaterial
555
+ public foreign function shape_get_surface_material(shape_id: ShapeId) -> SurfaceMaterial = c.b3Shape_GetSurfaceMaterial
556
+ public foreign function shape_get_mesh_material_count(shape_id: ShapeId) -> int = c.b3Shape_GetMeshMaterialCount
557
+ public foreign function shape_set_mesh_material(shape_id: ShapeId, surface_material: SurfaceMaterial, index: int) -> void = c.b3Shape_SetMeshMaterial
558
+ public foreign function shape_get_mesh_surface_material(shape_id: ShapeId, index: int) -> SurfaceMaterial = c.b3Shape_GetMeshSurfaceMaterial
559
+ public foreign function shape_get_filter(shape_id: ShapeId) -> Filter = c.b3Shape_GetFilter
560
+ public foreign function shape_set_filter(shape_id: ShapeId, filter: Filter, invoke_contacts: bool) -> void = c.b3Shape_SetFilter
561
+ public foreign function shape_enable_sensor_events(shape_id: ShapeId, flag: bool) -> void = c.b3Shape_EnableSensorEvents
562
+ public foreign function shape_are_sensor_events_enabled(shape_id: ShapeId) -> bool = c.b3Shape_AreSensorEventsEnabled
563
+ public foreign function shape_enable_contact_events(shape_id: ShapeId, flag: bool) -> void = c.b3Shape_EnableContactEvents
564
+ public foreign function shape_are_contact_events_enabled(shape_id: ShapeId) -> bool = c.b3Shape_AreContactEventsEnabled
565
+ public foreign function shape_enable_pre_solve_events(shape_id: ShapeId, flag: bool) -> void = c.b3Shape_EnablePreSolveEvents
566
+ public foreign function shape_are_pre_solve_events_enabled(shape_id: ShapeId) -> bool = c.b3Shape_ArePreSolveEventsEnabled
567
+ public foreign function shape_enable_hit_events(shape_id: ShapeId, flag: bool) -> void = c.b3Shape_EnableHitEvents
568
+ public foreign function shape_are_hit_events_enabled(shape_id: ShapeId) -> bool = c.b3Shape_AreHitEventsEnabled
569
+ public foreign function shape_ray_cast(shape_id: ShapeId, origin: Vec3, translation: Vec3) -> WorldCastOutput = c.b3Shape_RayCast
570
+ public foreign function shape_get_sphere(shape_id: ShapeId) -> Sphere = c.b3Shape_GetSphere
571
+ public foreign function shape_get_capsule(shape_id: ShapeId) -> Capsule = c.b3Shape_GetCapsule
572
+ public foreign function shape_get_hull(shape_id: ShapeId) -> const_ptr[HullData] = c.b3Shape_GetHull
573
+ public foreign function shape_get_mesh(shape_id: ShapeId) -> Mesh = c.b3Shape_GetMesh
574
+ public foreign function shape_get_height_field(shape_id: ShapeId) -> const_ptr[HeightFieldData] = c.b3Shape_GetHeightField
575
+ public foreign function shape_set_sphere(shape_id: ShapeId, sphere: const_ptr[Sphere]) -> void = c.b3Shape_SetSphere
576
+ public foreign function shape_set_capsule(shape_id: ShapeId, capsule: const_ptr[Capsule]) -> void = c.b3Shape_SetCapsule
577
+ public foreign function shape_set_hull(shape_id: ShapeId, hull: const_ptr[HullData]) -> void = c.b3Shape_SetHull
578
+ public foreign function shape_set_mesh(shape_id: ShapeId, mesh_data: const_ptr[MeshData], scale: Vec3) -> void = c.b3Shape_SetMesh
579
+ public foreign function shape_get_contact_capacity(shape_id: ShapeId) -> int = c.b3Shape_GetContactCapacity
580
+ public foreign function shape_get_contact_data(shape_id: ShapeId, contact_data: ptr[ContactData], capacity: int) -> int = c.b3Shape_GetContactData
581
+ public foreign function shape_get_sensor_capacity(shape_id: ShapeId) -> int = c.b3Shape_GetSensorCapacity
582
+ public foreign function shape_get_sensor_data(shape_id: ShapeId, visitor_ids: ptr[ShapeId], capacity: int) -> int = c.b3Shape_GetSensorData
583
+ public foreign function shape_get_aabb(shape_id: ShapeId) -> AABB = c.b3Shape_GetAABB
584
+ public foreign function shape_compute_mass_data(shape_id: ShapeId) -> MassData = c.b3Shape_ComputeMassData
585
+ public foreign function shape_get_closest_point(shape_id: ShapeId, target: Vec3) -> Vec3 = c.b3Shape_GetClosestPoint
586
+ public foreign function shape_apply_wind(shape_id: ShapeId, wind: Vec3, drag: float, lift: float, max_speed: float, wake: bool) -> void = c.b3Shape_ApplyWind
587
+ public foreign function destroy_joint(joint_id: JointId, wake_attached: bool) -> void = c.b3DestroyJoint
588
+ public foreign function joint_is_valid(id: JointId) -> bool = c.b3Joint_IsValid
589
+ public foreign function joint_get_type(joint_id: JointId) -> JointType = c.b3Joint_GetType
590
+ public foreign function joint_get_body_a(joint_id: JointId) -> BodyId = c.b3Joint_GetBodyA
591
+ public foreign function joint_get_body_b(joint_id: JointId) -> BodyId = c.b3Joint_GetBodyB
592
+ public foreign function joint_get_world(joint_id: JointId) -> WorldId = c.b3Joint_GetWorld
593
+ public foreign function joint_set_local_frame_a(joint_id: JointId, local_frame: Transform) -> void = c.b3Joint_SetLocalFrameA
594
+ public foreign function joint_get_local_frame_a(joint_id: JointId) -> Transform = c.b3Joint_GetLocalFrameA
595
+ public foreign function joint_set_local_frame_b(joint_id: JointId, local_frame: Transform) -> void = c.b3Joint_SetLocalFrameB
596
+ public foreign function joint_get_local_frame_b(joint_id: JointId) -> Transform = c.b3Joint_GetLocalFrameB
597
+ public foreign function joint_set_collide_connected(joint_id: JointId, should_collide: bool) -> void = c.b3Joint_SetCollideConnected
598
+ public foreign function joint_get_collide_connected(joint_id: JointId) -> bool = c.b3Joint_GetCollideConnected
599
+ public foreign function joint_set_user_data(joint_id: JointId, user_data: ptr[void]) -> void = c.b3Joint_SetUserData
600
+ public foreign function joint_get_user_data(joint_id: JointId) -> ptr[void] = c.b3Joint_GetUserData
601
+ public foreign function joint_wake_bodies(joint_id: JointId) -> void = c.b3Joint_WakeBodies
602
+ public foreign function joint_get_constraint_force(joint_id: JointId) -> Vec3 = c.b3Joint_GetConstraintForce
603
+ public foreign function joint_get_constraint_torque(joint_id: JointId) -> Vec3 = c.b3Joint_GetConstraintTorque
604
+ public foreign function joint_get_linear_separation(joint_id: JointId) -> float = c.b3Joint_GetLinearSeparation
605
+ public foreign function joint_get_angular_separation(joint_id: JointId) -> float = c.b3Joint_GetAngularSeparation
606
+ public foreign function joint_set_constraint_tuning(joint_id: JointId, hertz: float, damping_ratio: float) -> void = c.b3Joint_SetConstraintTuning
607
+ public foreign function joint_get_constraint_tuning(joint_id: JointId, hertz: ptr[float], damping_ratio: ptr[float]) -> void = c.b3Joint_GetConstraintTuning
608
+ public foreign function joint_set_force_threshold(joint_id: JointId, threshold: float) -> void = c.b3Joint_SetForceThreshold
609
+ public foreign function joint_get_force_threshold(joint_id: JointId) -> float = c.b3Joint_GetForceThreshold
610
+ public foreign function joint_set_torque_threshold(joint_id: JointId, threshold: float) -> void = c.b3Joint_SetTorqueThreshold
611
+ public foreign function joint_get_torque_threshold(joint_id: JointId) -> float = c.b3Joint_GetTorqueThreshold
612
+ public foreign function create_parallel_joint(world_id: WorldId, in joint_def: ParallelJointDef) -> JointId = c.b3CreateParallelJoint
613
+ public foreign function parallel_joint_set_spring_hertz(joint_id: JointId, hertz: float) -> void = c.b3ParallelJoint_SetSpringHertz
614
+ public foreign function parallel_joint_set_spring_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3ParallelJoint_SetSpringDampingRatio
615
+ public foreign function parallel_joint_get_spring_hertz(joint_id: JointId) -> float = c.b3ParallelJoint_GetSpringHertz
616
+ public foreign function parallel_joint_get_spring_damping_ratio(joint_id: JointId) -> float = c.b3ParallelJoint_GetSpringDampingRatio
617
+ public foreign function parallel_joint_set_max_torque(joint_id: JointId, force: float) -> void = c.b3ParallelJoint_SetMaxTorque
618
+ public foreign function parallel_joint_get_max_torque(joint_id: JointId) -> float = c.b3ParallelJoint_GetMaxTorque
619
+ public foreign function create_distance_joint(world_id: WorldId, in joint_def: DistanceJointDef) -> JointId = c.b3CreateDistanceJoint
620
+ public foreign function distance_joint_set_length(joint_id: JointId, length: float) -> void = c.b3DistanceJoint_SetLength
621
+ public foreign function distance_joint_get_length(joint_id: JointId) -> float = c.b3DistanceJoint_GetLength
622
+ public foreign function distance_joint_enable_spring(joint_id: JointId, enable_spring: bool) -> void = c.b3DistanceJoint_EnableSpring
623
+ public foreign function distance_joint_is_spring_enabled(joint_id: JointId) -> bool = c.b3DistanceJoint_IsSpringEnabled
624
+ public foreign function distance_joint_set_spring_force_range(joint_id: JointId, lower_force: float, upper_force: float) -> void = c.b3DistanceJoint_SetSpringForceRange
625
+ public foreign function distance_joint_get_spring_force_range(joint_id: JointId, lower_force: ptr[float], upper_force: ptr[float]) -> void = c.b3DistanceJoint_GetSpringForceRange
626
+ public foreign function distance_joint_set_spring_hertz(joint_id: JointId, hertz: float) -> void = c.b3DistanceJoint_SetSpringHertz
627
+ public foreign function distance_joint_set_spring_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3DistanceJoint_SetSpringDampingRatio
628
+ public foreign function distance_joint_get_spring_hertz(joint_id: JointId) -> float = c.b3DistanceJoint_GetSpringHertz
629
+ public foreign function distance_joint_get_spring_damping_ratio(joint_id: JointId) -> float = c.b3DistanceJoint_GetSpringDampingRatio
630
+ public foreign function distance_joint_enable_limit(joint_id: JointId, enable_limit: bool) -> void = c.b3DistanceJoint_EnableLimit
631
+ public foreign function distance_joint_is_limit_enabled(joint_id: JointId) -> bool = c.b3DistanceJoint_IsLimitEnabled
632
+ public foreign function distance_joint_set_length_range(joint_id: JointId, min_length: float, max_length: float) -> void = c.b3DistanceJoint_SetLengthRange
633
+ public foreign function distance_joint_get_min_length(joint_id: JointId) -> float = c.b3DistanceJoint_GetMinLength
634
+ public foreign function distance_joint_get_max_length(joint_id: JointId) -> float = c.b3DistanceJoint_GetMaxLength
635
+ public foreign function distance_joint_get_current_length(joint_id: JointId) -> float = c.b3DistanceJoint_GetCurrentLength
636
+ public foreign function distance_joint_enable_motor(joint_id: JointId, enable_motor: bool) -> void = c.b3DistanceJoint_EnableMotor
637
+ public foreign function distance_joint_is_motor_enabled(joint_id: JointId) -> bool = c.b3DistanceJoint_IsMotorEnabled
638
+ public foreign function distance_joint_set_motor_speed(joint_id: JointId, motor_speed: float) -> void = c.b3DistanceJoint_SetMotorSpeed
639
+ public foreign function distance_joint_get_motor_speed(joint_id: JointId) -> float = c.b3DistanceJoint_GetMotorSpeed
640
+ public foreign function distance_joint_set_max_motor_force(joint_id: JointId, force: float) -> void = c.b3DistanceJoint_SetMaxMotorForce
641
+ public foreign function distance_joint_get_max_motor_force(joint_id: JointId) -> float = c.b3DistanceJoint_GetMaxMotorForce
642
+ public foreign function distance_joint_get_motor_force(joint_id: JointId) -> float = c.b3DistanceJoint_GetMotorForce
643
+ public foreign function create_motor_joint(world_id: WorldId, in joint_def: MotorJointDef) -> JointId = c.b3CreateMotorJoint
644
+ public foreign function motor_joint_set_linear_velocity(joint_id: JointId, velocity: Vec3) -> void = c.b3MotorJoint_SetLinearVelocity
645
+ public foreign function motor_joint_get_linear_velocity(joint_id: JointId) -> Vec3 = c.b3MotorJoint_GetLinearVelocity
646
+ public foreign function motor_joint_set_angular_velocity(joint_id: JointId, velocity: Vec3) -> void = c.b3MotorJoint_SetAngularVelocity
647
+ public foreign function motor_joint_get_angular_velocity(joint_id: JointId) -> Vec3 = c.b3MotorJoint_GetAngularVelocity
648
+ public foreign function motor_joint_set_max_velocity_force(joint_id: JointId, max_force: float) -> void = c.b3MotorJoint_SetMaxVelocityForce
649
+ public foreign function motor_joint_get_max_velocity_force(joint_id: JointId) -> float = c.b3MotorJoint_GetMaxVelocityForce
650
+ public foreign function motor_joint_set_max_velocity_torque(joint_id: JointId, max_torque: float) -> void = c.b3MotorJoint_SetMaxVelocityTorque
651
+ public foreign function motor_joint_get_max_velocity_torque(joint_id: JointId) -> float = c.b3MotorJoint_GetMaxVelocityTorque
652
+ public foreign function motor_joint_set_linear_hertz(joint_id: JointId, hertz: float) -> void = c.b3MotorJoint_SetLinearHertz
653
+ public foreign function motor_joint_get_linear_hertz(joint_id: JointId) -> float = c.b3MotorJoint_GetLinearHertz
654
+ public foreign function motor_joint_set_linear_damping_ratio(joint_id: JointId, damping: float) -> void = c.b3MotorJoint_SetLinearDampingRatio
655
+ public foreign function motor_joint_get_linear_damping_ratio(joint_id: JointId) -> float = c.b3MotorJoint_GetLinearDampingRatio
656
+ public foreign function motor_joint_set_angular_hertz(joint_id: JointId, hertz: float) -> void = c.b3MotorJoint_SetAngularHertz
657
+ public foreign function motor_joint_get_angular_hertz(joint_id: JointId) -> float = c.b3MotorJoint_GetAngularHertz
658
+ public foreign function motor_joint_set_angular_damping_ratio(joint_id: JointId, damping: float) -> void = c.b3MotorJoint_SetAngularDampingRatio
659
+ public foreign function motor_joint_get_angular_damping_ratio(joint_id: JointId) -> float = c.b3MotorJoint_GetAngularDampingRatio
660
+ public foreign function motor_joint_set_max_spring_force(joint_id: JointId, max_force: float) -> void = c.b3MotorJoint_SetMaxSpringForce
661
+ public foreign function motor_joint_get_max_spring_force(joint_id: JointId) -> float = c.b3MotorJoint_GetMaxSpringForce
662
+ public foreign function motor_joint_set_max_spring_torque(joint_id: JointId, max_torque: float) -> void = c.b3MotorJoint_SetMaxSpringTorque
663
+ public foreign function motor_joint_get_max_spring_torque(joint_id: JointId) -> float = c.b3MotorJoint_GetMaxSpringTorque
664
+ public foreign function create_filter_joint(world_id: WorldId, in joint_def: FilterJointDef) -> JointId = c.b3CreateFilterJoint
665
+ public foreign function create_prismatic_joint(world_id: WorldId, in joint_def: PrismaticJointDef) -> JointId = c.b3CreatePrismaticJoint
666
+ public foreign function prismatic_joint_enable_spring(joint_id: JointId, enable_spring: bool) -> void = c.b3PrismaticJoint_EnableSpring
667
+ public foreign function prismatic_joint_is_spring_enabled(joint_id: JointId) -> bool = c.b3PrismaticJoint_IsSpringEnabled
668
+ public foreign function prismatic_joint_set_spring_hertz(joint_id: JointId, hertz: float) -> void = c.b3PrismaticJoint_SetSpringHertz
669
+ public foreign function prismatic_joint_get_spring_hertz(joint_id: JointId) -> float = c.b3PrismaticJoint_GetSpringHertz
670
+ public foreign function prismatic_joint_set_spring_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3PrismaticJoint_SetSpringDampingRatio
671
+ public foreign function prismatic_joint_get_spring_damping_ratio(joint_id: JointId) -> float = c.b3PrismaticJoint_GetSpringDampingRatio
672
+ public foreign function prismatic_joint_set_target_translation(joint_id: JointId, target_translation: float) -> void = c.b3PrismaticJoint_SetTargetTranslation
673
+ public foreign function prismatic_joint_get_target_translation(joint_id: JointId) -> float = c.b3PrismaticJoint_GetTargetTranslation
674
+ public foreign function prismatic_joint_enable_limit(joint_id: JointId, enable_limit: bool) -> void = c.b3PrismaticJoint_EnableLimit
675
+ public foreign function prismatic_joint_is_limit_enabled(joint_id: JointId) -> bool = c.b3PrismaticJoint_IsLimitEnabled
676
+ public foreign function prismatic_joint_get_lower_limit(joint_id: JointId) -> float = c.b3PrismaticJoint_GetLowerLimit
677
+ public foreign function prismatic_joint_get_upper_limit(joint_id: JointId) -> float = c.b3PrismaticJoint_GetUpperLimit
678
+ public foreign function prismatic_joint_set_limits(joint_id: JointId, lower: float, upper: float) -> void = c.b3PrismaticJoint_SetLimits
679
+ public foreign function prismatic_joint_enable_motor(joint_id: JointId, enable_motor: bool) -> void = c.b3PrismaticJoint_EnableMotor
680
+ public foreign function prismatic_joint_is_motor_enabled(joint_id: JointId) -> bool = c.b3PrismaticJoint_IsMotorEnabled
681
+ public foreign function prismatic_joint_set_motor_speed(joint_id: JointId, motor_speed: float) -> void = c.b3PrismaticJoint_SetMotorSpeed
682
+ public foreign function prismatic_joint_get_motor_speed(joint_id: JointId) -> float = c.b3PrismaticJoint_GetMotorSpeed
683
+ public foreign function prismatic_joint_set_max_motor_force(joint_id: JointId, force: float) -> void = c.b3PrismaticJoint_SetMaxMotorForce
684
+ public foreign function prismatic_joint_get_max_motor_force(joint_id: JointId) -> float = c.b3PrismaticJoint_GetMaxMotorForce
685
+ public foreign function prismatic_joint_get_motor_force(joint_id: JointId) -> float = c.b3PrismaticJoint_GetMotorForce
686
+ public foreign function prismatic_joint_get_translation(joint_id: JointId) -> float = c.b3PrismaticJoint_GetTranslation
687
+ public foreign function prismatic_joint_get_speed(joint_id: JointId) -> float = c.b3PrismaticJoint_GetSpeed
688
+ public foreign function create_revolute_joint(world_id: WorldId, in joint_def: RevoluteJointDef) -> JointId = c.b3CreateRevoluteJoint
689
+ public foreign function revolute_joint_enable_spring(joint_id: JointId, enable_spring: bool) -> void = c.b3RevoluteJoint_EnableSpring
690
+ public foreign function revolute_joint_is_spring_enabled(joint_id: JointId) -> bool = c.b3RevoluteJoint_IsSpringEnabled
691
+ public foreign function revolute_joint_set_spring_hertz(joint_id: JointId, hertz: float) -> void = c.b3RevoluteJoint_SetSpringHertz
692
+ public foreign function revolute_joint_get_spring_hertz(joint_id: JointId) -> float = c.b3RevoluteJoint_GetSpringHertz
693
+ public foreign function revolute_joint_set_spring_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3RevoluteJoint_SetSpringDampingRatio
694
+ public foreign function revolute_joint_get_spring_damping_ratio(joint_id: JointId) -> float = c.b3RevoluteJoint_GetSpringDampingRatio
695
+ public foreign function revolute_joint_set_target_angle(joint_id: JointId, target_radians: float) -> void = c.b3RevoluteJoint_SetTargetAngle
696
+ public foreign function revolute_joint_get_target_angle(joint_id: JointId) -> float = c.b3RevoluteJoint_GetTargetAngle
697
+ public foreign function revolute_joint_get_angle(joint_id: JointId) -> float = c.b3RevoluteJoint_GetAngle
698
+ public foreign function revolute_joint_enable_limit(joint_id: JointId, enable_limit: bool) -> void = c.b3RevoluteJoint_EnableLimit
699
+ public foreign function revolute_joint_is_limit_enabled(joint_id: JointId) -> bool = c.b3RevoluteJoint_IsLimitEnabled
700
+ public foreign function revolute_joint_get_lower_limit(joint_id: JointId) -> float = c.b3RevoluteJoint_GetLowerLimit
701
+ public foreign function revolute_joint_get_upper_limit(joint_id: JointId) -> float = c.b3RevoluteJoint_GetUpperLimit
702
+ public foreign function revolute_joint_set_limits(joint_id: JointId, lower_limit_radians: float, upper_limit_radians: float) -> void = c.b3RevoluteJoint_SetLimits
703
+ public foreign function revolute_joint_enable_motor(joint_id: JointId, enable_motor: bool) -> void = c.b3RevoluteJoint_EnableMotor
704
+ public foreign function revolute_joint_is_motor_enabled(joint_id: JointId) -> bool = c.b3RevoluteJoint_IsMotorEnabled
705
+ public foreign function revolute_joint_set_motor_speed(joint_id: JointId, motor_speed: float) -> void = c.b3RevoluteJoint_SetMotorSpeed
706
+ public foreign function revolute_joint_get_motor_speed(joint_id: JointId) -> float = c.b3RevoluteJoint_GetMotorSpeed
707
+ public foreign function revolute_joint_get_motor_torque(joint_id: JointId) -> float = c.b3RevoluteJoint_GetMotorTorque
708
+ public foreign function revolute_joint_set_max_motor_torque(joint_id: JointId, torque: float) -> void = c.b3RevoluteJoint_SetMaxMotorTorque
709
+ public foreign function revolute_joint_get_max_motor_torque(joint_id: JointId) -> float = c.b3RevoluteJoint_GetMaxMotorTorque
710
+ public foreign function create_spherical_joint(world_id: WorldId, in joint_def: SphericalJointDef) -> JointId = c.b3CreateSphericalJoint
711
+ public foreign function spherical_joint_enable_cone_limit(joint_id: JointId, enable_limit: bool) -> void = c.b3SphericalJoint_EnableConeLimit
712
+ public foreign function spherical_joint_is_cone_limit_enabled(joint_id: JointId) -> bool = c.b3SphericalJoint_IsConeLimitEnabled
713
+ public foreign function spherical_joint_get_cone_limit(joint_id: JointId) -> float = c.b3SphericalJoint_GetConeLimit
714
+ public foreign function spherical_joint_set_cone_limit(joint_id: JointId, angle_radians: float) -> void = c.b3SphericalJoint_SetConeLimit
715
+ public foreign function spherical_joint_get_cone_angle(joint_id: JointId) -> float = c.b3SphericalJoint_GetConeAngle
716
+ public foreign function spherical_joint_enable_twist_limit(joint_id: JointId, enable_limit: bool) -> void = c.b3SphericalJoint_EnableTwistLimit
717
+ public foreign function spherical_joint_is_twist_limit_enabled(joint_id: JointId) -> bool = c.b3SphericalJoint_IsTwistLimitEnabled
718
+ public foreign function spherical_joint_get_lower_twist_limit(joint_id: JointId) -> float = c.b3SphericalJoint_GetLowerTwistLimit
719
+ public foreign function spherical_joint_get_upper_twist_limit(joint_id: JointId) -> float = c.b3SphericalJoint_GetUpperTwistLimit
720
+ public foreign function spherical_joint_set_twist_limits(joint_id: JointId, lower_limit_radians: float, upper_limit_radians: float) -> void = c.b3SphericalJoint_SetTwistLimits
721
+ public foreign function spherical_joint_get_twist_angle(joint_id: JointId) -> float = c.b3SphericalJoint_GetTwistAngle
722
+ public foreign function spherical_joint_enable_spring(joint_id: JointId, enable_spring: bool) -> void = c.b3SphericalJoint_EnableSpring
723
+ public foreign function spherical_joint_is_spring_enabled(joint_id: JointId) -> bool = c.b3SphericalJoint_IsSpringEnabled
724
+ public foreign function spherical_joint_set_spring_hertz(joint_id: JointId, hertz: float) -> void = c.b3SphericalJoint_SetSpringHertz
725
+ public foreign function spherical_joint_get_spring_hertz(joint_id: JointId) -> float = c.b3SphericalJoint_GetSpringHertz
726
+ public foreign function spherical_joint_set_spring_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3SphericalJoint_SetSpringDampingRatio
727
+ public foreign function spherical_joint_get_spring_damping_ratio(joint_id: JointId) -> float = c.b3SphericalJoint_GetSpringDampingRatio
728
+ public foreign function spherical_joint_set_target_rotation(joint_id: JointId, target_rotation: Quat) -> void = c.b3SphericalJoint_SetTargetRotation
729
+ public foreign function spherical_joint_get_target_rotation(joint_id: JointId) -> Quat = c.b3SphericalJoint_GetTargetRotation
730
+ public foreign function spherical_joint_enable_motor(joint_id: JointId, enable_motor: bool) -> void = c.b3SphericalJoint_EnableMotor
731
+ public foreign function spherical_joint_is_motor_enabled(joint_id: JointId) -> bool = c.b3SphericalJoint_IsMotorEnabled
732
+ public foreign function spherical_joint_set_motor_velocity(joint_id: JointId, motor_velocity: Vec3) -> void = c.b3SphericalJoint_SetMotorVelocity
733
+ public foreign function spherical_joint_get_motor_velocity(joint_id: JointId) -> Vec3 = c.b3SphericalJoint_GetMotorVelocity
734
+ public foreign function spherical_joint_get_motor_torque(joint_id: JointId) -> Vec3 = c.b3SphericalJoint_GetMotorTorque
735
+ public foreign function spherical_joint_set_max_motor_torque(joint_id: JointId, torque: float) -> void = c.b3SphericalJoint_SetMaxMotorTorque
736
+ public foreign function spherical_joint_get_max_motor_torque(joint_id: JointId) -> float = c.b3SphericalJoint_GetMaxMotorTorque
737
+ public foreign function create_weld_joint(world_id: WorldId, in joint_def: WeldJointDef) -> JointId = c.b3CreateWeldJoint
738
+ public foreign function weld_joint_set_linear_hertz(joint_id: JointId, hertz: float) -> void = c.b3WeldJoint_SetLinearHertz
739
+ public foreign function weld_joint_get_linear_hertz(joint_id: JointId) -> float = c.b3WeldJoint_GetLinearHertz
740
+ public foreign function weld_joint_set_linear_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3WeldJoint_SetLinearDampingRatio
741
+ public foreign function weld_joint_get_linear_damping_ratio(joint_id: JointId) -> float = c.b3WeldJoint_GetLinearDampingRatio
742
+ public foreign function weld_joint_set_angular_hertz(joint_id: JointId, hertz: float) -> void = c.b3WeldJoint_SetAngularHertz
743
+ public foreign function weld_joint_get_angular_hertz(joint_id: JointId) -> float = c.b3WeldJoint_GetAngularHertz
744
+ public foreign function weld_joint_set_angular_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3WeldJoint_SetAngularDampingRatio
745
+ public foreign function weld_joint_get_angular_damping_ratio(joint_id: JointId) -> float = c.b3WeldJoint_GetAngularDampingRatio
746
+ public foreign function create_wheel_joint(world_id: WorldId, in joint_def: WheelJointDef) -> JointId = c.b3CreateWheelJoint
747
+ public foreign function wheel_joint_enable_suspension(joint_id: JointId, flag: bool) -> void = c.b3WheelJoint_EnableSuspension
748
+ public foreign function wheel_joint_is_suspension_enabled(joint_id: JointId) -> bool = c.b3WheelJoint_IsSuspensionEnabled
749
+ public foreign function wheel_joint_set_suspension_hertz(joint_id: JointId, hertz: float) -> void = c.b3WheelJoint_SetSuspensionHertz
750
+ public foreign function wheel_joint_get_suspension_hertz(joint_id: JointId) -> float = c.b3WheelJoint_GetSuspensionHertz
751
+ public foreign function wheel_joint_set_suspension_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3WheelJoint_SetSuspensionDampingRatio
752
+ public foreign function wheel_joint_get_suspension_damping_ratio(joint_id: JointId) -> float = c.b3WheelJoint_GetSuspensionDampingRatio
753
+ public foreign function wheel_joint_enable_suspension_limit(joint_id: JointId, flag: bool) -> void = c.b3WheelJoint_EnableSuspensionLimit
754
+ public foreign function wheel_joint_is_suspension_limit_enabled(joint_id: JointId) -> bool = c.b3WheelJoint_IsSuspensionLimitEnabled
755
+ public foreign function wheel_joint_get_lower_suspension_limit(joint_id: JointId) -> float = c.b3WheelJoint_GetLowerSuspensionLimit
756
+ public foreign function wheel_joint_get_upper_suspension_limit(joint_id: JointId) -> float = c.b3WheelJoint_GetUpperSuspensionLimit
757
+ public foreign function wheel_joint_set_suspension_limits(joint_id: JointId, lower: float, upper: float) -> void = c.b3WheelJoint_SetSuspensionLimits
758
+ public foreign function wheel_joint_enable_spin_motor(joint_id: JointId, flag: bool) -> void = c.b3WheelJoint_EnableSpinMotor
759
+ public foreign function wheel_joint_is_spin_motor_enabled(joint_id: JointId) -> bool = c.b3WheelJoint_IsSpinMotorEnabled
760
+ public foreign function wheel_joint_set_spin_motor_speed(joint_id: JointId, speed: float) -> void = c.b3WheelJoint_SetSpinMotorSpeed
761
+ public foreign function wheel_joint_get_spin_motor_speed(joint_id: JointId) -> float = c.b3WheelJoint_GetSpinMotorSpeed
762
+ public foreign function wheel_joint_set_max_spin_torque(joint_id: JointId, torque: float) -> void = c.b3WheelJoint_SetMaxSpinTorque
763
+ public foreign function wheel_joint_get_max_spin_torque(joint_id: JointId) -> float = c.b3WheelJoint_GetMaxSpinTorque
764
+ public foreign function wheel_joint_get_spin_speed(joint_id: JointId) -> float = c.b3WheelJoint_GetSpinSpeed
765
+ public foreign function wheel_joint_get_spin_torque(joint_id: JointId) -> float = c.b3WheelJoint_GetSpinTorque
766
+ public foreign function wheel_joint_enable_steering(joint_id: JointId, flag: bool) -> void = c.b3WheelJoint_EnableSteering
767
+ public foreign function wheel_joint_is_steering_enabled(joint_id: JointId) -> bool = c.b3WheelJoint_IsSteeringEnabled
768
+ public foreign function wheel_joint_set_steering_hertz(joint_id: JointId, hertz: float) -> void = c.b3WheelJoint_SetSteeringHertz
769
+ public foreign function wheel_joint_get_steering_hertz(joint_id: JointId) -> float = c.b3WheelJoint_GetSteeringHertz
770
+ public foreign function wheel_joint_set_steering_damping_ratio(joint_id: JointId, damping_ratio: float) -> void = c.b3WheelJoint_SetSteeringDampingRatio
771
+ public foreign function wheel_joint_get_steering_damping_ratio(joint_id: JointId) -> float = c.b3WheelJoint_GetSteeringDampingRatio
772
+ public foreign function wheel_joint_set_max_steering_torque(joint_id: JointId, torque: float) -> void = c.b3WheelJoint_SetMaxSteeringTorque
773
+ public foreign function wheel_joint_get_max_steering_torque(joint_id: JointId) -> float = c.b3WheelJoint_GetMaxSteeringTorque
774
+ public foreign function wheel_joint_enable_steering_limit(joint_id: JointId, flag: bool) -> void = c.b3WheelJoint_EnableSteeringLimit
775
+ public foreign function wheel_joint_is_steering_limit_enabled(joint_id: JointId) -> bool = c.b3WheelJoint_IsSteeringLimitEnabled
776
+ public foreign function wheel_joint_get_lower_steering_limit(joint_id: JointId) -> float = c.b3WheelJoint_GetLowerSteeringLimit
777
+ public foreign function wheel_joint_get_upper_steering_limit(joint_id: JointId) -> float = c.b3WheelJoint_GetUpperSteeringLimit
778
+ public foreign function wheel_joint_set_steering_limits(joint_id: JointId, lower_radians: float, upper_radians: float) -> void = c.b3WheelJoint_SetSteeringLimits
779
+ public foreign function wheel_joint_set_target_steering_angle(joint_id: JointId, radians: float) -> void = c.b3WheelJoint_SetTargetSteeringAngle
780
+ public foreign function wheel_joint_get_target_steering_angle(joint_id: JointId) -> float = c.b3WheelJoint_GetTargetSteeringAngle
781
+ public foreign function wheel_joint_get_steering_angle(joint_id: JointId) -> float = c.b3WheelJoint_GetSteeringAngle
782
+ public foreign function wheel_joint_get_steering_torque(joint_id: JointId) -> float = c.b3WheelJoint_GetSteeringTorque
783
+ public foreign function contact_is_valid(id: ContactId) -> bool = c.b3Contact_IsValid
784
+ public foreign function contact_get_data(contact_id: ContactId) -> ContactData = c.b3Contact_GetData