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/c/box3d.mt ADDED
@@ -0,0 +1,1871 @@
1
+ # generated by mtc bindgen from /home/teefan/Projects/Ruby/mt-lang/third_party/box3d-upstream/include/box3d/box3d.h
2
+ external
3
+
4
+ link "box3d"
5
+ include "box3d/box3d.h"
6
+
7
+ union b3MeshNode_data:
8
+ asNode: b3MeshNode_data_asNode
9
+ asLeaf: b3MeshNode_data_asLeaf
10
+
11
+ struct b3MeshNode_data_asNode:
12
+ axis: uint
13
+ childOffset: uint
14
+
15
+ struct b3MeshNode_data_asLeaf:
16
+ type: uint
17
+ triangleCount: uint
18
+
19
+ type b3AllocFcn = fn(arg0: int, arg1: int) -> ptr[void]
20
+ type b3FreeFcn = fn(arg0: ptr[void]) -> void
21
+ type b3AssertFcn = fn(arg0: cstr, arg1: cstr, arg2: int) -> int
22
+ type b3LogFcn = fn(arg0: cstr) -> void
23
+
24
+ external function b3SetAllocator(allocFcn: b3AllocFcn, freeFcn: b3FreeFcn) -> void
25
+ external function b3GetByteCount() -> int
26
+ external function b3SetAssertFcn(assertFcn: b3AssertFcn) -> void
27
+ external function b3InternalAssert(condition: cstr, fileName: cstr, lineNumber: int) -> int
28
+ external function b3SetLogFcn(logFcn: b3LogFcn) -> void
29
+
30
+ struct b3Version:
31
+ major: int
32
+ minor: int
33
+ revision: int
34
+
35
+ external function b3GetVersion() -> b3Version
36
+ external function b3IsDoublePrecision() -> bool
37
+ external function b3GetTicks() -> ulong
38
+ external function b3GetMilliseconds(ticks: ptr_uint) -> float
39
+ external function b3GetMillisecondsAndReset(ticks: ptr[ulong]) -> float
40
+ external function b3Yield() -> void
41
+ external function b3Sleep(milliseconds: int) -> void
42
+ external function b3Hash(hash: uint, data: const_ptr[ubyte], count: int) -> uint
43
+
44
+ struct b3Vec2:
45
+ x: float
46
+ y: float
47
+
48
+ struct b3Vec3:
49
+ x: float
50
+ y: float
51
+ z: float
52
+
53
+ struct b3CosSin:
54
+ cosine: float
55
+ sine: float
56
+
57
+ struct b3Quat:
58
+ v: b3Vec3
59
+ s: float
60
+
61
+ struct b3Transform:
62
+ p: b3Vec3
63
+ q: b3Quat
64
+
65
+ type b3Pos = b3Vec3
66
+ type b3WorldTransform = b3Transform
67
+
68
+ struct b3Matrix3:
69
+ cx: b3Vec3
70
+ cy: b3Vec3
71
+ cz: b3Vec3
72
+
73
+ struct b3AABB:
74
+ lowerBound: b3Vec3
75
+ upperBound: b3Vec3
76
+
77
+ struct b3Plane:
78
+ normal: b3Vec3
79
+ offset: float
80
+
81
+ const b3Vec3_zero: b3Vec3 = b3Vec3(x = 0.0, y = 0.0, z = 0.0)
82
+ const b3Vec3_one: b3Vec3 = b3Vec3(x = 1.0, y = 1.0, z = 1.0)
83
+ const b3Vec3_axisX: b3Vec3 = b3Vec3(x = 1.0, y = 0.0, z = 0.0)
84
+ const b3Vec3_axisY: b3Vec3 = b3Vec3(x = 0.0, y = 1.0, z = 0.0)
85
+ const b3Vec3_axisZ: b3Vec3 = b3Vec3(x = 0.0, y = 0.0, z = 1.0)
86
+ const b3Quat_identity: b3Quat = b3Quat(v = b3Vec3(x = 0.0, y = 0.0, z = 0.0), s = 1.0)
87
+ const b3Transform_identity: b3Transform = b3Transform(
88
+ p = b3Vec3(x = 0.0, y = 0.0, z = 0.0),
89
+ q = b3Quat(v = b3Vec3(x = 0.0, y = 0.0, z = 0.0), s = 1.0)
90
+ )
91
+ const b3Mat3_zero: b3Matrix3 = b3Matrix3(
92
+ cx = b3Vec3(x = 0.0, y = 0.0, z = 0.0),
93
+ cy = b3Vec3(x = 0.0, y = 0.0, z = 0.0),
94
+ cz = b3Vec3(x = 0.0, y = 0.0, z = 0.0)
95
+ )
96
+ const b3Mat3_identity: b3Matrix3 = b3Matrix3(
97
+ cx = b3Vec3(x = 1.0, y = 0.0, z = 0.0),
98
+ cy = b3Vec3(x = 0.0, y = 1.0, z = 0.0),
99
+ cz = b3Vec3(x = 0.0, y = 0.0, z = 1.0)
100
+ )
101
+ const b3Pos_zero: b3Vec3 = b3Vec3(x = 0.0, y = 0.0, z = 0.0)
102
+ const b3WorldTransform_identity: b3Transform = b3Transform(
103
+ p = b3Vec3(x = 0.0, y = 0.0, z = 0.0),
104
+ q = b3Quat(v = b3Vec3(x = 0.0, y = 0.0, z = 0.0), s = 1.0)
105
+ )
106
+
107
+ external function b3Atan2(y: float, x: float) -> float
108
+ external function b3ComputeCosSin(radians: float) -> b3CosSin
109
+ external function b3MakeQuatFromMatrix(m: const_ptr[b3Matrix3]) -> b3Quat
110
+ external function b3ComputeQuatBetweenUnitVectors(v1: b3Vec3, v2: b3Vec3) -> b3Quat
111
+ external function b3Steiner(mass: float, origin: b3Vec3) -> b3Matrix3
112
+
113
+ struct b3SegmentDistanceResult:
114
+ point1: b3Vec3
115
+ fraction1: float
116
+ point2: b3Vec3
117
+ fraction2: float
118
+
119
+ external function b3PointToSegmentDistance(a: b3Vec3, b: b3Vec3, q: b3Vec3) -> b3Vec3
120
+ external function b3LineDistance(p1: b3Vec3, d1: b3Vec3, p2: b3Vec3, d2: b3Vec3) -> b3SegmentDistanceResult
121
+ external function b3SegmentDistance(p1: b3Vec3, q1: b3Vec3, p2: b3Vec3, q2: b3Vec3) -> b3SegmentDistanceResult
122
+ external function b3IsValidFloat(a: float) -> bool
123
+ external function b3IsValidVec3(a: b3Vec3) -> bool
124
+ external function b3IsValidQuat(q: b3Quat) -> bool
125
+ external function b3IsValidTransform(a: b3Transform) -> bool
126
+ external function b3IsValidMatrix3(a: b3Matrix3) -> bool
127
+ external function b3IsValidAABB(a: b3AABB) -> bool
128
+ external function b3IsBoundedAABB(a: b3AABB) -> bool
129
+ external function b3IsSaneAABB(a: b3AABB) -> bool
130
+ external function b3IsValidPlane(a: b3Plane) -> bool
131
+ external function b3IsValidPosition(p: b3Vec3) -> bool
132
+ external function b3IsValidWorldTransform(t: b3Transform) -> bool
133
+ external function b3SetLengthUnitsPerMeter(lengthUnits: float) -> void
134
+ external function b3GetLengthUnitsPerMeter() -> float
135
+ external function b3SetStallThreshold(seconds: float) -> void
136
+ external function b3GetStallThreshold() -> float
137
+
138
+ struct b3WorldId:
139
+ index1: ushort
140
+ generation: ushort
141
+
142
+ struct b3BodyId:
143
+ index1: int
144
+ world0: ushort
145
+ generation: ushort
146
+
147
+ struct b3ShapeId:
148
+ index1: int
149
+ world0: ushort
150
+ generation: ushort
151
+
152
+ struct b3JointId:
153
+ index1: int
154
+ world0: ushort
155
+ generation: ushort
156
+
157
+ struct b3ContactId:
158
+ index1: int
159
+ world0: ushort
160
+ padding: short
161
+ generation: uint
162
+
163
+ const b3_nullWorldId: b3WorldId = b3WorldId(index1 = 0, generation = 0)
164
+ const b3_nullBodyId: b3BodyId = b3BodyId(index1 = 0, world0 = 0, generation = 0)
165
+ const b3_nullShapeId: b3ShapeId = b3ShapeId(index1 = 0, world0 = 0, generation = 0)
166
+ const b3_nullJointId: b3JointId = b3JointId(index1 = 0, world0 = 0, generation = 0)
167
+ const b3_nullContactId: b3ContactId = b3ContactId(index1 = 0, world0 = 0, padding = 0, generation = 0)
168
+
169
+ type b3TaskCallback = fn(arg0: ptr[void]) -> void
170
+ type b3EnqueueTaskCallback = fn(arg0: b3TaskCallback, arg1: ptr[void], arg2: ptr[void], arg3: cstr) -> ptr[void]
171
+ type b3FinishTaskCallback = fn(arg0: ptr[void], arg1: ptr[void]) -> void
172
+ type b3CreateDebugShapeCallback = fn(arg0: const_ptr[b3DebugShape], arg1: ptr[void]) -> ptr[void]
173
+ type b3DestroyDebugShapeCallback = fn(arg0: ptr[void], arg1: ptr[void]) -> void
174
+ type b3FrictionCallback = fn(arg0: float, arg1: ulong, arg2: float, arg3: ulong) -> float
175
+ type b3RestitutionCallback = fn(arg0: float, arg1: ulong, arg2: float, arg3: ulong) -> float
176
+ type b3CustomFilterFcn = fn(arg0: b3ShapeId, arg1: b3ShapeId, arg2: ptr[void]) -> bool
177
+ type b3PreSolveFcn = fn(arg0: b3ShapeId, arg1: b3ShapeId, arg2: b3Pos, arg3: b3Vec3, arg4: ptr[void]) -> bool
178
+ type b3OverlapResultFcn = fn(arg0: b3ShapeId, arg1: ptr[void]) -> bool
179
+ type b3CastResultFcn = fn(arg0: b3ShapeId, arg1: b3Pos, arg2: b3Vec3, arg3: float, arg4: ulong, arg5: int, arg6: int, arg7: ptr[void]) -> float
180
+
181
+ struct b3Capacity:
182
+ staticShapeCount: int
183
+ dynamicShapeCount: int
184
+ staticBodyCount: int
185
+ dynamicBodyCount: int
186
+ contactCount: int
187
+
188
+ struct b3WorldDef:
189
+ gravity: b3Vec3
190
+ restitutionThreshold: float
191
+ hitEventThreshold: float
192
+ contactHertz: float
193
+ contactDampingRatio: float
194
+ contactSpeed: float
195
+ maximumLinearSpeed: float
196
+ frictionCallback: b3FrictionCallback
197
+ restitutionCallback: b3RestitutionCallback
198
+ enableSleep: bool
199
+ enableContinuous: bool
200
+ workerCount: uint
201
+ enqueueTask: b3EnqueueTaskCallback
202
+ finishTask: b3FinishTaskCallback
203
+ userTaskContext: ptr[void]
204
+ userData: ptr[void]
205
+ createDebugShape: b3CreateDebugShapeCallback
206
+ destroyDebugShape: b3DestroyDebugShapeCallback
207
+ userDebugShapeContext: ptr[void]
208
+ capacity: b3Capacity
209
+ internalValue: int
210
+
211
+ external function b3DefaultWorldDef() -> b3WorldDef
212
+
213
+ enum b3BodyType: int
214
+ b3_staticBody = 0
215
+ b3_kinematicBody = 1
216
+ b3_dynamicBody = 2
217
+ b3_bodyTypeCount = 3
218
+
219
+ struct b3MotionLocks:
220
+ linearX: bool
221
+ linearY: bool
222
+ linearZ: bool
223
+ angularX: bool
224
+ angularY: bool
225
+ angularZ: bool
226
+
227
+ struct b3BodyDef:
228
+ type: b3BodyType
229
+ position: b3Vec3
230
+ rotation: b3Quat
231
+ linearVelocity: b3Vec3
232
+ angularVelocity: b3Vec3
233
+ linearDamping: float
234
+ angularDamping: float
235
+ gravityScale: float
236
+ sleepThreshold: float
237
+ name: cstr
238
+ userData: ptr[void]
239
+ motionLocks: b3MotionLocks
240
+ enableSleep: bool
241
+ isAwake: bool
242
+ isBullet: bool
243
+ isEnabled: bool
244
+ allowFastRotation: bool
245
+ enableContactRecycling: bool
246
+ internalValue: int
247
+
248
+ external function b3DefaultBodyDef() -> b3BodyDef
249
+
250
+ struct b3Filter:
251
+ categoryBits: ptr_uint
252
+ maskBits: ptr_uint
253
+ groupIndex: int
254
+
255
+ external function b3DefaultFilter() -> b3Filter
256
+
257
+ struct b3SurfaceMaterial:
258
+ friction: float
259
+ restitution: float
260
+ rollingResistance: float
261
+ tangentVelocity: b3Vec3
262
+ userMaterialId: ptr_uint
263
+ customColor: uint
264
+ padding: uint
265
+
266
+ external function b3DefaultSurfaceMaterial() -> b3SurfaceMaterial
267
+
268
+ enum b3ShapeType: int
269
+ b3_capsuleShape = 0
270
+ b3_compoundShape = 1
271
+ b3_heightShape = 2
272
+ b3_hullShape = 3
273
+ b3_meshShape = 4
274
+ b3_sphereShape = 5
275
+ b3_shapeTypeCount = 6
276
+
277
+ struct b3ShapeDef:
278
+ name: cstr
279
+ userData: ptr[void]
280
+ materials: ptr[b3SurfaceMaterial]
281
+ materialCount: int
282
+ baseMaterial: b3SurfaceMaterial
283
+ density: float
284
+ explosionScale: float
285
+ filter: b3Filter
286
+ enableCustomFiltering: bool
287
+ isSensor: bool
288
+ enableSensorEvents: bool
289
+ enableContactEvents: bool
290
+ enableHitEvents: bool
291
+ enablePreSolveEvents: bool
292
+ invokeContactCreation: bool
293
+ updateBodyMass: bool
294
+ enableSpeculativeContact: bool
295
+ internalValue: int
296
+
297
+ external function b3DefaultShapeDef() -> b3ShapeDef
298
+
299
+ struct b3Profile:
300
+ step: float
301
+ pairs: float
302
+ collide: float
303
+ solve: float
304
+ solverSetup: float
305
+ constraints: float
306
+ prepareConstraints: float
307
+ integrateVelocities: float
308
+ warmStart: float
309
+ solveImpulses: float
310
+ integratePositions: float
311
+ relaxImpulses: float
312
+ applyRestitution: float
313
+ storeImpulses: float
314
+ splitIslands: float
315
+ transforms: float
316
+ sensorHits: float
317
+ jointEvents: float
318
+ hitEvents: float
319
+ refit: float
320
+ bullets: float
321
+ sleepIslands: float
322
+ sensors: float
323
+
324
+ struct b3Counters:
325
+ bodyCount: int
326
+ shapeCount: int
327
+ contactCount: int
328
+ jointCount: int
329
+ islandCount: int
330
+ stackUsed: int
331
+ arenaCapacity: int
332
+ staticTreeHeight: int
333
+ treeHeight: int
334
+ satCallCount: int
335
+ satCacheHitCount: int
336
+ byteCount: int
337
+ taskCount: int
338
+ colorCounts: array[int, 24]
339
+ manifoldCounts: array[int, 8]
340
+ awakeContactCount: int
341
+ recycledContactCount: int
342
+ distanceIterations: int
343
+ pushBackIterations: int
344
+ rootIterations: int
345
+
346
+ enum b3JointType: int
347
+ b3_parallelJoint = 0
348
+ b3_distanceJoint = 1
349
+ b3_filterJoint = 2
350
+ b3_motorJoint = 3
351
+ b3_prismaticJoint = 4
352
+ b3_revoluteJoint = 5
353
+ b3_sphericalJoint = 6
354
+ b3_weldJoint = 7
355
+ b3_wheelJoint = 8
356
+
357
+ struct b3JointDef:
358
+ userData: ptr[void]
359
+ bodyIdA: b3BodyId
360
+ bodyIdB: b3BodyId
361
+ localFrameA: b3Transform
362
+ localFrameB: b3Transform
363
+ forceThreshold: float
364
+ torqueThreshold: float
365
+ constraintHertz: float
366
+ constraintDampingRatio: float
367
+ drawScale: float
368
+ collideConnected: bool
369
+ internalValue: int
370
+
371
+ struct b3DistanceJointDef:
372
+ base: b3JointDef
373
+ length: float
374
+ enableSpring: bool
375
+ lowerSpringForce: float
376
+ upperSpringForce: float
377
+ hertz: float
378
+ dampingRatio: float
379
+ enableLimit: bool
380
+ minLength: float
381
+ maxLength: float
382
+ enableMotor: bool
383
+ maxMotorForce: float
384
+ motorSpeed: float
385
+
386
+ external function b3DefaultDistanceJointDef() -> b3DistanceJointDef
387
+
388
+ struct b3MotorJointDef:
389
+ base: b3JointDef
390
+ linearVelocity: b3Vec3
391
+ maxVelocityForce: float
392
+ angularVelocity: b3Vec3
393
+ maxVelocityTorque: float
394
+ linearHertz: float
395
+ linearDampingRatio: float
396
+ maxSpringForce: float
397
+ angularHertz: float
398
+ angularDampingRatio: float
399
+ maxSpringTorque: float
400
+
401
+ external function b3DefaultMotorJointDef() -> b3MotorJointDef
402
+
403
+ struct b3FilterJointDef:
404
+ base: b3JointDef
405
+
406
+ external function b3DefaultFilterJointDef() -> b3FilterJointDef
407
+
408
+ struct b3ParallelJointDef:
409
+ base: b3JointDef
410
+ hertz: float
411
+ dampingRatio: float
412
+ maxTorque: float
413
+
414
+ external function b3DefaultParallelJointDef() -> b3ParallelJointDef
415
+
416
+ struct b3PrismaticJointDef:
417
+ base: b3JointDef
418
+ enableSpring: bool
419
+ hertz: float
420
+ dampingRatio: float
421
+ targetTranslation: float
422
+ enableLimit: bool
423
+ lowerTranslation: float
424
+ upperTranslation: float
425
+ enableMotor: bool
426
+ maxMotorForce: float
427
+ motorSpeed: float
428
+
429
+ external function b3DefaultPrismaticJointDef() -> b3PrismaticJointDef
430
+
431
+ struct b3RevoluteJointDef:
432
+ base: b3JointDef
433
+ targetAngle: float
434
+ enableSpring: bool
435
+ hertz: float
436
+ dampingRatio: float
437
+ enableLimit: bool
438
+ lowerAngle: float
439
+ upperAngle: float
440
+ enableMotor: bool
441
+ maxMotorTorque: float
442
+ motorSpeed: float
443
+
444
+ external function b3DefaultRevoluteJointDef() -> b3RevoluteJointDef
445
+
446
+ struct b3SphericalJointDef:
447
+ base: b3JointDef
448
+ enableSpring: bool
449
+ hertz: float
450
+ dampingRatio: float
451
+ targetRotation: b3Quat
452
+ enableConeLimit: bool
453
+ coneAngle: float
454
+ enableTwistLimit: bool
455
+ lowerTwistAngle: float
456
+ upperTwistAngle: float
457
+ enableMotor: bool
458
+ maxMotorTorque: float
459
+ motorVelocity: b3Vec3
460
+
461
+ external function b3DefaultSphericalJointDef() -> b3SphericalJointDef
462
+
463
+ struct b3WeldJointDef:
464
+ base: b3JointDef
465
+ linearHertz: float
466
+ angularHertz: float
467
+ linearDampingRatio: float
468
+ angularDampingRatio: float
469
+
470
+ external function b3DefaultWeldJointDef() -> b3WeldJointDef
471
+
472
+ struct b3WheelJointDef:
473
+ base: b3JointDef
474
+ enableSuspensionSpring: bool
475
+ suspensionHertz: float
476
+ suspensionDampingRatio: float
477
+ enableSuspensionLimit: bool
478
+ lowerSuspensionLimit: float
479
+ upperSuspensionLimit: float
480
+ enableSpinMotor: bool
481
+ maxSpinTorque: float
482
+ spinSpeed: float
483
+ enableSteering: bool
484
+ steeringHertz: float
485
+ steeringDampingRatio: float
486
+ targetSteeringAngle: float
487
+ maxSteeringTorque: float
488
+ enableSteeringLimit: bool
489
+ lowerSteeringLimit: float
490
+ upperSteeringLimit: float
491
+
492
+ external function b3DefaultWheelJointDef() -> b3WheelJointDef
493
+
494
+ struct b3ExplosionDef:
495
+ maskBits: ptr_uint
496
+ position: b3Vec3
497
+ radius: float
498
+ falloff: float
499
+ impulsePerArea: float
500
+
501
+ external function b3DefaultExplosionDef() -> b3ExplosionDef
502
+
503
+ struct b3SensorBeginTouchEvent:
504
+ sensorShapeId: b3ShapeId
505
+ visitorShapeId: b3ShapeId
506
+
507
+ struct b3SensorEndTouchEvent:
508
+ sensorShapeId: b3ShapeId
509
+ visitorShapeId: b3ShapeId
510
+
511
+ struct b3SensorEvents:
512
+ beginEvents: ptr[b3SensorBeginTouchEvent]
513
+ endEvents: ptr[b3SensorEndTouchEvent]
514
+ beginCount: int
515
+ endCount: int
516
+
517
+ struct b3ContactBeginTouchEvent:
518
+ shapeIdA: b3ShapeId
519
+ shapeIdB: b3ShapeId
520
+ contactId: b3ContactId
521
+
522
+ struct b3ContactEndTouchEvent:
523
+ shapeIdA: b3ShapeId
524
+ shapeIdB: b3ShapeId
525
+ contactId: b3ContactId
526
+
527
+ struct b3ContactHitEvent:
528
+ shapeIdA: b3ShapeId
529
+ shapeIdB: b3ShapeId
530
+ contactId: b3ContactId
531
+ point: b3Vec3
532
+ normal: b3Vec3
533
+ approachSpeed: float
534
+ userMaterialIdA: ptr_uint
535
+ userMaterialIdB: ptr_uint
536
+
537
+ struct b3ContactEvents:
538
+ beginEvents: ptr[b3ContactBeginTouchEvent]
539
+ endEvents: ptr[b3ContactEndTouchEvent]
540
+ hitEvents: ptr[b3ContactHitEvent]
541
+ beginCount: int
542
+ endCount: int
543
+ hitCount: int
544
+
545
+ struct b3BodyMoveEvent:
546
+ userData: ptr[void]
547
+ transform: b3Transform
548
+ bodyId: b3BodyId
549
+ fellAsleep: bool
550
+
551
+ struct b3BodyEvents:
552
+ moveEvents: ptr[b3BodyMoveEvent]
553
+ moveCount: int
554
+
555
+ struct b3JointEvent:
556
+ jointId: b3JointId
557
+ userData: ptr[void]
558
+
559
+ struct b3JointEvents:
560
+ jointEvents: ptr[b3JointEvent]
561
+ count: int
562
+
563
+ struct b3ContactData:
564
+ contactId: b3ContactId
565
+ shapeIdA: b3ShapeId
566
+ shapeIdB: b3ShapeId
567
+ manifolds: const_ptr[b3Manifold]
568
+ manifoldCount: int
569
+
570
+ struct b3QueryFilter:
571
+ categoryBits: ptr_uint
572
+ maskBits: ptr_uint
573
+ id: ptr_uint
574
+ name: cstr
575
+
576
+ external function b3DefaultQueryFilter() -> b3QueryFilter
577
+
578
+ struct b3RayCastInput:
579
+ origin: b3Vec3
580
+ translation: b3Vec3
581
+ maxFraction: float
582
+
583
+ struct b3RayResult:
584
+ shapeId: b3ShapeId
585
+ point: b3Vec3
586
+ normal: b3Vec3
587
+ userMaterialId: ptr_uint
588
+ fraction: float
589
+ triangleIndex: int
590
+ childIndex: int
591
+ nodeVisits: int
592
+ leafVisits: int
593
+ hit: bool
594
+
595
+ struct b3ShapeProxy:
596
+ points: const_ptr[b3Vec3]
597
+ count: int
598
+ radius: float
599
+
600
+ struct b3ShapeCastInput:
601
+ proxy: b3ShapeProxy
602
+ translation: b3Vec3
603
+ maxFraction: float
604
+ canEncroach: bool
605
+
606
+ struct b3BoxCastInput:
607
+ box: b3AABB
608
+ translation: b3Vec3
609
+ maxFraction: float
610
+
611
+ struct b3CastOutput:
612
+ normal: b3Vec3
613
+ point: b3Vec3
614
+ fraction: float
615
+ iterations: int
616
+ triangleIndex: int
617
+ childIndex: int
618
+ materialIndex: int
619
+ hit: bool
620
+
621
+ type b3WorldCastOutput = b3CastOutput
622
+
623
+ struct b3BodyCastResult:
624
+ shapeId: b3ShapeId
625
+ point: b3Vec3
626
+ normal: b3Vec3
627
+ fraction: float
628
+ triangleIndex: int
629
+ userMaterialId: ptr_uint
630
+ iterations: int
631
+ hit: bool
632
+
633
+ struct b3SimplexCache:
634
+ metric: float
635
+ count: ushort
636
+ indexA: array[ubyte, 4]
637
+ indexB: array[ubyte, 4]
638
+
639
+ const b3_emptyDistanceCache: b3SimplexCache = b3SimplexCache(
640
+ metric = 0,
641
+ count = 0,
642
+ indexA = array[ubyte, 4](0, 0, 0, 0),
643
+ indexB = array[ubyte, 4](0, 0, 0, 0)
644
+ )
645
+
646
+ struct b3ShapeCastPairInput:
647
+ proxyA: b3ShapeProxy
648
+ proxyB: b3ShapeProxy
649
+ transform: b3Transform
650
+ translationB: b3Vec3
651
+ maxFraction: float
652
+ canEncroach: bool
653
+
654
+ struct b3DistanceInput:
655
+ proxyA: b3ShapeProxy
656
+ proxyB: b3ShapeProxy
657
+ transform: b3Transform
658
+ useRadii: bool
659
+
660
+ struct b3DistanceOutput:
661
+ pointA: b3Vec3
662
+ pointB: b3Vec3
663
+ normal: b3Vec3
664
+ distance: float
665
+ iterations: int
666
+ simplexCount: int
667
+
668
+ struct b3SimplexVertex:
669
+ wA: b3Vec3
670
+ wB: b3Vec3
671
+ w: b3Vec3
672
+ a: float
673
+ indexA: int
674
+ indexB: int
675
+
676
+ struct b3Simplex:
677
+ vertices: array[b3SimplexVertex, 4]
678
+ count: int
679
+
680
+ struct b3Sweep:
681
+ localCenter: b3Vec3
682
+ c1: b3Vec3
683
+ c2: b3Vec3
684
+ q1: b3Quat
685
+ q2: b3Quat
686
+
687
+ struct b3TOIInput:
688
+ proxyA: b3ShapeProxy
689
+ proxyB: b3ShapeProxy
690
+ sweepA: b3Sweep
691
+ sweepB: b3Sweep
692
+ maxFraction: float
693
+
694
+ enum b3TOIState: int
695
+ b3_toiStateUnknown = 0
696
+ b3_toiStateFailed = 1
697
+ b3_toiStateOverlapped = 2
698
+ b3_toiStateHit = 3
699
+ b3_toiStateSeparated = 4
700
+
701
+ struct b3TOIOutput:
702
+ state: b3TOIState
703
+ point: b3Vec3
704
+ normal: b3Vec3
705
+ fraction: float
706
+ distance: float
707
+ distanceIterations: int
708
+ pushBackIterations: int
709
+ rootIterations: int
710
+ usedFallback: bool
711
+
712
+ flags b3TreeNodeFlags: int
713
+ b3_allocatedNode = 1
714
+ b3_enlargedNode = 2
715
+ b3_leafNode = 4
716
+
717
+ struct b3TreeNodeChildren:
718
+ child1: int
719
+ child2: int
720
+
721
+ struct b3TreeNode:
722
+ aabb: b3AABB
723
+ categoryBits: ptr_uint
724
+ children: b3TreeNodeChildren
725
+ userData: ptr_uint
726
+ parent: int
727
+ next: int
728
+ height: ushort
729
+ flags: ushort
730
+
731
+ struct b3DynamicTree:
732
+ version: ptr_uint
733
+ nodes: ptr[b3TreeNode]
734
+ root: int
735
+ nodeCount: int
736
+ nodeCapacity: int
737
+ proxyCount: int
738
+ freeList: int
739
+ leafIndices: ptr[int]
740
+ leafBoxes: ptr[b3AABB]
741
+ leafCenters: ptr[b3Vec3]
742
+ binIndices: ptr[int]
743
+ rebuildCapacity: int
744
+
745
+ struct b3TreeStats:
746
+ nodeVisits: int
747
+ leafVisits: int
748
+
749
+ type b3TreeQueryCallbackFcn = fn(arg0: int, arg1: ulong, arg2: ptr[void]) -> bool
750
+ type b3TreeQueryClosestCallbackFcn = fn(arg0: float, arg1: int, arg2: ulong, arg3: ptr[void]) -> float
751
+ type b3TreeBoxCastCallbackFcn = fn(arg0: const_ptr[b3BoxCastInput], arg1: int, arg2: ulong, arg3: ptr[void]) -> float
752
+ type b3TreeRayCastCallbackFcn = fn(arg0: const_ptr[b3RayCastInput], arg1: int, arg2: ulong, arg3: ptr[void]) -> float
753
+
754
+ struct b3PlaneResult:
755
+ plane: b3Plane
756
+ point: b3Vec3
757
+
758
+ struct b3CollisionPlane:
759
+ plane: b3Plane
760
+ pushLimit: float
761
+ push: float
762
+ clipVelocity: bool
763
+
764
+ struct b3PlaneSolverResult:
765
+ delta: b3Vec3
766
+ iterationCount: int
767
+
768
+ struct b3BodyPlaneResult:
769
+ shapeId: b3ShapeId
770
+ result: b3PlaneResult
771
+
772
+ type b3PlaneResultFcn = fn(arg0: b3ShapeId, arg1: const_ptr[b3PlaneResult], arg2: int, arg3: ptr[void]) -> bool
773
+ type b3MoverFilterFcn = fn(arg0: b3ShapeId, arg1: ptr[void]) -> bool
774
+
775
+ struct b3MassData:
776
+ mass: float
777
+ center: b3Vec3
778
+ inertia: b3Matrix3
779
+
780
+ struct b3Sphere:
781
+ center: b3Vec3
782
+ radius: float
783
+
784
+ struct b3Capsule:
785
+ center1: b3Vec3
786
+ center2: b3Vec3
787
+ radius: float
788
+
789
+ struct b3HullVertex:
790
+ edge: ubyte
791
+
792
+ struct b3HullHalfEdge:
793
+ next: ubyte
794
+ twin: ubyte
795
+ origin: ubyte
796
+ face: ubyte
797
+
798
+ struct b3HullFace:
799
+ edge: ubyte
800
+
801
+ struct b3HullData:
802
+ version: ptr_uint
803
+ hash: ptr_uint
804
+ aabb: b3AABB
805
+ surfaceArea: float
806
+ volume: float
807
+ innerRadius: float
808
+ center: b3Vec3
809
+ centralInertia: b3Matrix3
810
+ vertexCount: int
811
+ vertexOffset: int
812
+ pointOffset: int
813
+ edgeCount: int
814
+ edgeOffset: int
815
+ faceCount: int
816
+ planeOffset: int
817
+ faceOffset: int
818
+ soaVertexOffset: int
819
+ soaNormalOffset: int
820
+ byteCount: int
821
+
822
+ struct b3BoxHull:
823
+ base: b3HullData
824
+ boxVertices: array[b3HullVertex, 8]
825
+ boxPoints: array[b3Vec3, 8]
826
+ boxEdges: array[b3HullHalfEdge, 24]
827
+ boxPlanes: array[b3Plane, 6]
828
+ boxFaces: array[b3HullFace, 6]
829
+ padding: array[ubyte, 2]
830
+ vx: array[float, 8]
831
+ vy: array[float, 8]
832
+ vz: array[float, 8]
833
+ nx: array[float, 8]
834
+ ny: array[float, 8]
835
+ nz: array[float, 8]
836
+
837
+ struct b3MeshDef:
838
+ vertices: ptr[b3Vec3]
839
+ indices: ptr[int]
840
+ materialIndices: ptr[ubyte]
841
+ weldTolerance: float
842
+ vertexCount: int
843
+ triangleCount: int
844
+ weldVertices: bool
845
+ useMedianSplit: bool
846
+ identifyEdges: bool
847
+
848
+ enum b3MeshEdgeFlags: int
849
+ b3_concaveEdge1 = 1
850
+ b3_concaveEdge2 = 2
851
+ b3_concaveEdge3 = 4
852
+ b3_inverseConcaveEdge1 = 16
853
+ b3_inverseConcaveEdge2 = 32
854
+ b3_inverseConcaveEdge3 = 64
855
+ b3_allConcaveEdges = 7
856
+ b3_flatEdge1 = 17
857
+ b3_flatEdge2 = 34
858
+ b3_flatEdge3 = 68
859
+ b3_allFlatEdges = 119
860
+
861
+ struct b3MeshTriangle:
862
+ index1: int
863
+ index2: int
864
+ index3: int
865
+
866
+ struct b3MeshNode:
867
+ lowerBound: b3Vec3
868
+ data: b3MeshNode_data
869
+ upperBound: b3Vec3
870
+ triangleOffset: uint
871
+
872
+ struct b3MeshData:
873
+ version: ptr_uint
874
+ hash: ptr_uint
875
+ byteCount: int
876
+ bounds: b3AABB
877
+ surfaceArea: float
878
+ treeHeight: int
879
+ degenerateCount: int
880
+ nodeOffset: int
881
+ nodeCount: int
882
+ vertexOffset: int
883
+ vertexCount: int
884
+ triangleOffset: int
885
+ triangleCount: int
886
+ materialOffset: int
887
+ materialCount: int
888
+ flagsOffset: int
889
+ padding: int
890
+
891
+ struct b3Mesh:
892
+ data: const_ptr[b3MeshData]
893
+ scale: b3Vec3
894
+
895
+ struct b3HeightFieldDef:
896
+ heights: ptr[float]
897
+ materialIndices: ptr[ubyte]
898
+ scale: b3Vec3
899
+ countX: int
900
+ countZ: int
901
+ globalMinimumHeight: float
902
+ globalMaximumHeight: float
903
+ clockwiseWinding: bool
904
+
905
+ struct b3HeightFieldData:
906
+ version: ptr_uint
907
+ hash: ptr_uint
908
+ byteCount: int
909
+ aabb: b3AABB
910
+ minHeight: float
911
+ maxHeight: float
912
+ heightScale: float
913
+ scale: b3Vec3
914
+ columnCount: int
915
+ rowCount: int
916
+ heightsOffset: int
917
+ materialOffset: int
918
+ flagsOffset: int
919
+ clockwise: ubyte
920
+ padding: array[ubyte, 7]
921
+
922
+ struct b3CompoundCapsuleDef:
923
+ capsule: b3Capsule
924
+ material: b3SurfaceMaterial
925
+
926
+ struct b3CompoundHullDef:
927
+ hull: const_ptr[b3HullData]
928
+ transform: b3Transform
929
+ material: b3SurfaceMaterial
930
+
931
+ struct b3CompoundMeshDef:
932
+ meshData: const_ptr[b3MeshData]
933
+ transform: b3Transform
934
+ scale: b3Vec3
935
+ materials: const_ptr[b3SurfaceMaterial]
936
+ materialCount: int
937
+
938
+ struct b3CompoundSphereDef:
939
+ sphere: b3Sphere
940
+ material: b3SurfaceMaterial
941
+
942
+ struct b3CompoundDef:
943
+ capsules: ptr[b3CompoundCapsuleDef]
944
+ capsuleCount: int
945
+ hulls: ptr[b3CompoundHullDef]
946
+ hullCount: int
947
+ meshes: ptr[b3CompoundMeshDef]
948
+ meshCount: int
949
+ spheres: ptr[b3CompoundSphereDef]
950
+ sphereCount: int
951
+
952
+ struct b3CompoundData:
953
+ version: ptr_uint
954
+ byteCount: int
955
+ nodeOffset: int
956
+ tree: b3DynamicTree
957
+ materialOffset: int
958
+ materialCount: int
959
+ capsuleOffset: int
960
+ capsuleCount: int
961
+ hullOffset: int
962
+ hullCount: int
963
+ sharedHullCount: int
964
+ meshOffset: int
965
+ meshCount: int
966
+ sharedMeshCount: int
967
+ sphereOffset: int
968
+ sphereCount: int
969
+
970
+ struct b3CompoundCapsule:
971
+ capsule: b3Capsule
972
+ materialIndex: int
973
+
974
+ struct b3CompoundHull:
975
+ hull: const_ptr[b3HullData]
976
+ transform: b3Transform
977
+ materialIndex: int
978
+
979
+ struct b3CompoundMesh:
980
+ meshData: const_ptr[b3MeshData]
981
+ transform: b3Transform
982
+ scale: b3Vec3
983
+ materialIndices: array[int, 4]
984
+
985
+ struct b3CompoundSphere:
986
+ sphere: b3Sphere
987
+ materialIndex: int
988
+
989
+ struct b3ChildShape:
990
+ capsule: b3Capsule
991
+ hull: const_ptr[b3HullData]
992
+ mesh: b3Mesh
993
+ sphere: b3Sphere
994
+ transform: b3Transform
995
+ materialIndices: array[int, 4]
996
+ type: b3ShapeType
997
+
998
+ type b3CompoundQueryFcn = fn(arg0: const_ptr[b3CompoundData], arg1: int, arg2: ptr[void]) -> bool
999
+
1000
+ struct b3ManifoldPoint:
1001
+ anchorA: b3Vec3
1002
+ anchorB: b3Vec3
1003
+ separation: float
1004
+ baseSeparation: float
1005
+ normalImpulse: float
1006
+ totalNormalImpulse: float
1007
+ normalVelocity: float
1008
+ featureId: uint
1009
+ triangleIndex: int
1010
+ persisted: bool
1011
+
1012
+ struct b3Manifold:
1013
+ points: array[b3ManifoldPoint, 4]
1014
+ normal: b3Vec3
1015
+ twistImpulse: float
1016
+ frictionImpulse: b3Vec3
1017
+ rollingImpulse: b3Vec3
1018
+ pointCount: int
1019
+
1020
+ enum b3SeparatingFeature: int
1021
+ b3_invalidAxis = 0
1022
+ b3_backsideAxis = 1
1023
+ b3_faceAxisA = 2
1024
+ b3_faceAxisB = 3
1025
+ b3_edgePairAxis = 4
1026
+ b3_closestPointsAxis = 5
1027
+ b3_manualFaceAxisA = 6
1028
+ b3_manualFaceAxisB = 7
1029
+ b3_manualEdgePairAxis = 8
1030
+
1031
+ enum b3TriangleFeature: int
1032
+ b3_featureNone = 0
1033
+ b3_featureTriangleFace = 1
1034
+ b3_featureHullFace = 2
1035
+ b3_featureEdge1 = 3
1036
+ b3_featureEdge2 = 4
1037
+ b3_featureEdge3 = 5
1038
+ b3_featureVertex1 = 6
1039
+ b3_featureVertex2 = 7
1040
+ b3_featureVertex3 = 8
1041
+
1042
+ struct b3SATCache:
1043
+ separation: float
1044
+ type: ubyte
1045
+ indexA: ubyte
1046
+ indexB: ubyte
1047
+ hit: ubyte
1048
+
1049
+ struct b3FeaturePair:
1050
+ owner1: ubyte
1051
+ index1: ubyte
1052
+ owner2: ubyte
1053
+ index2: ubyte
1054
+
1055
+ struct b3LocalManifoldPoint:
1056
+ point: b3Vec3
1057
+ separation: float
1058
+ pair: b3FeaturePair
1059
+ triangleIndex: int
1060
+
1061
+ struct b3LocalManifold:
1062
+ normal: b3Vec3
1063
+ triangleNormal: b3Vec3
1064
+ points: ptr[b3LocalManifoldPoint]
1065
+ pointCount: int
1066
+ triangleIndex: int
1067
+ i1: int
1068
+ i2: int
1069
+ i3: int
1070
+ squaredDistance: float
1071
+ feature: b3TriangleFeature
1072
+ triangleFlags: int
1073
+
1074
+ enum b3HexColor: int
1075
+ b3_colorAliceBlue = 15792383
1076
+ b3_colorAntiqueWhite = 16444375
1077
+ b3_colorAqua = 65535
1078
+ b3_colorAquamarine = 8388564
1079
+ b3_colorAzure = 15794175
1080
+ b3_colorBeige = 16119260
1081
+ b3_colorBisque = 16770244
1082
+ b3_colorBlack = 0
1083
+ b3_colorBlanchedAlmond = 16772045
1084
+ b3_colorBlue = 255
1085
+ b3_colorBlueViolet = 9055202
1086
+ b3_colorBrown = 10824234
1087
+ b3_colorBurlywood = 14596231
1088
+ b3_colorCadetBlue = 6266528
1089
+ b3_colorChartreuse = 8388352
1090
+ b3_colorChocolate = 13789470
1091
+ b3_colorCoral = 16744272
1092
+ b3_colorCornflowerBlue = 6591981
1093
+ b3_colorCornsilk = 16775388
1094
+ b3_colorCrimson = 14423100
1095
+ b3_colorCyan = 65535
1096
+ b3_colorDarkBlue = 139
1097
+ b3_colorDarkCyan = 35723
1098
+ b3_colorDarkGoldenRod = 12092939
1099
+ b3_colorDarkGray = 11119017
1100
+ b3_colorDarkGreen = 25600
1101
+ b3_colorDarkKhaki = 12433259
1102
+ b3_colorDarkMagenta = 9109643
1103
+ b3_colorDarkOliveGreen = 5597999
1104
+ b3_colorDarkOrange = 16747520
1105
+ b3_colorDarkOrchid = 10040012
1106
+ b3_colorDarkRed = 9109504
1107
+ b3_colorDarkSalmon = 15308410
1108
+ b3_colorDarkSeaGreen = 9419919
1109
+ b3_colorDarkSlateBlue = 4734347
1110
+ b3_colorDarkSlateGray = 3100495
1111
+ b3_colorDarkTurquoise = 52945
1112
+ b3_colorDarkViolet = 9699539
1113
+ b3_colorDeepPink = 16716947
1114
+ b3_colorDeepSkyBlue = 49151
1115
+ b3_colorDimGray = 6908265
1116
+ b3_colorDodgerBlue = 2003199
1117
+ b3_colorFireBrick = 11674146
1118
+ b3_colorFloralWhite = 16775920
1119
+ b3_colorForestGreen = 2263842
1120
+ b3_colorFuchsia = 16711935
1121
+ b3_colorGainsboro = 14474460
1122
+ b3_colorGhostWhite = 16316671
1123
+ b3_colorGold = 16766720
1124
+ b3_colorGoldenRod = 14329120
1125
+ b3_colorGray = 8421504
1126
+ b3_colorGreen = 32768
1127
+ b3_colorGreenYellow = 11403055
1128
+ b3_colorHoneyDew = 15794160
1129
+ b3_colorHotPink = 16738740
1130
+ b3_colorIndianRed = 13458524
1131
+ b3_colorIndigo = 4915330
1132
+ b3_colorIvory = 16777200
1133
+ b3_colorKhaki = 15787660
1134
+ b3_colorLavender = 15132410
1135
+ b3_colorLavenderBlush = 16773365
1136
+ b3_colorLawnGreen = 8190976
1137
+ b3_colorLemonChiffon = 16775885
1138
+ b3_colorLightBlue = 11393254
1139
+ b3_colorLightCoral = 15761536
1140
+ b3_colorLightCyan = 14745599
1141
+ b3_colorLightGoldenRodYellow = 16448210
1142
+ b3_colorLightGray = 13882323
1143
+ b3_colorLightGreen = 9498256
1144
+ b3_colorLightPink = 16758465
1145
+ b3_colorLightSalmon = 16752762
1146
+ b3_colorLightSeaGreen = 2142890
1147
+ b3_colorLightSkyBlue = 8900346
1148
+ b3_colorLightSlateGray = 7833753
1149
+ b3_colorLightSteelBlue = 11584734
1150
+ b3_colorLightYellow = 16777184
1151
+ b3_colorLime = 65280
1152
+ b3_colorLimeGreen = 3329330
1153
+ b3_colorLinen = 16445670
1154
+ b3_colorMagenta = 16711935
1155
+ b3_colorMaroon = 8388608
1156
+ b3_colorMediumAquaMarine = 6737322
1157
+ b3_colorMediumBlue = 205
1158
+ b3_colorMediumOrchid = 12211667
1159
+ b3_colorMediumPurple = 9662683
1160
+ b3_colorMediumSeaGreen = 3978097
1161
+ b3_colorMediumSlateBlue = 8087790
1162
+ b3_colorMediumSpringGreen = 64154
1163
+ b3_colorMediumTurquoise = 4772300
1164
+ b3_colorMediumVioletRed = 13047173
1165
+ b3_colorMidnightBlue = 1644912
1166
+ b3_colorMintCream = 16121850
1167
+ b3_colorMistyRose = 16770273
1168
+ b3_colorMoccasin = 16770229
1169
+ b3_colorNavajoWhite = 16768685
1170
+ b3_colorNavy = 128
1171
+ b3_colorOldLace = 16643558
1172
+ b3_colorOlive = 8421376
1173
+ b3_colorOliveDrab = 7048739
1174
+ b3_colorOrange = 16753920
1175
+ b3_colorOrangeRed = 16729344
1176
+ b3_colorOrchid = 14315734
1177
+ b3_colorPaleGoldenRod = 15657130
1178
+ b3_colorPaleGreen = 10025880
1179
+ b3_colorPaleTurquoise = 11529966
1180
+ b3_colorPaleVioletRed = 14381203
1181
+ b3_colorPapayaWhip = 16773077
1182
+ b3_colorPeachPuff = 16767673
1183
+ b3_colorPeru = 13468991
1184
+ b3_colorPink = 16761035
1185
+ b3_colorPlum = 14524637
1186
+ b3_colorPowderBlue = 11591910
1187
+ b3_colorPurple = 8388736
1188
+ b3_colorRebeccaPurple = 6697881
1189
+ b3_colorRed = 16711680
1190
+ b3_colorRosyBrown = 12357519
1191
+ b3_colorRoyalBlue = 4286945
1192
+ b3_colorSaddleBrown = 9127187
1193
+ b3_colorSalmon = 16416882
1194
+ b3_colorSandyBrown = 16032864
1195
+ b3_colorSeaGreen = 3050327
1196
+ b3_colorSeaShell = 16774638
1197
+ b3_colorSienna = 10506797
1198
+ b3_colorSilver = 12632256
1199
+ b3_colorSkyBlue = 8900331
1200
+ b3_colorSlateBlue = 6970061
1201
+ b3_colorSlateGray = 7372944
1202
+ b3_colorSnow = 16775930
1203
+ b3_colorSpringGreen = 65407
1204
+ b3_colorSteelBlue = 4620980
1205
+ b3_colorTan = 13808780
1206
+ b3_colorTeal = 32896
1207
+ b3_colorThistle = 14204888
1208
+ b3_colorTomato = 16737095
1209
+ b3_colorTurquoise = 4251856
1210
+ b3_colorViolet = 15631086
1211
+ b3_colorWheat = 16113331
1212
+ b3_colorWhite = 16777215
1213
+ b3_colorWhiteSmoke = 16119285
1214
+ b3_colorYellow = 16776960
1215
+ b3_colorYellowGreen = 10145074
1216
+ b3_colorBox2DRed = 14430514
1217
+ b3_colorBox2DBlue = 3190463
1218
+ b3_colorBox2DGreen = 9226532
1219
+ b3_colorBox2DYellow = 16772748
1220
+
1221
+ enum b3DebugMaterial: int
1222
+ b3_debugMaterialDefault = 0
1223
+ b3_debugMaterialMatte = 1
1224
+ b3_debugMaterialSoft = 2
1225
+ b3_debugMaterialDead = 3
1226
+ b3_debugMaterialGlossy = 4
1227
+ b3_debugMaterialMetallic = 5
1228
+
1229
+ external function b3GetGraphColor(index: int) -> b3HexColor
1230
+
1231
+ struct b3DebugShape:
1232
+ shapeId: b3ShapeId
1233
+ type: b3ShapeType
1234
+ capsule: const_ptr[b3Capsule]
1235
+ compound: const_ptr[b3CompoundData]
1236
+ heightField: const_ptr[b3HeightFieldData]
1237
+ hull: const_ptr[b3HullData]
1238
+ mesh: const_ptr[b3Mesh]
1239
+ sphere: const_ptr[b3Sphere]
1240
+
1241
+ struct b3DebugDraw:
1242
+ DrawShapeFcn: fn(arg0: ptr[void], arg1: b3WorldTransform, arg2: b3HexColor, arg3: ptr[void]) -> void
1243
+ DrawSegmentFcn: fn(arg0: b3Pos, arg1: b3Pos, arg2: b3HexColor, arg3: ptr[void]) -> void
1244
+ DrawTransformFcn: fn(arg0: b3WorldTransform, arg1: ptr[void]) -> void
1245
+ DrawPointFcn: fn(arg0: b3Pos, arg1: float, arg2: b3HexColor, arg3: ptr[void]) -> void
1246
+ DrawSphereFcn: fn(arg0: b3Pos, arg1: float, arg2: b3HexColor, arg3: float, arg4: ptr[void]) -> void
1247
+ DrawCapsuleFcn: fn(arg0: b3Pos, arg1: b3Pos, arg2: float, arg3: b3HexColor, arg4: float, arg5: ptr[void]) -> void
1248
+ DrawBoundsFcn: fn(arg0: b3AABB, arg1: b3HexColor, arg2: ptr[void]) -> void
1249
+ DrawBoxFcn: fn(arg0: b3Vec3, arg1: b3WorldTransform, arg2: b3HexColor, arg3: ptr[void]) -> void
1250
+ DrawStringFcn: fn(arg0: b3Pos, arg1: cstr, arg2: b3HexColor, arg3: ptr[void]) -> void
1251
+ drawingBounds: b3AABB
1252
+ forceScale: float
1253
+ jointScale: float
1254
+ drawShapes: bool
1255
+ drawJoints: bool
1256
+ drawJointExtras: bool
1257
+ drawBounds: bool
1258
+ drawMass: bool
1259
+ drawSleep: bool
1260
+ drawBodyNames: bool
1261
+ drawContacts: bool
1262
+ drawAnchorA: bool
1263
+ drawGraphColors: bool
1264
+ drawContactFeatures: bool
1265
+ drawContactNormals: bool
1266
+ drawContactForces: bool
1267
+ drawIslands: bool
1268
+ context: ptr[void]
1269
+
1270
+ external function b3DefaultDebugDraw() -> b3DebugDraw
1271
+ external function b3DynamicTree_Create(proxyCapacity: int) -> b3DynamicTree
1272
+ external function b3DynamicTree_Destroy(tree: ptr[b3DynamicTree]) -> void
1273
+ external function b3DynamicTree_CreateProxy(tree: ptr[b3DynamicTree], aabb: b3AABB, categoryBits: ptr_uint, userData: ptr_uint) -> int
1274
+ external function b3DynamicTree_DestroyProxy(tree: ptr[b3DynamicTree], proxyId: int) -> void
1275
+ external function b3DynamicTree_MoveProxy(tree: ptr[b3DynamicTree], proxyId: int, aabb: b3AABB) -> void
1276
+ external function b3DynamicTree_EnlargeProxy(tree: ptr[b3DynamicTree], proxyId: int, aabb: b3AABB) -> void
1277
+ external function b3DynamicTree_SetCategoryBits(tree: ptr[b3DynamicTree], proxyId: int, categoryBits: ptr_uint) -> void
1278
+ external function b3DynamicTree_GetCategoryBits(tree: ptr[b3DynamicTree], proxyId: int) -> ulong
1279
+ external function b3DynamicTree_Query(tree: const_ptr[b3DynamicTree], aabb: b3AABB, maskBits: ptr_uint, requireAllBits: bool, callback: b3TreeQueryCallbackFcn, context: ptr[void]) -> b3TreeStats
1280
+ external function b3DynamicTree_QueryClosest(tree: const_ptr[b3DynamicTree], point: b3Vec3, maskBits: ptr_uint, requireAllBits: bool, callback: b3TreeQueryClosestCallbackFcn, context: ptr[void], minDistanceSqr: ptr[float]) -> b3TreeStats
1281
+ external function b3DynamicTree_RayCast(tree: const_ptr[b3DynamicTree], input: const_ptr[b3RayCastInput], maskBits: ptr_uint, requireAllBits: bool, callback: b3TreeRayCastCallbackFcn, context: ptr[void]) -> b3TreeStats
1282
+ external function b3DynamicTree_BoxCast(tree: const_ptr[b3DynamicTree], input: const_ptr[b3BoxCastInput], maskBits: ptr_uint, requireAllBits: bool, callback: b3TreeBoxCastCallbackFcn, context: ptr[void]) -> b3TreeStats
1283
+ external function b3DynamicTree_GetHeight(tree: const_ptr[b3DynamicTree]) -> int
1284
+ external function b3DynamicTree_GetAreaRatio(tree: const_ptr[b3DynamicTree]) -> float
1285
+ external function b3DynamicTree_GetRootBounds(tree: const_ptr[b3DynamicTree]) -> b3AABB
1286
+ external function b3DynamicTree_GetProxyCount(tree: const_ptr[b3DynamicTree]) -> int
1287
+ external function b3DynamicTree_Rebuild(tree: ptr[b3DynamicTree], fullBuild: bool) -> int
1288
+ external function b3DynamicTree_GetByteCount(tree: const_ptr[b3DynamicTree]) -> int
1289
+ external function b3DynamicTree_Validate(tree: const_ptr[b3DynamicTree]) -> void
1290
+ external function b3DynamicTree_ValidateNoEnlarged(tree: const_ptr[b3DynamicTree]) -> void
1291
+ external function b3DynamicTree_Save(tree: const_ptr[b3DynamicTree], fileName: cstr) -> void
1292
+ external function b3DynamicTree_Load(fileName: cstr, scale: float) -> b3DynamicTree
1293
+ external function b3CreateCylinder(height: float, radius: float, yOffset: float, sides: int) -> ptr[b3HullData]
1294
+ external function b3CreateCone(height: float, radius1: float, radius2: float, slices: int) -> ptr[b3HullData]
1295
+ external function b3CreateRock(radius: float) -> ptr[b3HullData]
1296
+ external function b3CreateHull(points: const_ptr[b3Vec3], pointCount: int, maxVertexCount: int) -> ptr[b3HullData]
1297
+ external function b3CloneHull(hull: const_ptr[b3HullData]) -> ptr[b3HullData]
1298
+ external function b3CloneAndTransformHull(original: const_ptr[b3HullData], transform: b3Transform, scale: b3Vec3) -> ptr[b3HullData]
1299
+ external function b3DestroyHull(hull: ptr[b3HullData]) -> void
1300
+ external function b3MakeCubeHull(halfWidth: float) -> b3BoxHull
1301
+ external function b3MakeBoxHull(hx: float, hy: float, hz: float) -> b3BoxHull
1302
+ external function b3MakeOffsetBoxHull(hx: float, hy: float, hz: float, offset: b3Vec3) -> b3BoxHull
1303
+ external function b3MakeTransformedBoxHull(hx: float, hy: float, hz: float, transform: b3Transform) -> b3BoxHull
1304
+ external function b3MakeScaledBoxHull(halfWidths: b3Vec3, transform: b3Transform, postScale: b3Vec3) -> b3BoxHull
1305
+ external function b3ScaleBox(halfWidths: ptr[b3Vec3], transform: ptr[b3Transform], postScale: b3Vec3, minHalfWidth: float) -> void
1306
+ external function b3CreateGridMesh(xCount: int, zCount: int, cellWidth: float, materialCount: int, identifyEdges: bool) -> ptr[b3MeshData]
1307
+ external function b3CreateWaveMesh(xCount: int, zCount: int, cellWidth: float, amplitude: float, rowFrequency: float, columnFrequency: float) -> ptr[b3MeshData]
1308
+ external function b3CreateTorusMesh(radialResolution: int, tubularResolution: int, radius: float, thickness: float) -> ptr[b3MeshData]
1309
+ external function b3CreateBoxMesh(center: b3Vec3, extent: b3Vec3, identifyEdges: bool) -> ptr[b3MeshData]
1310
+ external function b3CreateHollowBoxMesh(center: b3Vec3, extent: b3Vec3) -> ptr[b3MeshData]
1311
+ external function b3CreatePlatformMesh(center: b3Vec3, height: float, topWidth: float, bottomWidth: float) -> ptr[b3MeshData]
1312
+ external function b3CreateMesh(def: const_ptr[b3MeshDef], degenerateTriangleIndices: ptr[int], degenerateCapacity: int) -> ptr[b3MeshData]
1313
+ external function b3DestroyMesh(mesh: ptr[b3MeshData]) -> void
1314
+ external function b3GetHeight(mesh: const_ptr[b3MeshData]) -> int
1315
+ external function b3CreateHeightField(data: const_ptr[b3HeightFieldDef]) -> ptr[b3HeightFieldData]
1316
+ external function b3CreateGrid(rowCount: int, columnCount: int, scale: b3Vec3, makeHoles: bool) -> ptr[b3HeightFieldData]
1317
+ external function b3CreateWave(rowCount: int, columnCount: int, scale: b3Vec3, rowFrequency: float, columnFrequency: float, makeHoles: bool) -> ptr[b3HeightFieldData]
1318
+ external function b3DestroyHeightField(heightField: ptr[b3HeightFieldData]) -> void
1319
+ external function b3DumpHeightData(data: const_ptr[b3HeightFieldDef], fileName: cstr) -> void
1320
+ external function b3LoadHeightField(fileName: cstr) -> ptr[b3HeightFieldData]
1321
+ external function b3GetCompoundChild(compound: const_ptr[b3CompoundData], childIndex: int) -> b3ChildShape
1322
+ external function b3QueryCompound(compound: const_ptr[b3CompoundData], aabb: b3AABB, fcn: b3CompoundQueryFcn, context: ptr[void]) -> void
1323
+ external function b3GetCompoundCapsule(compound: const_ptr[b3CompoundData], index: int) -> b3CompoundCapsule
1324
+ external function b3GetCompoundHull(compound: const_ptr[b3CompoundData], index: int) -> b3CompoundHull
1325
+ external function b3GetCompoundMesh(compound: const_ptr[b3CompoundData], index: int) -> b3CompoundMesh
1326
+ external function b3GetCompoundSphere(compound: const_ptr[b3CompoundData], index: int) -> b3CompoundSphere
1327
+ external function b3GetCompoundMaterials(compound: const_ptr[b3CompoundData]) -> const_ptr[b3SurfaceMaterial]
1328
+ external function b3CreateCompound(def: const_ptr[b3CompoundDef]) -> ptr[b3CompoundData]
1329
+ external function b3DestroyCompound(compound: ptr[b3CompoundData]) -> void
1330
+ external function b3ConvertCompoundToBytes(compound: ptr[b3CompoundData]) -> ptr[ubyte]
1331
+ external function b3ConvertBytesToCompound(bytes: ptr[ubyte], byteCount: int) -> ptr[b3CompoundData]
1332
+ external function b3ComputeSphereMass(shape: const_ptr[b3Sphere], density: float) -> b3MassData
1333
+ external function b3ComputeCapsuleMass(shape: const_ptr[b3Capsule], density: float) -> b3MassData
1334
+ external function b3ComputeHullMass(shape: const_ptr[b3HullData], density: float) -> b3MassData
1335
+ external function b3ComputeSphereAABB(shape: const_ptr[b3Sphere], transform: b3Transform) -> b3AABB
1336
+ external function b3ComputeCapsuleAABB(shape: const_ptr[b3Capsule], transform: b3Transform) -> b3AABB
1337
+ external function b3ComputeHullAABB(shape: const_ptr[b3HullData], transform: b3Transform) -> b3AABB
1338
+ external function b3ComputeMeshAABB(shape: const_ptr[b3MeshData], transform: b3Transform, scale: b3Vec3) -> b3AABB
1339
+ external function b3ComputeHeightFieldAABB(shape: const_ptr[b3HeightFieldData], transform: b3Transform) -> b3AABB
1340
+ external function b3ComputeCompoundAABB(shape: const_ptr[b3CompoundData], transform: b3Transform) -> b3AABB
1341
+ external function b3IsValidRay(input: const_ptr[b3RayCastInput]) -> bool
1342
+ external function b3OverlapCapsule(shape: const_ptr[b3Capsule], shapeTransform: b3Transform, proxy: const_ptr[b3ShapeProxy]) -> bool
1343
+ external function b3OverlapCompound(shape: const_ptr[b3CompoundData], shapeTransform: b3Transform, proxy: const_ptr[b3ShapeProxy]) -> bool
1344
+ external function b3OverlapHeightField(shape: const_ptr[b3HeightFieldData], shapeTransform: b3Transform, proxy: const_ptr[b3ShapeProxy]) -> bool
1345
+ external function b3OverlapHull(shape: const_ptr[b3HullData], shapeTransform: b3Transform, proxy: const_ptr[b3ShapeProxy]) -> bool
1346
+ external function b3OverlapMesh(shape: const_ptr[b3Mesh], shapeTransform: b3Transform, proxy: const_ptr[b3ShapeProxy]) -> bool
1347
+ external function b3OverlapSphere(shape: const_ptr[b3Sphere], shapeTransform: b3Transform, proxy: const_ptr[b3ShapeProxy]) -> bool
1348
+ external function b3RayCastSphere(shape: const_ptr[b3Sphere], input: const_ptr[b3RayCastInput]) -> b3CastOutput
1349
+ external function b3RayCastHollowSphere(shape: const_ptr[b3Sphere], input: const_ptr[b3RayCastInput]) -> b3CastOutput
1350
+ external function b3RayCastCapsule(shape: const_ptr[b3Capsule], input: const_ptr[b3RayCastInput]) -> b3CastOutput
1351
+ external function b3RayCastCompound(shape: const_ptr[b3CompoundData], input: const_ptr[b3RayCastInput]) -> b3CastOutput
1352
+ external function b3RayCastHull(shape: const_ptr[b3HullData], input: const_ptr[b3RayCastInput]) -> b3CastOutput
1353
+ external function b3RayCastMesh(shape: const_ptr[b3Mesh], input: const_ptr[b3RayCastInput]) -> b3CastOutput
1354
+ external function b3RayCastHeightField(shape: const_ptr[b3HeightFieldData], input: const_ptr[b3RayCastInput]) -> b3CastOutput
1355
+ external function b3ShapeCastSphere(shape: const_ptr[b3Sphere], input: const_ptr[b3ShapeCastInput]) -> b3CastOutput
1356
+ external function b3ShapeCastCapsule(shape: const_ptr[b3Capsule], input: const_ptr[b3ShapeCastInput]) -> b3CastOutput
1357
+ external function b3ShapeCastCompound(shape: const_ptr[b3CompoundData], input: const_ptr[b3ShapeCastInput]) -> b3CastOutput
1358
+ external function b3ShapeCastHull(shape: const_ptr[b3HullData], input: const_ptr[b3ShapeCastInput]) -> b3CastOutput
1359
+ external function b3ShapeCastMesh(shape: const_ptr[b3Mesh], input: const_ptr[b3ShapeCastInput]) -> b3CastOutput
1360
+ external function b3ShapeCastHeightField(shape: const_ptr[b3HeightFieldData], input: const_ptr[b3ShapeCastInput]) -> b3CastOutput
1361
+
1362
+ type b3MeshQueryFcn = fn(arg0: b3Vec3, arg1: b3Vec3, arg2: b3Vec3, arg3: int, arg4: ptr[void]) -> bool
1363
+
1364
+ external function b3QueryMesh(mesh: const_ptr[b3Mesh], bounds: b3AABB, fcn: b3MeshQueryFcn, context: ptr[void]) -> void
1365
+ external function b3QueryHeightField(heightField: const_ptr[b3HeightFieldData], bounds: b3AABB, fcn: b3MeshQueryFcn, context: ptr[void]) -> void
1366
+ external function b3ShapeDistance(input: const_ptr[b3DistanceInput], cache: ptr[b3SimplexCache], simplexes: ptr[b3Simplex], simplexCapacity: int) -> b3DistanceOutput
1367
+ external function b3ShapeCast(input: const_ptr[b3ShapeCastPairInput]) -> b3CastOutput
1368
+ external function b3GetSweepTransform(sweep: const_ptr[b3Sweep], time: float) -> b3Transform
1369
+ external function b3TimeOfImpact(input: const_ptr[b3TOIInput]) -> b3TOIOutput
1370
+ external function b3CollideSpheres(manifold: ptr[b3LocalManifold], capacity: int, sphereA: const_ptr[b3Sphere], sphereB: const_ptr[b3Sphere], transformBtoA: b3Transform) -> void
1371
+ external function b3CollideCapsuleAndSphere(manifold: ptr[b3LocalManifold], capacity: int, capsuleA: const_ptr[b3Capsule], sphereB: const_ptr[b3Sphere], transformBtoA: b3Transform) -> void
1372
+ external function b3CollideHullAndSphere(manifold: ptr[b3LocalManifold], capacity: int, hullA: const_ptr[b3HullData], sphereB: const_ptr[b3Sphere], transformBtoA: b3Transform, cache: ptr[b3SimplexCache]) -> void
1373
+ external function b3CollideCapsules(manifold: ptr[b3LocalManifold], capacity: int, capsuleA: const_ptr[b3Capsule], capsuleB: const_ptr[b3Capsule], transformBtoA: b3Transform) -> void
1374
+ external function b3CollideHullAndCapsule(manifold: ptr[b3LocalManifold], capacity: int, hullA: const_ptr[b3HullData], capsuleB: const_ptr[b3Capsule], transformBtoA: b3Transform, cache: ptr[b3SimplexCache]) -> void
1375
+ external function b3CollideHulls(manifold: ptr[b3LocalManifold], capacity: int, hullA: const_ptr[b3HullData], hullB: const_ptr[b3HullData], transformBtoA: b3Transform, cache: ptr[b3SATCache]) -> void
1376
+ external function b3CollideTriangleAndCapsule(manifold: ptr[b3LocalManifold], capacity: int, triangleA: const_ptr[b3Vec3], capsuleB: const_ptr[b3Capsule], cache: ptr[b3SimplexCache]) -> void
1377
+ external function b3CollideTriangleAndHull(manifold: ptr[b3LocalManifold], capacity: int, v1: b3Vec3, v2: b3Vec3, v3: b3Vec3, triangleFlags: int, hullB: const_ptr[b3HullData], cache: ptr[b3SATCache], enableSpeculative: bool) -> void
1378
+ external function b3CollideTriangleAndSphere(manifold: ptr[b3LocalManifold], capacity: int, triangleA: const_ptr[b3Vec3], sphereB: const_ptr[b3Sphere]) -> void
1379
+ external function b3SolvePlanes(targetDelta: b3Vec3, planes: ptr[b3CollisionPlane], count: int) -> b3PlaneSolverResult
1380
+ external function b3ClipVector(vector: b3Vec3, planes: const_ptr[b3CollisionPlane], count: int) -> b3Vec3
1381
+ external function b3CreateWorld(def: const_ptr[b3WorldDef]) -> b3WorldId
1382
+ external function b3DestroyWorld(worldId: b3WorldId) -> void
1383
+ external function b3GetWorldCount() -> int
1384
+ external function b3GetMaxWorldCount() -> int
1385
+ external function b3World_IsValid(id: b3WorldId) -> bool
1386
+ external function b3World_Step(worldId: b3WorldId, timeStep: float, subStepCount: int) -> void
1387
+ external function b3World_Draw(worldId: b3WorldId, draw: ptr[b3DebugDraw], maskBits: ptr_uint) -> void
1388
+ external function b3World_GetBounds(worldId: b3WorldId) -> b3AABB
1389
+ external function b3World_GetBodyEvents(worldId: b3WorldId) -> b3BodyEvents
1390
+ external function b3World_GetSensorEvents(worldId: b3WorldId) -> b3SensorEvents
1391
+ external function b3World_GetContactEvents(worldId: b3WorldId) -> b3ContactEvents
1392
+ external function b3World_GetJointEvents(worldId: b3WorldId) -> b3JointEvents
1393
+ external function b3World_OverlapAABB(worldId: b3WorldId, aabb: b3AABB, filter: b3QueryFilter, fcn: b3OverlapResultFcn, context: ptr[void]) -> b3TreeStats
1394
+ external function b3World_OverlapShape(worldId: b3WorldId, origin: b3Vec3, proxy: const_ptr[b3ShapeProxy], filter: b3QueryFilter, fcn: b3OverlapResultFcn, context: ptr[void]) -> b3TreeStats
1395
+ external function b3World_CastRay(worldId: b3WorldId, origin: b3Vec3, translation: b3Vec3, filter: b3QueryFilter, fcn: b3CastResultFcn, context: ptr[void]) -> b3TreeStats
1396
+ external function b3World_CastRayClosest(worldId: b3WorldId, origin: b3Vec3, translation: b3Vec3, filter: b3QueryFilter) -> b3RayResult
1397
+ external function b3World_CastShape(worldId: b3WorldId, origin: b3Vec3, proxy: const_ptr[b3ShapeProxy], translation: b3Vec3, filter: b3QueryFilter, fcn: b3CastResultFcn, context: ptr[void]) -> b3TreeStats
1398
+ external function b3World_CastMover(worldId: b3WorldId, origin: b3Vec3, mover: const_ptr[b3Capsule], translation: b3Vec3, filter: b3QueryFilter, fcn: b3MoverFilterFcn, context: ptr[void]) -> float
1399
+ external function b3World_CollideMover(worldId: b3WorldId, origin: b3Vec3, mover: const_ptr[b3Capsule], filter: b3QueryFilter, fcn: b3PlaneResultFcn, context: ptr[void]) -> void
1400
+ external function b3World_EnableSleeping(worldId: b3WorldId, flag: bool) -> void
1401
+ external function b3World_IsSleepingEnabled(worldId: b3WorldId) -> bool
1402
+ external function b3World_EnableContinuous(worldId: b3WorldId, flag: bool) -> void
1403
+ external function b3World_IsContinuousEnabled(worldId: b3WorldId) -> bool
1404
+ external function b3World_SetRestitutionThreshold(worldId: b3WorldId, value: float) -> void
1405
+ external function b3World_GetRestitutionThreshold(worldId: b3WorldId) -> float
1406
+ external function b3World_SetHitEventThreshold(worldId: b3WorldId, value: float) -> void
1407
+ external function b3World_GetHitEventThreshold(worldId: b3WorldId) -> float
1408
+ external function b3World_SetCustomFilterCallback(worldId: b3WorldId, fcn: b3CustomFilterFcn, context: ptr[void]) -> void
1409
+ external function b3World_SetPreSolveCallback(worldId: b3WorldId, fcn: b3PreSolveFcn, context: ptr[void]) -> void
1410
+ external function b3World_SetGravity(worldId: b3WorldId, gravity: b3Vec3) -> void
1411
+ external function b3World_GetGravity(worldId: b3WorldId) -> b3Vec3
1412
+ external function b3World_Explode(worldId: b3WorldId, explosionDef: const_ptr[b3ExplosionDef]) -> void
1413
+ external function b3World_SetContactTuning(worldId: b3WorldId, hertz: float, dampingRatio: float, contactSpeed: float) -> void
1414
+ external function b3World_SetContactRecycleDistance(worldId: b3WorldId, recycleDistance: float) -> void
1415
+ external function b3World_GetContactRecycleDistance(worldId: b3WorldId) -> float
1416
+ external function b3World_SetMaximumLinearSpeed(worldId: b3WorldId, maximumLinearSpeed: float) -> void
1417
+ external function b3World_GetMaximumLinearSpeed(worldId: b3WorldId) -> float
1418
+ external function b3World_EnableWarmStarting(worldId: b3WorldId, flag: bool) -> void
1419
+ external function b3World_IsWarmStartingEnabled(worldId: b3WorldId) -> bool
1420
+ external function b3World_GetAwakeBodyCount(worldId: b3WorldId) -> int
1421
+ external function b3World_GetProfile(worldId: b3WorldId) -> b3Profile
1422
+ external function b3World_GetCounters(worldId: b3WorldId) -> b3Counters
1423
+ external function b3World_GetMaxCapacity(worldId: b3WorldId) -> b3Capacity
1424
+ external function b3World_SetUserData(worldId: b3WorldId, userData: ptr[void]) -> void
1425
+ external function b3World_GetUserData(worldId: b3WorldId) -> ptr[void]
1426
+ external function b3World_SetFrictionCallback(worldId: b3WorldId, callback: b3FrictionCallback) -> void
1427
+ external function b3World_SetRestitutionCallback(worldId: b3WorldId, callback: b3RestitutionCallback) -> void
1428
+ external function b3World_SetWorkerCount(worldId: b3WorldId, count: int) -> void
1429
+ external function b3World_GetWorkerCount(worldId: b3WorldId) -> int
1430
+ external function b3World_DumpMemoryStats(worldId: b3WorldId) -> void
1431
+ external function b3World_DumpShapeBounds(worldId: b3WorldId, type_: b3BodyType) -> void
1432
+ external function b3World_RebuildStaticTree(worldId: b3WorldId) -> void
1433
+ external function b3World_EnableSpeculative(worldId: b3WorldId, flag: bool) -> void
1434
+
1435
+ opaque b3Recording = c"b3Recording"
1436
+
1437
+ external function b3CreateRecording(byteCapacity: int) -> ptr[b3Recording]
1438
+ external function b3DestroyRecording(recording: ptr[b3Recording]) -> void
1439
+ external function b3Recording_GetData(recording: const_ptr[b3Recording]) -> const_ptr[ubyte]
1440
+ external function b3Recording_GetSize(recording: const_ptr[b3Recording]) -> int
1441
+ external function b3World_StartRecording(worldId: b3WorldId, recording: ptr[b3Recording]) -> void
1442
+ external function b3World_StopRecording(worldId: b3WorldId) -> void
1443
+ external function b3SaveRecordingToFile(recording: const_ptr[b3Recording], path: cstr) -> bool
1444
+ external function b3LoadRecordingFromFile(path: cstr) -> ptr[b3Recording]
1445
+ external function b3ValidateReplay(data: const_ptr[void], size: int, workerCount: int) -> bool
1446
+
1447
+ opaque b3RecPlayer = c"b3RecPlayer"
1448
+
1449
+ struct b3RecPlayerInfo:
1450
+ frameCount: int
1451
+ workerCount: int
1452
+ timeStep: float
1453
+ subStepCount: int
1454
+ lengthScale: float
1455
+ bounds: b3AABB
1456
+
1457
+ external function b3CreatePlayer(data: const_ptr[void], size: int, workerCount: int) -> ptr[b3RecPlayer]
1458
+ external function b3DestroyPlayer(player: ptr[b3RecPlayer]) -> void
1459
+ external function b3RecPlayer_StepFrame(player: ptr[b3RecPlayer]) -> bool
1460
+ external function b3RecPlayer_SubStepFrame(player: ptr[b3RecPlayer]) -> void
1461
+ external function b3RecPlayer_Restart(player: ptr[b3RecPlayer]) -> void
1462
+ external function b3RecPlayer_SeekFrame(player: ptr[b3RecPlayer], targetFrame: int) -> void
1463
+ external function b3RecPlayer_GetWorldId(player: const_ptr[b3RecPlayer]) -> b3WorldId
1464
+ external function b3RecPlayer_GetFrame(player: const_ptr[b3RecPlayer]) -> int
1465
+ external function b3RecPlayer_GetFrameCount(player: const_ptr[b3RecPlayer]) -> int
1466
+ external function b3RecPlayer_IsAtEnd(player: const_ptr[b3RecPlayer]) -> bool
1467
+ external function b3RecPlayer_IsAtPreStep(player: const_ptr[b3RecPlayer]) -> bool
1468
+ external function b3RecPlayer_HasDiverged(player: const_ptr[b3RecPlayer]) -> bool
1469
+ external function b3RecPlayer_GetInfo(player: const_ptr[b3RecPlayer]) -> b3RecPlayerInfo
1470
+ external function b3RecPlayer_GetDivergeFrame(player: const_ptr[b3RecPlayer]) -> int
1471
+ external function b3RecPlayer_SetWorkerCount(player: ptr[b3RecPlayer], count: int) -> void
1472
+ external function b3RecPlayer_SetKeyframePolicy(player: ptr[b3RecPlayer], budgetBytes: ptr_uint, minIntervalFrames: int) -> void
1473
+ external function b3RecPlayer_GetKeyframeBudget(player: const_ptr[b3RecPlayer]) -> ptr_uint
1474
+ external function b3RecPlayer_GetKeyframeMinInterval(player: const_ptr[b3RecPlayer]) -> int
1475
+ external function b3RecPlayer_GetKeyframeInterval(player: const_ptr[b3RecPlayer]) -> int
1476
+ external function b3RecPlayer_GetKeyframeBytes(player: const_ptr[b3RecPlayer]) -> ptr_uint
1477
+ external function b3RecPlayer_GetBodyCount(player: const_ptr[b3RecPlayer]) -> int
1478
+ external function b3RecPlayer_GetBodyId(player: const_ptr[b3RecPlayer], index: int) -> b3BodyId
1479
+ external function b3RecPlayer_SetDebugShapeCallbacks(player: ptr[b3RecPlayer], createDebugShape: b3CreateDebugShapeCallback, destroyDebugShape: b3DestroyDebugShapeCallback, context: ptr[void]) -> void
1480
+ external function b3RecPlayer_DrawFrameQueries(player: ptr[b3RecPlayer], draw: ptr[b3DebugDraw], queryIndex: int, selectedIndex: int) -> void
1481
+
1482
+ enum b3RecQueryType: int
1483
+ b3_recQueryOverlapAABB = 0
1484
+ b3_recQueryOverlapShape = 1
1485
+ b3_recQueryCastRay = 2
1486
+ b3_recQueryCastShape = 3
1487
+ b3_recQueryCastRayClosest = 4
1488
+ b3_recQueryCastMover = 5
1489
+ b3_recQueryCollideMover = 6
1490
+
1491
+ struct b3RecQueryInfo:
1492
+ type: b3RecQueryType
1493
+ filter: b3QueryFilter
1494
+ aabb: b3AABB
1495
+ origin: b3Vec3
1496
+ translation: b3Vec3
1497
+ hitCount: int
1498
+ key: ptr_uint
1499
+ id: ptr_uint
1500
+ name: cstr
1501
+
1502
+ struct b3RecQueryHit:
1503
+ shape: b3ShapeId
1504
+ point: b3Vec3
1505
+ normal: b3Vec3
1506
+ fraction: float
1507
+
1508
+ external function b3RecPlayer_GetFrameQueryCount(player: const_ptr[b3RecPlayer]) -> int
1509
+ external function b3RecPlayer_GetFrameQuery(player: const_ptr[b3RecPlayer], index: int) -> b3RecQueryInfo
1510
+ external function b3RecPlayer_GetFrameQueryHit(player: const_ptr[b3RecPlayer], queryIndex: int, hitIndex: int) -> b3RecQueryHit
1511
+ external function b3CreateBody(worldId: b3WorldId, def: const_ptr[b3BodyDef]) -> b3BodyId
1512
+ external function b3DestroyBody(bodyId: b3BodyId) -> void
1513
+ external function b3Body_IsValid(id: b3BodyId) -> bool
1514
+ external function b3Body_GetType(bodyId: b3BodyId) -> b3BodyType
1515
+ external function b3Body_SetType(bodyId: b3BodyId, type_: b3BodyType) -> void
1516
+ external function b3Body_SetName(bodyId: b3BodyId, name: cstr) -> void
1517
+ external function b3Body_GetName(bodyId: b3BodyId) -> cstr
1518
+ external function b3Body_SetUserData(bodyId: b3BodyId, userData: ptr[void]) -> void
1519
+ external function b3Body_GetUserData(bodyId: b3BodyId) -> ptr[void]
1520
+ external function b3Body_GetPosition(bodyId: b3BodyId) -> b3Pos
1521
+ external function b3Body_GetRotation(bodyId: b3BodyId) -> b3Quat
1522
+ external function b3Body_GetTransform(bodyId: b3BodyId) -> b3WorldTransform
1523
+ external function b3Body_SetTransform(bodyId: b3BodyId, position: b3Vec3, rotation: b3Quat) -> void
1524
+ external function b3Body_GetLocalPoint(bodyId: b3BodyId, worldPoint: b3Vec3) -> b3Vec3
1525
+ external function b3Body_GetWorldPoint(bodyId: b3BodyId, localPoint: b3Vec3) -> b3Pos
1526
+ external function b3Body_GetLocalVector(bodyId: b3BodyId, worldVector: b3Vec3) -> b3Vec3
1527
+ external function b3Body_GetWorldVector(bodyId: b3BodyId, localVector: b3Vec3) -> b3Vec3
1528
+ external function b3Body_GetLinearVelocity(bodyId: b3BodyId) -> b3Vec3
1529
+ external function b3Body_GetAngularVelocity(bodyId: b3BodyId) -> b3Vec3
1530
+ external function b3Body_SetLinearVelocity(bodyId: b3BodyId, linearVelocity: b3Vec3) -> void
1531
+ external function b3Body_SetAngularVelocity(bodyId: b3BodyId, angularVelocity: b3Vec3) -> void
1532
+ external function b3Body_SetTargetTransform(bodyId: b3BodyId, target: b3Transform, timeStep: float, wake: bool) -> void
1533
+ external function b3Body_GetLocalPointVelocity(bodyId: b3BodyId, localPoint: b3Vec3) -> b3Vec3
1534
+ external function b3Body_GetWorldPointVelocity(bodyId: b3BodyId, worldPoint: b3Vec3) -> b3Vec3
1535
+ external function b3Body_ApplyForce(bodyId: b3BodyId, force: b3Vec3, point: b3Vec3, wake: bool) -> void
1536
+ external function b3Body_ApplyForceToCenter(bodyId: b3BodyId, force: b3Vec3, wake: bool) -> void
1537
+ external function b3Body_ApplyTorque(bodyId: b3BodyId, torque: b3Vec3, wake: bool) -> void
1538
+ external function b3Body_ApplyLinearImpulse(bodyId: b3BodyId, impulse: b3Vec3, point: b3Vec3, wake: bool) -> void
1539
+ external function b3Body_ApplyLinearImpulseToCenter(bodyId: b3BodyId, impulse: b3Vec3, wake: bool) -> void
1540
+ external function b3Body_ApplyAngularImpulse(bodyId: b3BodyId, impulse: b3Vec3, wake: bool) -> void
1541
+ external function b3Body_GetMass(bodyId: b3BodyId) -> float
1542
+ external function b3Body_GetLocalRotationalInertia(bodyId: b3BodyId) -> b3Matrix3
1543
+ external function b3Body_GetInverseMass(bodyId: b3BodyId) -> float
1544
+ external function b3Body_GetWorldInverseRotationalInertia(bodyId: b3BodyId) -> b3Matrix3
1545
+ external function b3Body_GetLocalCenter(bodyId: b3BodyId) -> b3Vec3
1546
+ external function b3Body_GetWorldCenter(bodyId: b3BodyId) -> b3Pos
1547
+ external function b3Body_SetMassData(bodyId: b3BodyId, massData: b3MassData) -> void
1548
+ external function b3Body_GetMassData(bodyId: b3BodyId) -> b3MassData
1549
+ external function b3Body_ApplyMassFromShapes(bodyId: b3BodyId) -> void
1550
+ external function b3Body_SetLinearDamping(bodyId: b3BodyId, linearDamping: float) -> void
1551
+ external function b3Body_GetLinearDamping(bodyId: b3BodyId) -> float
1552
+ external function b3Body_SetAngularDamping(bodyId: b3BodyId, angularDamping: float) -> void
1553
+ external function b3Body_GetAngularDamping(bodyId: b3BodyId) -> float
1554
+ external function b3Body_SetGravityScale(bodyId: b3BodyId, gravityScale: float) -> void
1555
+ external function b3Body_GetGravityScale(bodyId: b3BodyId) -> float
1556
+ external function b3Body_IsAwake(bodyId: b3BodyId) -> bool
1557
+ external function b3Body_SetAwake(bodyId: b3BodyId, awake: bool) -> void
1558
+ external function b3Body_EnableSleep(bodyId: b3BodyId, enableSleep: bool) -> void
1559
+ external function b3Body_IsSleepEnabled(bodyId: b3BodyId) -> bool
1560
+ external function b3Body_SetSleepThreshold(bodyId: b3BodyId, sleepThreshold: float) -> void
1561
+ external function b3Body_GetSleepThreshold(bodyId: b3BodyId) -> float
1562
+ external function b3Body_IsEnabled(bodyId: b3BodyId) -> bool
1563
+ external function b3Body_Disable(bodyId: b3BodyId) -> void
1564
+ external function b3Body_Enable(bodyId: b3BodyId) -> void
1565
+ external function b3Body_SetMotionLocks(bodyId: b3BodyId, locks: b3MotionLocks) -> void
1566
+ external function b3Body_GetMotionLocks(bodyId: b3BodyId) -> b3MotionLocks
1567
+ external function b3Body_SetBullet(bodyId: b3BodyId, flag: bool) -> void
1568
+ external function b3Body_IsBullet(bodyId: b3BodyId) -> bool
1569
+ external function b3Body_AllowFastRotation(bodyId: b3BodyId, flag: bool) -> void
1570
+ external function b3Body_IsFastRotationAllowed(bodyId: b3BodyId) -> bool
1571
+ external function b3Body_EnableContactRecycling(bodyId: b3BodyId, flag: bool) -> void
1572
+ external function b3Body_IsContactRecyclingEnabled(bodyId: b3BodyId) -> bool
1573
+ external function b3Body_EnableHitEvents(bodyId: b3BodyId, flag: bool) -> void
1574
+ external function b3Body_GetWorld(bodyId: b3BodyId) -> b3WorldId
1575
+ external function b3Body_GetShapeCount(bodyId: b3BodyId) -> int
1576
+ external function b3Body_GetShapes(bodyId: b3BodyId, shapeArray: ptr[b3ShapeId], capacity: int) -> int
1577
+ external function b3Body_GetJointCount(bodyId: b3BodyId) -> int
1578
+ external function b3Body_GetJoints(bodyId: b3BodyId, jointArray: ptr[b3JointId], capacity: int) -> int
1579
+ external function b3Body_GetContactCapacity(bodyId: b3BodyId) -> int
1580
+ external function b3Body_GetContactData(bodyId: b3BodyId, contactData: ptr[b3ContactData], capacity: int) -> int
1581
+ external function b3Body_ComputeAABB(bodyId: b3BodyId) -> b3AABB
1582
+ external function b3Body_GetClosestPoint(bodyId: b3BodyId, result: ptr[b3Vec3], target: b3Vec3) -> float
1583
+ external function b3Body_CastRay(bodyId: b3BodyId, origin: b3Vec3, translation: b3Vec3, filter: b3QueryFilter, maxFraction: float, bodyTransform: b3Transform) -> b3BodyCastResult
1584
+ external function b3Body_CastShape(bodyId: b3BodyId, origin: b3Vec3, proxy: const_ptr[b3ShapeProxy], translation: b3Vec3, filter: b3QueryFilter, maxFraction: float, canEncroach: bool, bodyTransform: b3Transform) -> b3BodyCastResult
1585
+ external function b3Body_OverlapShape(bodyId: b3BodyId, origin: b3Vec3, proxy: const_ptr[b3ShapeProxy], filter: b3QueryFilter, bodyTransform: b3Transform) -> bool
1586
+ external function b3Body_CollideMover(bodyId: b3BodyId, bodyPlanes: ptr[b3BodyPlaneResult], planeCapacity: int, origin: b3Vec3, mover: const_ptr[b3Capsule], filter: b3QueryFilter, bodyTransform: b3Transform) -> int
1587
+ external function b3CreateSphereShape(bodyId: b3BodyId, def: const_ptr[b3ShapeDef], sphere: const_ptr[b3Sphere]) -> b3ShapeId
1588
+ external function b3CreateCapsuleShape(bodyId: b3BodyId, def: const_ptr[b3ShapeDef], capsule: const_ptr[b3Capsule]) -> b3ShapeId
1589
+ external function b3CreateHullShape(bodyId: b3BodyId, def: const_ptr[b3ShapeDef], hull: const_ptr[b3HullData]) -> b3ShapeId
1590
+ external function b3CreateTransformedHullShape(bodyId: b3BodyId, def: const_ptr[b3ShapeDef], hull: const_ptr[b3HullData], transform: b3Transform, scale: b3Vec3) -> b3ShapeId
1591
+ external function b3CreateMeshShape(bodyId: b3BodyId, def: const_ptr[b3ShapeDef], mesh: const_ptr[b3MeshData], scale: b3Vec3) -> b3ShapeId
1592
+ external function b3CreateHeightFieldShape(bodyId: b3BodyId, def: const_ptr[b3ShapeDef], heightField: const_ptr[b3HeightFieldData]) -> b3ShapeId
1593
+ external function b3CreateBakedCompoundShape(bodyId: b3BodyId, def: ptr[b3ShapeDef], compound: const_ptr[b3CompoundData]) -> b3ShapeId
1594
+ external function b3DestroyShape(shapeId: b3ShapeId, updateBodyMass: bool) -> void
1595
+ external function b3Shape_IsValid(id: b3ShapeId) -> bool
1596
+ external function b3Shape_GetType(shapeId: b3ShapeId) -> b3ShapeType
1597
+ external function b3Shape_GetBody(shapeId: b3ShapeId) -> b3BodyId
1598
+ external function b3Shape_GetWorld(shapeId: b3ShapeId) -> b3WorldId
1599
+ external function b3Shape_IsSensor(shapeId: b3ShapeId) -> bool
1600
+ external function b3Shape_SetName(shapeId: b3ShapeId, name: cstr) -> void
1601
+ external function b3Shape_GetName(shapeId: b3ShapeId) -> cstr
1602
+ external function b3Shape_SetUserData(shapeId: b3ShapeId, userData: ptr[void]) -> void
1603
+ external function b3Shape_GetUserData(shapeId: b3ShapeId) -> ptr[void]
1604
+ external function b3Shape_SetDensity(shapeId: b3ShapeId, density: float, updateBodyMass: bool) -> void
1605
+ external function b3Shape_GetDensity(shapeId: b3ShapeId) -> float
1606
+ external function b3Shape_SetFriction(shapeId: b3ShapeId, friction: float) -> void
1607
+ external function b3Shape_GetFriction(shapeId: b3ShapeId) -> float
1608
+ external function b3Shape_SetRestitution(shapeId: b3ShapeId, restitution: float) -> void
1609
+ external function b3Shape_GetRestitution(shapeId: b3ShapeId) -> float
1610
+ external function b3Shape_SetSurfaceMaterial(shapeId: b3ShapeId, surfaceMaterial: b3SurfaceMaterial) -> void
1611
+ external function b3Shape_GetSurfaceMaterial(shapeId: b3ShapeId) -> b3SurfaceMaterial
1612
+ external function b3Shape_GetMeshMaterialCount(shapeId: b3ShapeId) -> int
1613
+ external function b3Shape_SetMeshMaterial(shapeId: b3ShapeId, surfaceMaterial: b3SurfaceMaterial, index: int) -> void
1614
+ external function b3Shape_GetMeshSurfaceMaterial(shapeId: b3ShapeId, index: int) -> b3SurfaceMaterial
1615
+ external function b3Shape_GetFilter(shapeId: b3ShapeId) -> b3Filter
1616
+ external function b3Shape_SetFilter(shapeId: b3ShapeId, filter: b3Filter, invokeContacts: bool) -> void
1617
+ external function b3Shape_EnableSensorEvents(shapeId: b3ShapeId, flag: bool) -> void
1618
+ external function b3Shape_AreSensorEventsEnabled(shapeId: b3ShapeId) -> bool
1619
+ external function b3Shape_EnableContactEvents(shapeId: b3ShapeId, flag: bool) -> void
1620
+ external function b3Shape_AreContactEventsEnabled(shapeId: b3ShapeId) -> bool
1621
+ external function b3Shape_EnablePreSolveEvents(shapeId: b3ShapeId, flag: bool) -> void
1622
+ external function b3Shape_ArePreSolveEventsEnabled(shapeId: b3ShapeId) -> bool
1623
+ external function b3Shape_EnableHitEvents(shapeId: b3ShapeId, flag: bool) -> void
1624
+ external function b3Shape_AreHitEventsEnabled(shapeId: b3ShapeId) -> bool
1625
+ external function b3Shape_RayCast(shapeId: b3ShapeId, origin: b3Vec3, translation: b3Vec3) -> b3WorldCastOutput
1626
+ external function b3Shape_GetSphere(shapeId: b3ShapeId) -> b3Sphere
1627
+ external function b3Shape_GetCapsule(shapeId: b3ShapeId) -> b3Capsule
1628
+ external function b3Shape_GetHull(shapeId: b3ShapeId) -> const_ptr[b3HullData]
1629
+ external function b3Shape_GetMesh(shapeId: b3ShapeId) -> b3Mesh
1630
+ external function b3Shape_GetHeightField(shapeId: b3ShapeId) -> const_ptr[b3HeightFieldData]
1631
+ external function b3Shape_SetSphere(shapeId: b3ShapeId, sphere: const_ptr[b3Sphere]) -> void
1632
+ external function b3Shape_SetCapsule(shapeId: b3ShapeId, capsule: const_ptr[b3Capsule]) -> void
1633
+ external function b3Shape_SetHull(shapeId: b3ShapeId, hull: const_ptr[b3HullData]) -> void
1634
+ external function b3Shape_SetMesh(shapeId: b3ShapeId, meshData: const_ptr[b3MeshData], scale: b3Vec3) -> void
1635
+ external function b3Shape_GetContactCapacity(shapeId: b3ShapeId) -> int
1636
+ external function b3Shape_GetContactData(shapeId: b3ShapeId, contactData: ptr[b3ContactData], capacity: int) -> int
1637
+ external function b3Shape_GetSensorCapacity(shapeId: b3ShapeId) -> int
1638
+ external function b3Shape_GetSensorData(shapeId: b3ShapeId, visitorIds: ptr[b3ShapeId], capacity: int) -> int
1639
+ external function b3Shape_GetAABB(shapeId: b3ShapeId) -> b3AABB
1640
+ external function b3Shape_ComputeMassData(shapeId: b3ShapeId) -> b3MassData
1641
+ external function b3Shape_GetClosestPoint(shapeId: b3ShapeId, target: b3Vec3) -> b3Vec3
1642
+ external function b3Shape_ApplyWind(shapeId: b3ShapeId, wind: b3Vec3, drag: float, lift: float, maxSpeed: float, wake: bool) -> void
1643
+ external function b3DestroyJoint(jointId: b3JointId, wakeAttached: bool) -> void
1644
+ external function b3Joint_IsValid(id: b3JointId) -> bool
1645
+ external function b3Joint_GetType(jointId: b3JointId) -> b3JointType
1646
+ external function b3Joint_GetBodyA(jointId: b3JointId) -> b3BodyId
1647
+ external function b3Joint_GetBodyB(jointId: b3JointId) -> b3BodyId
1648
+ external function b3Joint_GetWorld(jointId: b3JointId) -> b3WorldId
1649
+ external function b3Joint_SetLocalFrameA(jointId: b3JointId, localFrame: b3Transform) -> void
1650
+ external function b3Joint_GetLocalFrameA(jointId: b3JointId) -> b3Transform
1651
+ external function b3Joint_SetLocalFrameB(jointId: b3JointId, localFrame: b3Transform) -> void
1652
+ external function b3Joint_GetLocalFrameB(jointId: b3JointId) -> b3Transform
1653
+ external function b3Joint_SetCollideConnected(jointId: b3JointId, shouldCollide: bool) -> void
1654
+ external function b3Joint_GetCollideConnected(jointId: b3JointId) -> bool
1655
+ external function b3Joint_SetUserData(jointId: b3JointId, userData: ptr[void]) -> void
1656
+ external function b3Joint_GetUserData(jointId: b3JointId) -> ptr[void]
1657
+ external function b3Joint_WakeBodies(jointId: b3JointId) -> void
1658
+ external function b3Joint_GetConstraintForce(jointId: b3JointId) -> b3Vec3
1659
+ external function b3Joint_GetConstraintTorque(jointId: b3JointId) -> b3Vec3
1660
+ external function b3Joint_GetLinearSeparation(jointId: b3JointId) -> float
1661
+ external function b3Joint_GetAngularSeparation(jointId: b3JointId) -> float
1662
+ external function b3Joint_SetConstraintTuning(jointId: b3JointId, hertz: float, dampingRatio: float) -> void
1663
+ external function b3Joint_GetConstraintTuning(jointId: b3JointId, hertz: ptr[float], dampingRatio: ptr[float]) -> void
1664
+ external function b3Joint_SetForceThreshold(jointId: b3JointId, threshold: float) -> void
1665
+ external function b3Joint_GetForceThreshold(jointId: b3JointId) -> float
1666
+ external function b3Joint_SetTorqueThreshold(jointId: b3JointId, threshold: float) -> void
1667
+ external function b3Joint_GetTorqueThreshold(jointId: b3JointId) -> float
1668
+ external function b3CreateParallelJoint(worldId: b3WorldId, def: const_ptr[b3ParallelJointDef]) -> b3JointId
1669
+ external function b3ParallelJoint_SetSpringHertz(jointId: b3JointId, hertz: float) -> void
1670
+ external function b3ParallelJoint_SetSpringDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1671
+ external function b3ParallelJoint_GetSpringHertz(jointId: b3JointId) -> float
1672
+ external function b3ParallelJoint_GetSpringDampingRatio(jointId: b3JointId) -> float
1673
+ external function b3ParallelJoint_SetMaxTorque(jointId: b3JointId, force: float) -> void
1674
+ external function b3ParallelJoint_GetMaxTorque(jointId: b3JointId) -> float
1675
+ external function b3CreateDistanceJoint(worldId: b3WorldId, def: const_ptr[b3DistanceJointDef]) -> b3JointId
1676
+ external function b3DistanceJoint_SetLength(jointId: b3JointId, length: float) -> void
1677
+ external function b3DistanceJoint_GetLength(jointId: b3JointId) -> float
1678
+ external function b3DistanceJoint_EnableSpring(jointId: b3JointId, enableSpring: bool) -> void
1679
+ external function b3DistanceJoint_IsSpringEnabled(jointId: b3JointId) -> bool
1680
+ external function b3DistanceJoint_SetSpringForceRange(jointId: b3JointId, lowerForce: float, upperForce: float) -> void
1681
+ external function b3DistanceJoint_GetSpringForceRange(jointId: b3JointId, lowerForce: ptr[float], upperForce: ptr[float]) -> void
1682
+ external function b3DistanceJoint_SetSpringHertz(jointId: b3JointId, hertz: float) -> void
1683
+ external function b3DistanceJoint_SetSpringDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1684
+ external function b3DistanceJoint_GetSpringHertz(jointId: b3JointId) -> float
1685
+ external function b3DistanceJoint_GetSpringDampingRatio(jointId: b3JointId) -> float
1686
+ external function b3DistanceJoint_EnableLimit(jointId: b3JointId, enableLimit: bool) -> void
1687
+ external function b3DistanceJoint_IsLimitEnabled(jointId: b3JointId) -> bool
1688
+ external function b3DistanceJoint_SetLengthRange(jointId: b3JointId, minLength: float, maxLength: float) -> void
1689
+ external function b3DistanceJoint_GetMinLength(jointId: b3JointId) -> float
1690
+ external function b3DistanceJoint_GetMaxLength(jointId: b3JointId) -> float
1691
+ external function b3DistanceJoint_GetCurrentLength(jointId: b3JointId) -> float
1692
+ external function b3DistanceJoint_EnableMotor(jointId: b3JointId, enableMotor: bool) -> void
1693
+ external function b3DistanceJoint_IsMotorEnabled(jointId: b3JointId) -> bool
1694
+ external function b3DistanceJoint_SetMotorSpeed(jointId: b3JointId, motorSpeed: float) -> void
1695
+ external function b3DistanceJoint_GetMotorSpeed(jointId: b3JointId) -> float
1696
+ external function b3DistanceJoint_SetMaxMotorForce(jointId: b3JointId, force: float) -> void
1697
+ external function b3DistanceJoint_GetMaxMotorForce(jointId: b3JointId) -> float
1698
+ external function b3DistanceJoint_GetMotorForce(jointId: b3JointId) -> float
1699
+ external function b3CreateMotorJoint(worldId: b3WorldId, def: const_ptr[b3MotorJointDef]) -> b3JointId
1700
+ external function b3MotorJoint_SetLinearVelocity(jointId: b3JointId, velocity: b3Vec3) -> void
1701
+ external function b3MotorJoint_GetLinearVelocity(jointId: b3JointId) -> b3Vec3
1702
+ external function b3MotorJoint_SetAngularVelocity(jointId: b3JointId, velocity: b3Vec3) -> void
1703
+ external function b3MotorJoint_GetAngularVelocity(jointId: b3JointId) -> b3Vec3
1704
+ external function b3MotorJoint_SetMaxVelocityForce(jointId: b3JointId, maxForce: float) -> void
1705
+ external function b3MotorJoint_GetMaxVelocityForce(jointId: b3JointId) -> float
1706
+ external function b3MotorJoint_SetMaxVelocityTorque(jointId: b3JointId, maxTorque: float) -> void
1707
+ external function b3MotorJoint_GetMaxVelocityTorque(jointId: b3JointId) -> float
1708
+ external function b3MotorJoint_SetLinearHertz(jointId: b3JointId, hertz: float) -> void
1709
+ external function b3MotorJoint_GetLinearHertz(jointId: b3JointId) -> float
1710
+ external function b3MotorJoint_SetLinearDampingRatio(jointId: b3JointId, damping: float) -> void
1711
+ external function b3MotorJoint_GetLinearDampingRatio(jointId: b3JointId) -> float
1712
+ external function b3MotorJoint_SetAngularHertz(jointId: b3JointId, hertz: float) -> void
1713
+ external function b3MotorJoint_GetAngularHertz(jointId: b3JointId) -> float
1714
+ external function b3MotorJoint_SetAngularDampingRatio(jointId: b3JointId, damping: float) -> void
1715
+ external function b3MotorJoint_GetAngularDampingRatio(jointId: b3JointId) -> float
1716
+ external function b3MotorJoint_SetMaxSpringForce(jointId: b3JointId, maxForce: float) -> void
1717
+ external function b3MotorJoint_GetMaxSpringForce(jointId: b3JointId) -> float
1718
+ external function b3MotorJoint_SetMaxSpringTorque(jointId: b3JointId, maxTorque: float) -> void
1719
+ external function b3MotorJoint_GetMaxSpringTorque(jointId: b3JointId) -> float
1720
+ external function b3CreateFilterJoint(worldId: b3WorldId, def: const_ptr[b3FilterJointDef]) -> b3JointId
1721
+ external function b3CreatePrismaticJoint(worldId: b3WorldId, def: const_ptr[b3PrismaticJointDef]) -> b3JointId
1722
+ external function b3PrismaticJoint_EnableSpring(jointId: b3JointId, enableSpring: bool) -> void
1723
+ external function b3PrismaticJoint_IsSpringEnabled(jointId: b3JointId) -> bool
1724
+ external function b3PrismaticJoint_SetSpringHertz(jointId: b3JointId, hertz: float) -> void
1725
+ external function b3PrismaticJoint_GetSpringHertz(jointId: b3JointId) -> float
1726
+ external function b3PrismaticJoint_SetSpringDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1727
+ external function b3PrismaticJoint_GetSpringDampingRatio(jointId: b3JointId) -> float
1728
+ external function b3PrismaticJoint_SetTargetTranslation(jointId: b3JointId, targetTranslation: float) -> void
1729
+ external function b3PrismaticJoint_GetTargetTranslation(jointId: b3JointId) -> float
1730
+ external function b3PrismaticJoint_EnableLimit(jointId: b3JointId, enableLimit: bool) -> void
1731
+ external function b3PrismaticJoint_IsLimitEnabled(jointId: b3JointId) -> bool
1732
+ external function b3PrismaticJoint_GetLowerLimit(jointId: b3JointId) -> float
1733
+ external function b3PrismaticJoint_GetUpperLimit(jointId: b3JointId) -> float
1734
+ external function b3PrismaticJoint_SetLimits(jointId: b3JointId, lower: float, upper: float) -> void
1735
+ external function b3PrismaticJoint_EnableMotor(jointId: b3JointId, enableMotor: bool) -> void
1736
+ external function b3PrismaticJoint_IsMotorEnabled(jointId: b3JointId) -> bool
1737
+ external function b3PrismaticJoint_SetMotorSpeed(jointId: b3JointId, motorSpeed: float) -> void
1738
+ external function b3PrismaticJoint_GetMotorSpeed(jointId: b3JointId) -> float
1739
+ external function b3PrismaticJoint_SetMaxMotorForce(jointId: b3JointId, force: float) -> void
1740
+ external function b3PrismaticJoint_GetMaxMotorForce(jointId: b3JointId) -> float
1741
+ external function b3PrismaticJoint_GetMotorForce(jointId: b3JointId) -> float
1742
+ external function b3PrismaticJoint_GetTranslation(jointId: b3JointId) -> float
1743
+ external function b3PrismaticJoint_GetSpeed(jointId: b3JointId) -> float
1744
+ external function b3CreateRevoluteJoint(worldId: b3WorldId, def: const_ptr[b3RevoluteJointDef]) -> b3JointId
1745
+ external function b3RevoluteJoint_EnableSpring(jointId: b3JointId, enableSpring: bool) -> void
1746
+ external function b3RevoluteJoint_IsSpringEnabled(jointId: b3JointId) -> bool
1747
+ external function b3RevoluteJoint_SetSpringHertz(jointId: b3JointId, hertz: float) -> void
1748
+ external function b3RevoluteJoint_GetSpringHertz(jointId: b3JointId) -> float
1749
+ external function b3RevoluteJoint_SetSpringDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1750
+ external function b3RevoluteJoint_GetSpringDampingRatio(jointId: b3JointId) -> float
1751
+ external function b3RevoluteJoint_SetTargetAngle(jointId: b3JointId, targetRadians: float) -> void
1752
+ external function b3RevoluteJoint_GetTargetAngle(jointId: b3JointId) -> float
1753
+ external function b3RevoluteJoint_GetAngle(jointId: b3JointId) -> float
1754
+ external function b3RevoluteJoint_EnableLimit(jointId: b3JointId, enableLimit: bool) -> void
1755
+ external function b3RevoluteJoint_IsLimitEnabled(jointId: b3JointId) -> bool
1756
+ external function b3RevoluteJoint_GetLowerLimit(jointId: b3JointId) -> float
1757
+ external function b3RevoluteJoint_GetUpperLimit(jointId: b3JointId) -> float
1758
+ external function b3RevoluteJoint_SetLimits(jointId: b3JointId, lowerLimitRadians: float, upperLimitRadians: float) -> void
1759
+ external function b3RevoluteJoint_EnableMotor(jointId: b3JointId, enableMotor: bool) -> void
1760
+ external function b3RevoluteJoint_IsMotorEnabled(jointId: b3JointId) -> bool
1761
+ external function b3RevoluteJoint_SetMotorSpeed(jointId: b3JointId, motorSpeed: float) -> void
1762
+ external function b3RevoluteJoint_GetMotorSpeed(jointId: b3JointId) -> float
1763
+ external function b3RevoluteJoint_GetMotorTorque(jointId: b3JointId) -> float
1764
+ external function b3RevoluteJoint_SetMaxMotorTorque(jointId: b3JointId, torque: float) -> void
1765
+ external function b3RevoluteJoint_GetMaxMotorTorque(jointId: b3JointId) -> float
1766
+ external function b3CreateSphericalJoint(worldId: b3WorldId, def: const_ptr[b3SphericalJointDef]) -> b3JointId
1767
+ external function b3SphericalJoint_EnableConeLimit(jointId: b3JointId, enableLimit: bool) -> void
1768
+ external function b3SphericalJoint_IsConeLimitEnabled(jointId: b3JointId) -> bool
1769
+ external function b3SphericalJoint_GetConeLimit(jointId: b3JointId) -> float
1770
+ external function b3SphericalJoint_SetConeLimit(jointId: b3JointId, angleRadians: float) -> void
1771
+ external function b3SphericalJoint_GetConeAngle(jointId: b3JointId) -> float
1772
+ external function b3SphericalJoint_EnableTwistLimit(jointId: b3JointId, enableLimit: bool) -> void
1773
+ external function b3SphericalJoint_IsTwistLimitEnabled(jointId: b3JointId) -> bool
1774
+ external function b3SphericalJoint_GetLowerTwistLimit(jointId: b3JointId) -> float
1775
+ external function b3SphericalJoint_GetUpperTwistLimit(jointId: b3JointId) -> float
1776
+ external function b3SphericalJoint_SetTwistLimits(jointId: b3JointId, lowerLimitRadians: float, upperLimitRadians: float) -> void
1777
+ external function b3SphericalJoint_GetTwistAngle(jointId: b3JointId) -> float
1778
+ external function b3SphericalJoint_EnableSpring(jointId: b3JointId, enableSpring: bool) -> void
1779
+ external function b3SphericalJoint_IsSpringEnabled(jointId: b3JointId) -> bool
1780
+ external function b3SphericalJoint_SetSpringHertz(jointId: b3JointId, hertz: float) -> void
1781
+ external function b3SphericalJoint_GetSpringHertz(jointId: b3JointId) -> float
1782
+ external function b3SphericalJoint_SetSpringDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1783
+ external function b3SphericalJoint_GetSpringDampingRatio(jointId: b3JointId) -> float
1784
+ external function b3SphericalJoint_SetTargetRotation(jointId: b3JointId, targetRotation: b3Quat) -> void
1785
+ external function b3SphericalJoint_GetTargetRotation(jointId: b3JointId) -> b3Quat
1786
+ external function b3SphericalJoint_EnableMotor(jointId: b3JointId, enableMotor: bool) -> void
1787
+ external function b3SphericalJoint_IsMotorEnabled(jointId: b3JointId) -> bool
1788
+ external function b3SphericalJoint_SetMotorVelocity(jointId: b3JointId, motorVelocity: b3Vec3) -> void
1789
+ external function b3SphericalJoint_GetMotorVelocity(jointId: b3JointId) -> b3Vec3
1790
+ external function b3SphericalJoint_GetMotorTorque(jointId: b3JointId) -> b3Vec3
1791
+ external function b3SphericalJoint_SetMaxMotorTorque(jointId: b3JointId, torque: float) -> void
1792
+ external function b3SphericalJoint_GetMaxMotorTorque(jointId: b3JointId) -> float
1793
+ external function b3CreateWeldJoint(worldId: b3WorldId, def: const_ptr[b3WeldJointDef]) -> b3JointId
1794
+ external function b3WeldJoint_SetLinearHertz(jointId: b3JointId, hertz: float) -> void
1795
+ external function b3WeldJoint_GetLinearHertz(jointId: b3JointId) -> float
1796
+ external function b3WeldJoint_SetLinearDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1797
+ external function b3WeldJoint_GetLinearDampingRatio(jointId: b3JointId) -> float
1798
+ external function b3WeldJoint_SetAngularHertz(jointId: b3JointId, hertz: float) -> void
1799
+ external function b3WeldJoint_GetAngularHertz(jointId: b3JointId) -> float
1800
+ external function b3WeldJoint_SetAngularDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1801
+ external function b3WeldJoint_GetAngularDampingRatio(jointId: b3JointId) -> float
1802
+ external function b3CreateWheelJoint(worldId: b3WorldId, def: const_ptr[b3WheelJointDef]) -> b3JointId
1803
+ external function b3WheelJoint_EnableSuspension(jointId: b3JointId, flag: bool) -> void
1804
+ external function b3WheelJoint_IsSuspensionEnabled(jointId: b3JointId) -> bool
1805
+ external function b3WheelJoint_SetSuspensionHertz(jointId: b3JointId, hertz: float) -> void
1806
+ external function b3WheelJoint_GetSuspensionHertz(jointId: b3JointId) -> float
1807
+ external function b3WheelJoint_SetSuspensionDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1808
+ external function b3WheelJoint_GetSuspensionDampingRatio(jointId: b3JointId) -> float
1809
+ external function b3WheelJoint_EnableSuspensionLimit(jointId: b3JointId, flag: bool) -> void
1810
+ external function b3WheelJoint_IsSuspensionLimitEnabled(jointId: b3JointId) -> bool
1811
+ external function b3WheelJoint_GetLowerSuspensionLimit(jointId: b3JointId) -> float
1812
+ external function b3WheelJoint_GetUpperSuspensionLimit(jointId: b3JointId) -> float
1813
+ external function b3WheelJoint_SetSuspensionLimits(jointId: b3JointId, lower: float, upper: float) -> void
1814
+ external function b3WheelJoint_EnableSpinMotor(jointId: b3JointId, flag: bool) -> void
1815
+ external function b3WheelJoint_IsSpinMotorEnabled(jointId: b3JointId) -> bool
1816
+ external function b3WheelJoint_SetSpinMotorSpeed(jointId: b3JointId, speed: float) -> void
1817
+ external function b3WheelJoint_GetSpinMotorSpeed(jointId: b3JointId) -> float
1818
+ external function b3WheelJoint_SetMaxSpinTorque(jointId: b3JointId, torque: float) -> void
1819
+ external function b3WheelJoint_GetMaxSpinTorque(jointId: b3JointId) -> float
1820
+ external function b3WheelJoint_GetSpinSpeed(jointId: b3JointId) -> float
1821
+ external function b3WheelJoint_GetSpinTorque(jointId: b3JointId) -> float
1822
+ external function b3WheelJoint_EnableSteering(jointId: b3JointId, flag: bool) -> void
1823
+ external function b3WheelJoint_IsSteeringEnabled(jointId: b3JointId) -> bool
1824
+ external function b3WheelJoint_SetSteeringHertz(jointId: b3JointId, hertz: float) -> void
1825
+ external function b3WheelJoint_GetSteeringHertz(jointId: b3JointId) -> float
1826
+ external function b3WheelJoint_SetSteeringDampingRatio(jointId: b3JointId, dampingRatio: float) -> void
1827
+ external function b3WheelJoint_GetSteeringDampingRatio(jointId: b3JointId) -> float
1828
+ external function b3WheelJoint_SetMaxSteeringTorque(jointId: b3JointId, torque: float) -> void
1829
+ external function b3WheelJoint_GetMaxSteeringTorque(jointId: b3JointId) -> float
1830
+ external function b3WheelJoint_EnableSteeringLimit(jointId: b3JointId, flag: bool) -> void
1831
+ external function b3WheelJoint_IsSteeringLimitEnabled(jointId: b3JointId) -> bool
1832
+ external function b3WheelJoint_GetLowerSteeringLimit(jointId: b3JointId) -> float
1833
+ external function b3WheelJoint_GetUpperSteeringLimit(jointId: b3JointId) -> float
1834
+ external function b3WheelJoint_SetSteeringLimits(jointId: b3JointId, lowerRadians: float, upperRadians: float) -> void
1835
+ external function b3WheelJoint_SetTargetSteeringAngle(jointId: b3JointId, radians: float) -> void
1836
+ external function b3WheelJoint_GetTargetSteeringAngle(jointId: b3JointId) -> float
1837
+ external function b3WheelJoint_GetSteeringAngle(jointId: b3JointId) -> float
1838
+ external function b3WheelJoint_GetSteeringTorque(jointId: b3JointId) -> float
1839
+ external function b3Contact_IsValid(id: b3ContactId) -> bool
1840
+ external function b3Contact_GetData(contactId: b3ContactId) -> b3ContactData
1841
+
1842
+ const B3_ENABLE_VALIDATION: int = 0
1843
+ const B3_NULL_INDEX: int = -1
1844
+ const B3_HASH_INIT: int = 5381
1845
+ const B3_PI: float = 3.14159274
1846
+ const B3_DEG_TO_RAD: float = 0.0174532924
1847
+ const B3_RAD_TO_DEG: float = 57.2957802
1848
+ const B3_MIN_SCALE: float = 0.00999999977
1849
+ const B3_MAX_WORKERS: int = 32
1850
+ const B3_MAX_TASKS: int = 256
1851
+ const B3_GRAPH_COLOR_COUNT: int = 24
1852
+ const B3_CONTACT_MANIFOLD_COUNT_BUCKETS: int = 8
1853
+ const B3_MIN_FRICTION_WEIGHT: float = 1.00000001E-10
1854
+ const B3_MAX_WORLDS: int = 128
1855
+ const B3_CONTACT_RECYCLE_ANGULAR_DISTANCE: float = 0.992403864
1856
+ const B3_AABB_MARGIN_FRACTION: float = 0.125
1857
+ const B3_TIME_TO_SLEEP: float = 0.5
1858
+ const B3_MAX_MANIFOLD_POINTS: int = 4
1859
+ const B3_GYROSCOPIC_ITERATIONS: int = 1
1860
+ const B3_MAX_HULL_VERTICES: int = 128
1861
+ const B3_MAX_HULL_FACES: int = 128
1862
+ const B3_MAX_HULL_EDGES: int = 128
1863
+ const B3_PARALLEL_EDGE_TOL: float = 0.00499999989
1864
+ const B3_SHAPE_POWER: int = 22
1865
+ const B3_RESTITUTION_ITERATIONS: int = 1
1866
+ const B3_DYNAMIC_TREE_VERSION: ulong = 10659368894387653450
1867
+ const B3_HULL_VERSION: ulong = 5353818467820062812
1868
+ const B3_MESH_VERSION: ulong = 12298092536310311671
1869
+ const B3_HEIGHT_FIELD_HOLE: int = 255
1870
+ const B3_HEIGHT_FIELD_VERSION: ulong = 10250727093210466552
1871
+ const B3_MAX_COMPOUND_MESH_MATERIALS: int = 4