@flighthq/physics2d-abi 0.4.0-edge.1908.751021c

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 (39) hide show
  1. package/dist/contract.d.ts +6 -0
  2. package/dist/contract.d.ts.map +1 -0
  3. package/dist/contract.js +6 -0
  4. package/dist/contract.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/physics2DAbi.d.ts +11 -0
  10. package/dist/physics2DAbi.d.ts.map +1 -0
  11. package/dist/physics2DAbi.js +32 -0
  12. package/dist/physics2DAbi.js.map +1 -0
  13. package/dist/physics2DAbiBuffer.d.ts +10 -0
  14. package/dist/physics2DAbiBuffer.d.ts.map +1 -0
  15. package/dist/physics2DAbiBuffer.js +81 -0
  16. package/dist/physics2DAbiBuffer.js.map +1 -0
  17. package/dist/physics2DAbiCommand.d.ts +17 -0
  18. package/dist/physics2DAbiCommand.d.ts.map +1 -0
  19. package/dist/physics2DAbiCommand.js +459 -0
  20. package/dist/physics2DAbiCommand.js.map +1 -0
  21. package/dist/physics2DAbiLayout.d.ts +220 -0
  22. package/dist/physics2DAbiLayout.d.ts.map +1 -0
  23. package/dist/physics2DAbiLayout.js +250 -0
  24. package/dist/physics2DAbiLayout.js.map +1 -0
  25. package/dist/physics2DAbiQuery.d.ts +7 -0
  26. package/dist/physics2DAbiQuery.d.ts.map +1 -0
  27. package/dist/physics2DAbiQuery.js +16 -0
  28. package/dist/physics2DAbiQuery.js.map +1 -0
  29. package/dist/referencePhysics2DAbi.d.ts +3 -0
  30. package/dist/referencePhysics2DAbi.d.ts.map +1 -0
  31. package/dist/referencePhysics2DAbi.js +1089 -0
  32. package/dist/referencePhysics2DAbi.js.map +1 -0
  33. package/package.json +50 -0
  34. package/src/physics2DAbi.test.ts +348 -0
  35. package/src/physics2DAbiBuffer.test.ts +121 -0
  36. package/src/physics2DAbiCommand.test.ts +337 -0
  37. package/src/physics2DAbiLayout.test.ts +293 -0
  38. package/src/physics2DAbiQuery.test.ts +145 -0
  39. package/src/referencePhysics2DAbi.test.ts +271 -0
@@ -0,0 +1,220 @@
1
+ export declare const Physics2DAbiVersion = 1;
2
+ export declare const Physics2DAbiCommandMagic = 1094988368;
3
+ export declare const Physics2DAbiCommandHeaderByteLength = 16;
4
+ export declare const Physics2DAbiCommandRecordHeaderByteLength = 16;
5
+ export declare const Physics2DAbiCommandHeaderOffset: {
6
+ readonly Magic: 0;
7
+ readonly Version: 4;
8
+ readonly ByteLength: 8;
9
+ readonly CommandCount: 12;
10
+ };
11
+ export declare const Physics2DAbiCommandRecordOffset: {
12
+ readonly Kind: 0;
13
+ readonly ByteLength: 4;
14
+ readonly ObjectId: 8;
15
+ readonly RelatedId: 12;
16
+ };
17
+ export declare const Physics2DAbiCapability: {
18
+ readonly ContactHooks: number;
19
+ readonly PersistentWorlds: number;
20
+ readonly Queries: number;
21
+ readonly SelectiveReadback: number;
22
+ };
23
+ export declare const Physics2DAbiCommandKind: {
24
+ readonly SetGravity: 1;
25
+ readonly SetSolverConfig: 2;
26
+ readonly SetBody: 3;
27
+ readonly DestroyBody: 4;
28
+ readonly SetCollider: 5;
29
+ readonly DestroyCollider: 6;
30
+ readonly SetJoint: 7;
31
+ readonly DestroyJoint: 8;
32
+ readonly ApplyForce: 9;
33
+ readonly ApplyForceAtPoint: 10;
34
+ readonly ApplyLinearImpulse: 11;
35
+ readonly ApplyLinearImpulseAtPoint: 12;
36
+ readonly ApplyTorque: 13;
37
+ readonly WakeBody: 14;
38
+ };
39
+ export declare const Physics2DAbiShapeKind: {
40
+ readonly Circle: 1;
41
+ readonly Aabb: 2;
42
+ readonly Obb: 3;
43
+ readonly Capsule: 4;
44
+ readonly Polygon: 5;
45
+ readonly Segment: 6;
46
+ readonly Point: 7;
47
+ };
48
+ export declare const Physics2DAbiJointKind: {
49
+ readonly Distance: 1;
50
+ readonly Revolute: 2;
51
+ readonly Prismatic: 3;
52
+ readonly Weld: 4;
53
+ readonly Wheel: 5;
54
+ readonly Rope: 6;
55
+ readonly Mouse: 7;
56
+ readonly Pulley: 8;
57
+ readonly Gear: 9;
58
+ };
59
+ export declare const Physics2DAbiBodyValueStride = 17;
60
+ export declare const Physics2DAbiContactIdStride = 4;
61
+ export declare const Physics2DAbiContactValueStride = 4;
62
+ export declare const Physics2DAbiContactPointValueStride = 7;
63
+ export declare const Physics2DAbiJointValueStride = 3;
64
+ export declare const Physics2DAbiQueryValueStride = 5;
65
+ export declare const Physics2DAbiMaxContactPoints = 2;
66
+ export declare const Physics2DAbiBodyValue: {
67
+ readonly X: 0;
68
+ readonly Y: 1;
69
+ readonly Angle: 2;
70
+ readonly VelocityX: 3;
71
+ readonly VelocityY: 4;
72
+ readonly AngularVelocity: 5;
73
+ readonly ForceX: 6;
74
+ readonly ForceY: 7;
75
+ readonly Torque: 8;
76
+ readonly Mass: 9;
77
+ readonly Inertia: 10;
78
+ readonly CenterX: 11;
79
+ readonly CenterY: 12;
80
+ readonly LinearDamping: 13;
81
+ readonly AngularDamping: 14;
82
+ readonly GravityScale: 15;
83
+ readonly SleepTimer: 16;
84
+ };
85
+ export declare const Physics2DAbiContactId: {
86
+ readonly BodyA: 0;
87
+ readonly BodyB: 1;
88
+ readonly ColliderA: 2;
89
+ readonly ColliderB: 3;
90
+ };
91
+ export declare const Physics2DAbiContactValue: {
92
+ readonly NormalX: 0;
93
+ readonly NormalY: 1;
94
+ readonly Friction: 2;
95
+ readonly Restitution: 3;
96
+ };
97
+ export declare const Physics2DAbiContactPointValue: {
98
+ readonly X: 0;
99
+ readonly Y: 1;
100
+ readonly Depth: 2;
101
+ readonly RelativeAX: 3;
102
+ readonly RelativeAY: 4;
103
+ readonly RelativeBX: 5;
104
+ readonly RelativeBY: 6;
105
+ };
106
+ export declare const Physics2DAbiJointValue: {
107
+ readonly ForceX: 0;
108
+ readonly ForceY: 1;
109
+ readonly Torque: 2;
110
+ };
111
+ export declare const Physics2DAbiQueryValue: {
112
+ readonly Fraction: 0;
113
+ readonly X: 1;
114
+ readonly Y: 2;
115
+ readonly NormalX: 3;
116
+ readonly NormalY: 4;
117
+ };
118
+ export declare const Physics2DAbiCommandByteLength: {
119
+ readonly SetGravity: 32;
120
+ readonly SetSolverConfig: 96;
121
+ readonly SetBody: 160;
122
+ readonly DestroyBody: 16;
123
+ readonly SetColliderMinimum: 72;
124
+ readonly DestroyCollider: 16;
125
+ readonly SetJoint: 152;
126
+ readonly DestroyJoint: 16;
127
+ readonly BodyAction: 48;
128
+ readonly WakeBody: 16;
129
+ };
130
+ export declare const Physics2DAbiSetBodyPayloadOffset: {
131
+ readonly Flags: 0;
132
+ readonly Reserved: 4;
133
+ readonly Values: 8;
134
+ };
135
+ export declare const Physics2DAbiSetColliderPayloadOffset: {
136
+ readonly Flags: 0;
137
+ readonly CategoryBits: 4;
138
+ readonly MaskBits: 8;
139
+ readonly GroupIndex: 12;
140
+ readonly Density: 16;
141
+ readonly Friction: 24;
142
+ readonly Restitution: 32;
143
+ readonly Shape: 40;
144
+ };
145
+ export declare const Physics2DAbiSetJointPayloadOffset: {
146
+ readonly Kind: 0;
147
+ readonly BodyA: 4;
148
+ readonly BodyB: 8;
149
+ readonly Flags: 12;
150
+ readonly CommonValues: 16;
151
+ readonly KindValues: 64;
152
+ };
153
+ export declare const Physics2DAbiSetSolverConfigPayloadOffset: {
154
+ readonly Flags: 0;
155
+ readonly Reserved0: 4;
156
+ readonly MaxCcdSubsteps: 8;
157
+ readonly MaxCcdRotationSubsteps: 12;
158
+ readonly VelocityIterations: 16;
159
+ readonly PositionIterations: 20;
160
+ readonly Reserved1: 24;
161
+ readonly Reserved2: 28;
162
+ readonly Values: 32;
163
+ };
164
+ export declare const Physics2DAbiSolverConfigValue: {
165
+ readonly SleepLinearThreshold: 0;
166
+ readonly SleepAngularThreshold: 1;
167
+ readonly TimeToSleep: 2;
168
+ readonly PenetrationSlop: 3;
169
+ readonly PositionCorrection: 4;
170
+ readonly RestitutionThreshold: 5;
171
+ };
172
+ export declare const Physics2DAbiJointCommonValue: {
173
+ readonly LocalAnchorAX: 0;
174
+ readonly LocalAnchorAY: 1;
175
+ readonly LocalAnchorBX: 2;
176
+ readonly LocalAnchorBY: 3;
177
+ readonly BreakForce: 4;
178
+ readonly BreakTorque: 5;
179
+ };
180
+ export declare const Physics2DAbiJointKindValueCount = 9;
181
+ export declare const Physics2DAbiShapeHeaderByteLength = 16;
182
+ export declare const Physics2DAbiShapeHeaderOffset: {
183
+ readonly Kind: 0;
184
+ readonly ScalarCount: 4;
185
+ readonly IntegerCount: 8;
186
+ readonly Version: 12;
187
+ readonly Scalars: 16;
188
+ };
189
+ export declare const Physics2DAbiBodyFlag: {
190
+ readonly TypeMask: 3;
191
+ readonly FixedRotation: number;
192
+ readonly Bullet: number;
193
+ readonly Sleeping: number;
194
+ readonly SleepEnabled: number;
195
+ };
196
+ export declare const Physics2DAbiContactFlag: {
197
+ readonly Enabled: number;
198
+ readonly Sensor: number;
199
+ readonly Touching: number;
200
+ };
201
+ export declare const Physics2DAbiJointFlag: {
202
+ readonly CollideConnected: number;
203
+ readonly Broken: number;
204
+ readonly EnableMotor: number;
205
+ readonly EnableLimit: number;
206
+ readonly EnableLimitSpring: number;
207
+ readonly LinearCoordinateA: number;
208
+ readonly LinearCoordinateB: number;
209
+ };
210
+ export declare const Physics2DAbiSolverConfigFlag: {
211
+ readonly AllowSleeping: number;
212
+ readonly ContinuousCollision: number;
213
+ readonly WarmStarting: number;
214
+ };
215
+ export declare const Physics2DAbiBodyType: {
216
+ readonly Dynamic: 0;
217
+ readonly Kinematic: 1;
218
+ readonly Static: 2;
219
+ };
220
+ //# sourceMappingURL=physics2DAbiLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics2DAbiLayout.d.ts","sourceRoot":"","sources":["../src/physics2DAbiLayout.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAIrC,eAAO,MAAM,wBAAwB,aAAa,CAAC;AACnD,eAAO,MAAM,mCAAmC,KAAK,CAAC;AACtD,eAAO,MAAM,yCAAyC,KAAK,CAAC;AAE5D,eAAO,MAAM,+BAA+B;;;;;CAKlC,CAAC;AAEX,eAAO,MAAM,+BAA+B;;;;;CAKlC,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;CAKzB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;CAe1B,CAAC;AAMX,eAAO,MAAM,qBAAqB;;;;;;;;CAQxB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;CAUxB,CAAC;AAEX,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,mCAAmC,IAAI,CAAC;AACrD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAK9C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAK9C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;CAkBxB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;CAK3B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;;;;;;;CAQhC,CAAC;AAGX,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;CAMzB,CAAC;AAIX,eAAO,MAAM,6BAA6B;;;;;;;;;;;CAWhC,CAAC;AAEX,eAAO,MAAM,gCAAgC;;;;CAInC,CAAC;AAEX,eAAO,MAAM,oCAAoC;;;;;;;;;CASvC,CAAC;AAEX,eAAO,MAAM,iCAAiC;;;;;;;CAOpC,CAAC;AAKX,eAAO,MAAM,wCAAwC;;;;;;;;;;CAU3C,CAAC;AAEX,eAAO,MAAM,6BAA6B;;;;;;;CAOhC,CAAC;AAKX,eAAO,MAAM,4BAA4B;;;;;;;CAO/B,CAAC;AAKX,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAEpD,eAAO,MAAM,6BAA6B;;;;;;CAMhC,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAKX,eAAO,MAAM,qBAAqB;;;;;;;;CAQxB,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;CAI/B,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC"}
@@ -0,0 +1,250 @@
1
+ // Wire version for the command stream and backend surface. Increment when an existing numeric
2
+ // discriminant, field position, or meaning changes. Additive commands may retain the version because
3
+ // every record is length-delimited and an older backend reports Unknown/InvalidCommand at that record.
4
+ export const Physics2DAbiVersion = 1;
5
+ // The bytes `P2DA`, read little-endian — the 3D stream's `P3DA` with the dimension digit changed, so a
6
+ // reader handed the wrong stream fails on the magic rather than on a field whose meaning silently moved.
7
+ export const Physics2DAbiCommandMagic = 0x41443250;
8
+ export const Physics2DAbiCommandHeaderByteLength = 16;
9
+ export const Physics2DAbiCommandRecordHeaderByteLength = 16;
10
+ export const Physics2DAbiCommandHeaderOffset = {
11
+ Magic: 0,
12
+ Version: 4,
13
+ ByteLength: 8,
14
+ CommandCount: 12,
15
+ };
16
+ export const Physics2DAbiCommandRecordOffset = {
17
+ Kind: 0,
18
+ ByteLength: 4,
19
+ ObjectId: 8,
20
+ RelatedId: 12,
21
+ };
22
+ export const Physics2DAbiCapability = {
23
+ ContactHooks: 1 << 0,
24
+ PersistentWorlds: 1 << 1,
25
+ Queries: 1 << 2,
26
+ SelectiveReadback: 1 << 3,
27
+ };
28
+ export const Physics2DAbiCommandKind = {
29
+ SetGravity: 1,
30
+ SetSolverConfig: 2,
31
+ SetBody: 3,
32
+ DestroyBody: 4,
33
+ SetCollider: 5,
34
+ DestroyCollider: 6,
35
+ SetJoint: 7,
36
+ DestroyJoint: 8,
37
+ ApplyForce: 9,
38
+ ApplyForceAtPoint: 10,
39
+ ApplyLinearImpulse: 11,
40
+ ApplyLinearImpulseAtPoint: 12,
41
+ ApplyTorque: 13,
42
+ WakeBody: 14,
43
+ };
44
+ // Every kind `CollisionBuiltInShape2D` admits, including the two area-less ones. Physics2D validates
45
+ // and accepts a segment or point collider — they weigh nothing and generate no manifold, but they are
46
+ // legal authored state — so the wire encodes them rather than making the ABI reject a world the
47
+ // standard API would have stepped.
48
+ export const Physics2DAbiShapeKind = {
49
+ Circle: 1,
50
+ Aabb: 2,
51
+ Obb: 3,
52
+ Capsule: 4,
53
+ Polygon: 5,
54
+ Segment: 6,
55
+ Point: 7,
56
+ };
57
+ export const Physics2DAbiJointKind = {
58
+ Distance: 1,
59
+ Revolute: 2,
60
+ Prismatic: 3,
61
+ Weld: 4,
62
+ Wheel: 5,
63
+ Rope: 6,
64
+ Mouse: 7,
65
+ Pulley: 8,
66
+ Gear: 9,
67
+ };
68
+ export const Physics2DAbiBodyValueStride = 17;
69
+ export const Physics2DAbiContactIdStride = 4;
70
+ export const Physics2DAbiContactValueStride = 4;
71
+ export const Physics2DAbiContactPointValueStride = 7;
72
+ export const Physics2DAbiJointValueStride = 3;
73
+ export const Physics2DAbiQueryValueStride = 5;
74
+ // A planar manifold is a segment, so two points is the EXACT bound rather than a comfortable one. The
75
+ // 3D boundary reserves four because a face-face region needs them; halving that number here is a
76
+ // statement about 2D geometry, not a smaller default.
77
+ export const Physics2DAbiMaxContactPoints = 2;
78
+ // Derived quantities the solver rebuilds every step — inverse mass, inverse inertia, lever arms,
79
+ // warm-start impulses — are deliberately absent. The wire carries authored state, so a backend that
80
+ // recomputes them is conforming rather than lossy, and a caller cannot corrupt a solver cache.
81
+ export const Physics2DAbiBodyValue = {
82
+ X: 0,
83
+ Y: 1,
84
+ Angle: 2,
85
+ VelocityX: 3,
86
+ VelocityY: 4,
87
+ AngularVelocity: 5,
88
+ ForceX: 6,
89
+ ForceY: 7,
90
+ Torque: 8,
91
+ Mass: 9,
92
+ Inertia: 10,
93
+ CenterX: 11,
94
+ CenterY: 12,
95
+ LinearDamping: 13,
96
+ AngularDamping: 14,
97
+ GravityScale: 15,
98
+ SleepTimer: 16,
99
+ };
100
+ export const Physics2DAbiContactId = {
101
+ BodyA: 0,
102
+ BodyB: 1,
103
+ ColliderA: 2,
104
+ ColliderB: 3,
105
+ };
106
+ export const Physics2DAbiContactValue = {
107
+ NormalX: 0,
108
+ NormalY: 1,
109
+ Friction: 2,
110
+ Restitution: 3,
111
+ };
112
+ export const Physics2DAbiContactPointValue = {
113
+ X: 0,
114
+ Y: 1,
115
+ Depth: 2,
116
+ RelativeAX: 3,
117
+ RelativeAY: 4,
118
+ RelativeBX: 5,
119
+ RelativeBY: 6,
120
+ };
121
+ // A plane's couple is one scalar, so a 2D reaction is a force plus a torque rather than two vectors.
122
+ export const Physics2DAbiJointValue = {
123
+ ForceX: 0,
124
+ ForceY: 1,
125
+ Torque: 2,
126
+ };
127
+ export const Physics2DAbiQueryValue = {
128
+ Fraction: 0,
129
+ X: 1,
130
+ Y: 2,
131
+ NormalX: 3,
132
+ NormalY: 4,
133
+ };
134
+ // Command byte lengths include the 16-byte record header. Payload offsets are relative to the first
135
+ // payload byte. Variable collider records end after their aligned shape block.
136
+ export const Physics2DAbiCommandByteLength = {
137
+ SetGravity: 32,
138
+ SetSolverConfig: 96,
139
+ SetBody: 160,
140
+ DestroyBody: 16,
141
+ SetColliderMinimum: 72,
142
+ DestroyCollider: 16,
143
+ SetJoint: 152,
144
+ DestroyJoint: 16,
145
+ BodyAction: 48,
146
+ WakeBody: 16,
147
+ };
148
+ export const Physics2DAbiSetBodyPayloadOffset = {
149
+ Flags: 0,
150
+ Reserved: 4,
151
+ Values: 8,
152
+ };
153
+ export const Physics2DAbiSetColliderPayloadOffset = {
154
+ Flags: 0,
155
+ CategoryBits: 4,
156
+ MaskBits: 8,
157
+ GroupIndex: 12,
158
+ Density: 16,
159
+ Friction: 24,
160
+ Restitution: 32,
161
+ Shape: 40,
162
+ };
163
+ export const Physics2DAbiSetJointPayloadOffset = {
164
+ Kind: 0,
165
+ BodyA: 4,
166
+ BodyB: 8,
167
+ Flags: 12,
168
+ CommonValues: 16,
169
+ KindValues: 64,
170
+ };
171
+ // Physics2D has no `substeps`: its CCD bounds are the two impact-sample limits, and the solver takes
172
+ // its iteration counts directly. The reserved word that 3D spends on substeps is held zero here rather
173
+ // than repurposed, so the two configs stay positionally comparable when read side by side.
174
+ export const Physics2DAbiSetSolverConfigPayloadOffset = {
175
+ Flags: 0,
176
+ Reserved0: 4,
177
+ MaxCcdSubsteps: 8,
178
+ MaxCcdRotationSubsteps: 12,
179
+ VelocityIterations: 16,
180
+ PositionIterations: 20,
181
+ Reserved1: 24,
182
+ Reserved2: 28,
183
+ Values: 32,
184
+ };
185
+ export const Physics2DAbiSolverConfigValue = {
186
+ SleepLinearThreshold: 0,
187
+ SleepAngularThreshold: 1,
188
+ TimeToSleep: 2,
189
+ PenetrationSlop: 3,
190
+ PositionCorrection: 4,
191
+ RestitutionThreshold: 5,
192
+ };
193
+ // Common joint values, in wire order. A 2D joint has no orientation frames — a reference ANGLE is one
194
+ // scalar and belongs to the kinds that have one — so the common block is anchors plus the two break
195
+ // thresholds, and reference angles live among the kind values.
196
+ export const Physics2DAbiJointCommonValue = {
197
+ LocalAnchorAX: 0,
198
+ LocalAnchorAY: 1,
199
+ LocalAnchorBX: 2,
200
+ LocalAnchorBY: 3,
201
+ BreakForce: 4,
202
+ BreakTorque: 5,
203
+ };
204
+ // Nine slots because the prismatic joint needs nine and no built-in needs more. Sized to the widest
205
+ // member rather than rounded up: the record is length-delimited, so a future kind that needs a tenth
206
+ // changes the version and every reader learns about it at the header instead of misreading a payload.
207
+ export const Physics2DAbiJointKindValueCount = 9;
208
+ export const Physics2DAbiShapeHeaderByteLength = 16;
209
+ export const Physics2DAbiShapeHeaderOffset = {
210
+ Kind: 0,
211
+ ScalarCount: 4,
212
+ IntegerCount: 8,
213
+ Version: 12,
214
+ Scalars: 16,
215
+ };
216
+ export const Physics2DAbiBodyFlag = {
217
+ TypeMask: 0b11,
218
+ FixedRotation: 1 << 2,
219
+ Bullet: 1 << 3,
220
+ Sleeping: 1 << 4,
221
+ SleepEnabled: 1 << 5,
222
+ };
223
+ export const Physics2DAbiContactFlag = {
224
+ Enabled: 1 << 0,
225
+ Sensor: 1 << 1,
226
+ Touching: 1 << 2,
227
+ };
228
+ // Bits 0-1 are common to every kind; bits 2-4 are read against the record's own joint kind. A gear's
229
+ // two coordinate bits and a revolute's three enable bits occupy the same positions and never collide,
230
+ // because a record carries exactly one kind.
231
+ export const Physics2DAbiJointFlag = {
232
+ CollideConnected: 1 << 0,
233
+ Broken: 1 << 1,
234
+ EnableMotor: 1 << 2,
235
+ EnableLimit: 1 << 3,
236
+ EnableLimitSpring: 1 << 4,
237
+ LinearCoordinateA: 1 << 2,
238
+ LinearCoordinateB: 1 << 3,
239
+ };
240
+ export const Physics2DAbiSolverConfigFlag = {
241
+ AllowSleeping: 1 << 0,
242
+ ContinuousCollision: 1 << 1,
243
+ WarmStarting: 1 << 2,
244
+ };
245
+ export const Physics2DAbiBodyType = {
246
+ Dynamic: 0,
247
+ Kinematic: 1,
248
+ Static: 2,
249
+ };
250
+ //# sourceMappingURL=physics2DAbiLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics2DAbiLayout.js","sourceRoot":"","sources":["../src/physics2DAbiLayout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CollisionBuiltInShape2D, Physics2DAbi, Physics2DAbiQueryBuffer, Physics2DAbiWorldHandle, Physics2DQueryFilter, SpatialAabb2D } from '@flighthq/types/contract';
2
+ export declare function queryPhysics2DAbiPoint(abi: Readonly<Physics2DAbi>, world: Physics2DAbiWorldHandle, x: number, y: number, out: Physics2DAbiQueryBuffer, filter?: Readonly<Physics2DQueryFilter> | null): boolean;
3
+ export declare function queryPhysics2DAbiRay(abi: Readonly<Physics2DAbi>, world: Physics2DAbiWorldHandle, originX: number, originY: number, directionX: number, directionY: number, out: Physics2DAbiQueryBuffer, maxFraction?: number, filter?: Readonly<Physics2DQueryFilter> | null): boolean;
4
+ export declare function queryPhysics2DAbiRayClosest(abi: Readonly<Physics2DAbi>, world: Physics2DAbiWorldHandle, originX: number, originY: number, directionX: number, directionY: number, out: Physics2DAbiQueryBuffer, maxFraction?: number, filter?: Readonly<Physics2DQueryFilter> | null): boolean;
5
+ export declare function queryPhysics2DAbiRegion(abi: Readonly<Physics2DAbi>, world: Physics2DAbiWorldHandle, region: Readonly<SpatialAabb2D>, out: Physics2DAbiQueryBuffer, filter?: Readonly<Physics2DQueryFilter> | null): boolean;
6
+ export declare function queryPhysics2DAbiShapeCast(abi: Readonly<Physics2DAbi>, world: Physics2DAbiWorldHandle, shape: Readonly<CollisionBuiltInShape2D>, dx: number, dy: number, out: Physics2DAbiQueryBuffer, maxFraction?: number, filter?: Readonly<Physics2DQueryFilter> | null): boolean;
7
+ //# sourceMappingURL=physics2DAbiQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics2DAbiQuery.d.ts","sourceRoot":"","sources":["../src/physics2DAbiQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,uBAAuB,EAC9B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,uBAAuB,EAC5B,MAAM,GAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,IAAW,GACnD,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,uBAAuB,EAC5B,WAAW,SAA2B,EACtC,MAAM,GAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,IAAW,GACnD,OAAO,CAET;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,uBAAuB,EAC5B,WAAW,SAA2B,EACtC,MAAM,GAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,IAAW,GACnD,OAAO,CAET;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,uBAAuB,EAC9B,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,GAAG,EAAE,uBAAuB,EAC5B,MAAM,GAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,IAAW,GACnD,OAAO,CAET;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EACxC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,uBAAuB,EAC5B,WAAW,SAAI,EACf,MAAM,GAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,IAAW,GACnD,OAAO,CAET"}
@@ -0,0 +1,16 @@
1
+ export function queryPhysics2DAbiPoint(abi, world, x, y, out, filter = null) {
2
+ return abi.queryPoint(world, x, y, filter, out);
3
+ }
4
+ export function queryPhysics2DAbiRay(abi, world, originX, originY, directionX, directionY, out, maxFraction = Number.POSITIVE_INFINITY, filter = null) {
5
+ return abi.queryRay(world, originX, originY, directionX, directionY, maxFraction, false, filter, out);
6
+ }
7
+ export function queryPhysics2DAbiRayClosest(abi, world, originX, originY, directionX, directionY, out, maxFraction = Number.POSITIVE_INFINITY, filter = null) {
8
+ return abi.queryRay(world, originX, originY, directionX, directionY, maxFraction, true, filter, out);
9
+ }
10
+ export function queryPhysics2DAbiRegion(abi, world, region, out, filter = null) {
11
+ return abi.queryRegion(world, region, filter, out);
12
+ }
13
+ export function queryPhysics2DAbiShapeCast(abi, world, shape, dx, dy, out, maxFraction = 1, filter = null) {
14
+ return abi.queryShapeCast(world, shape, dx, dy, maxFraction, filter, out);
15
+ }
16
+ //# sourceMappingURL=physics2DAbiQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics2DAbiQuery.js","sourceRoot":"","sources":["../src/physics2DAbiQuery.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,sBAAsB,CACpC,GAA2B,EAC3B,KAA8B,EAC9B,CAAS,EACT,CAAS,EACT,GAA4B,EAC5B,SAAgD,IAAI;IAEpD,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,GAA2B,EAC3B,KAA8B,EAC9B,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,GAA4B,EAC5B,WAAW,GAAG,MAAM,CAAC,iBAAiB,EACtC,SAAgD,IAAI;IAEpD,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,GAA2B,EAC3B,KAA8B,EAC9B,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,GAA4B,EAC5B,WAAW,GAAG,MAAM,CAAC,iBAAiB,EACtC,SAAgD,IAAI;IAEpD,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAA2B,EAC3B,KAA8B,EAC9B,MAA+B,EAC/B,GAA4B,EAC5B,SAAgD,IAAI;IAEpD,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,GAA2B,EAC3B,KAA8B,EAC9B,KAAwC,EACxC,EAAU,EACV,EAAU,EACV,GAA4B,EAC5B,WAAW,GAAG,CAAC,EACf,SAAgD,IAAI;IAEpD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Physics2DAbi } from '@flighthq/types/contract';
2
+ export declare function createReferencePhysics2DAbi(): Physics2DAbi;
3
+ //# sourceMappingURL=referencePhysics2DAbi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referencePhysics2DAbi.d.ts","sourceRoot":"","sources":["../src/referencePhysics2DAbi.ts"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EAEV,YAAY,EAqBb,MAAM,0BAA0B,CAAC;AAiClC,wBAAgB,2BAA2B,IAAI,YAAY,CAyF1D"}