@flighthq/physics3d 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 (180) hide show
  1. package/dist/broadphase.d.ts +4 -0
  2. package/dist/broadphase.d.ts.map +1 -0
  3. package/dist/broadphase.js +158 -0
  4. package/dist/broadphase.js.map +1 -0
  5. package/dist/colliderCollision.d.ts +5 -0
  6. package/dist/colliderCollision.d.ts.map +1 -0
  7. package/dist/colliderCollision.js +55 -0
  8. package/dist/colliderCollision.js.map +1 -0
  9. package/dist/colliderTransform.d.ts +5 -0
  10. package/dist/colliderTransform.d.ts.map +1 -0
  11. package/dist/colliderTransform.js +424 -0
  12. package/dist/colliderTransform.js.map +1 -0
  13. package/dist/contactIntake.d.ts +5 -0
  14. package/dist/contactIntake.d.ts.map +1 -0
  15. package/dist/contactIntake.js +237 -0
  16. package/dist/contactIntake.js.map +1 -0
  17. package/dist/contacts.d.ts +4 -0
  18. package/dist/contacts.d.ts.map +1 -0
  19. package/dist/contacts.js +64 -0
  20. package/dist/contacts.js.map +1 -0
  21. package/dist/continuous.d.ts +5 -0
  22. package/dist/continuous.d.ts.map +1 -0
  23. package/dist/continuous.js +829 -0
  24. package/dist/continuous.js.map +1 -0
  25. package/dist/contract.d.ts +28 -0
  26. package/dist/contract.d.ts.map +1 -0
  27. package/dist/contract.js +28 -0
  28. package/dist/contract.js.map +1 -0
  29. package/dist/debugGeometry.d.ts +4 -0
  30. package/dist/debugGeometry.d.ts.map +1 -0
  31. package/dist/debugGeometry.js +333 -0
  32. package/dist/debugGeometry.js.map +1 -0
  33. package/dist/enablePhysics3DGuards.d.ts +4 -0
  34. package/dist/enablePhysics3DGuards.d.ts.map +1 -0
  35. package/dist/enablePhysics3DGuards.js +155 -0
  36. package/dist/enablePhysics3DGuards.js.map +1 -0
  37. package/dist/explainPhysics3DCollision.d.ts +3 -0
  38. package/dist/explainPhysics3DCollision.d.ts.map +1 -0
  39. package/dist/explainPhysics3DCollision.js +30 -0
  40. package/dist/explainPhysics3DCollision.js.map +1 -0
  41. package/dist/explainPhysics3DJoints.d.ts +3 -0
  42. package/dist/explainPhysics3DJoints.d.ts.map +1 -0
  43. package/dist/explainPhysics3DJoints.js +32 -0
  44. package/dist/explainPhysics3DJoints.js.map +1 -0
  45. package/dist/explainPhysics3DStep.d.ts +3 -0
  46. package/dist/explainPhysics3DStep.d.ts.map +1 -0
  47. package/dist/explainPhysics3DStep.js +51 -0
  48. package/dist/explainPhysics3DStep.js.map +1 -0
  49. package/dist/index.d.ts +22 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +22 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/integrate.d.ts +6 -0
  54. package/dist/integrate.d.ts.map +1 -0
  55. package/dist/integrate.js +184 -0
  56. package/dist/integrate.js.map +1 -0
  57. package/dist/islands.d.ts +6 -0
  58. package/dist/islands.d.ts.map +1 -0
  59. package/dist/islands.js +333 -0
  60. package/dist/islands.js.map +1 -0
  61. package/dist/jointBreakage.d.ts +5 -0
  62. package/dist/jointBreakage.d.ts.map +1 -0
  63. package/dist/jointBreakage.js +44 -0
  64. package/dist/jointBreakage.js.map +1 -0
  65. package/dist/jointCollisionSuppression.d.ts +4 -0
  66. package/dist/jointCollisionSuppression.d.ts.map +1 -0
  67. package/dist/jointCollisionSuppression.js +40 -0
  68. package/dist/jointCollisionSuppression.js.map +1 -0
  69. package/dist/jointFactories.d.ts +9 -0
  70. package/dist/jointFactories.d.ts.map +1 -0
  71. package/dist/jointFactories.js +159 -0
  72. package/dist/jointFactories.js.map +1 -0
  73. package/dist/jointMath.d.ts +17 -0
  74. package/dist/jointMath.d.ts.map +1 -0
  75. package/dist/jointMath.js +361 -0
  76. package/dist/jointMath.js.map +1 -0
  77. package/dist/jointReaction.d.ts +8 -0
  78. package/dist/jointReaction.d.ts.map +1 -0
  79. package/dist/jointReaction.js +65 -0
  80. package/dist/jointReaction.js.map +1 -0
  81. package/dist/jointRegistry.d.ts +8 -0
  82. package/dist/jointRegistry.d.ts.map +1 -0
  83. package/dist/jointRegistry.js +144 -0
  84. package/dist/jointRegistry.js.map +1 -0
  85. package/dist/jointRows.d.ts +33 -0
  86. package/dist/jointRows.d.ts.map +1 -0
  87. package/dist/jointRows.js +352 -0
  88. package/dist/jointRows.js.map +1 -0
  89. package/dist/joints.d.ts +16 -0
  90. package/dist/joints.d.ts.map +1 -0
  91. package/dist/joints.js +1060 -0
  92. package/dist/joints.js.map +1 -0
  93. package/dist/massProperties.d.ts +13 -0
  94. package/dist/massProperties.d.ts.map +1 -0
  95. package/dist/massProperties.js +462 -0
  96. package/dist/massProperties.js.map +1 -0
  97. package/dist/material.d.ts +3 -0
  98. package/dist/material.d.ts.map +1 -0
  99. package/dist/material.js +13 -0
  100. package/dist/material.js.map +1 -0
  101. package/dist/nodeSync.d.ts +3 -0
  102. package/dist/nodeSync.d.ts.map +1 -0
  103. package/dist/nodeSync.js +16 -0
  104. package/dist/nodeSync.js.map +1 -0
  105. package/dist/ownership.d.ts +8 -0
  106. package/dist/ownership.d.ts.map +1 -0
  107. package/dist/ownership.js +26 -0
  108. package/dist/ownership.js.map +1 -0
  109. package/dist/physics3DBroadphasePublication.d.ts +5 -0
  110. package/dist/physics3DBroadphasePublication.d.ts.map +1 -0
  111. package/dist/physics3DBroadphasePublication.js +49 -0
  112. package/dist/physics3DBroadphasePublication.js.map +1 -0
  113. package/dist/physics3DSpatialIndexingGuards.d.ts +4 -0
  114. package/dist/physics3DSpatialIndexingGuards.d.ts.map +1 -0
  115. package/dist/physics3DSpatialIndexingGuards.js +11 -0
  116. package/dist/physics3DSpatialIndexingGuards.js.map +1 -0
  117. package/dist/registerBuiltInPhysics3DJointSolvers.d.ts +3 -0
  118. package/dist/registerBuiltInPhysics3DJointSolvers.d.ts.map +1 -0
  119. package/dist/registerBuiltInPhysics3DJointSolvers.js +15 -0
  120. package/dist/registerBuiltInPhysics3DJointSolvers.js.map +1 -0
  121. package/dist/solver.d.ts +8 -0
  122. package/dist/solver.d.ts.map +1 -0
  123. package/dist/solver.js +460 -0
  124. package/dist/solver.js.map +1 -0
  125. package/dist/step.d.ts +5 -0
  126. package/dist/step.d.ts.map +1 -0
  127. package/dist/step.js +302 -0
  128. package/dist/step.js.map +1 -0
  129. package/dist/stepValidation.d.ts +13 -0
  130. package/dist/stepValidation.d.ts.map +1 -0
  131. package/dist/stepValidation.js +284 -0
  132. package/dist/stepValidation.js.map +1 -0
  133. package/dist/symmetricTensor.d.ts +11 -0
  134. package/dist/symmetricTensor.d.ts.map +1 -0
  135. package/dist/symmetricTensor.js +150 -0
  136. package/dist/symmetricTensor.js.map +1 -0
  137. package/dist/world.d.ts +27 -0
  138. package/dist/world.d.ts.map +1 -0
  139. package/dist/world.js +762 -0
  140. package/dist/world.js.map +1 -0
  141. package/dist/worldQueries.d.ts +11 -0
  142. package/dist/worldQueries.d.ts.map +1 -0
  143. package/dist/worldQueries.js +409 -0
  144. package/dist/worldQueries.js.map +1 -0
  145. package/package.json +55 -0
  146. package/src/broadphase.test.ts +265 -0
  147. package/src/colliderCollision.test.ts +57 -0
  148. package/src/colliderTransform.test.ts +221 -0
  149. package/src/contactIntake.test.ts +370 -0
  150. package/src/contacts.test.ts +64 -0
  151. package/src/continuous.test.ts +679 -0
  152. package/src/debugGeometry.test.ts +288 -0
  153. package/src/enablePhysics3DGuards.test.ts +206 -0
  154. package/src/explainPhysics3DCollision.test.ts +78 -0
  155. package/src/explainPhysics3DJoints.test.ts +101 -0
  156. package/src/explainPhysics3DStep.test.ts +142 -0
  157. package/src/integrate.test.ts +279 -0
  158. package/src/islands.test.ts +384 -0
  159. package/src/jointBreakage.test.ts +143 -0
  160. package/src/jointCollisionSuppression.test.ts +94 -0
  161. package/src/jointFactories.test.ts +244 -0
  162. package/src/jointMath.test.ts +646 -0
  163. package/src/jointReaction.test.ts +241 -0
  164. package/src/jointRegistry.test.ts +229 -0
  165. package/src/jointRows.test.ts +548 -0
  166. package/src/joints.test.ts +1066 -0
  167. package/src/massProperties.test.ts +611 -0
  168. package/src/material.test.ts +40 -0
  169. package/src/nodeSync.test.ts +50 -0
  170. package/src/ownership.test.ts +61 -0
  171. package/src/physics3DBroadphasePublication.test.ts +63 -0
  172. package/src/physics3DSpatialIndexingGuards.test.ts +43 -0
  173. package/src/registerBuiltInPhysics3DJointSolvers.test.ts +51 -0
  174. package/src/solver.test.ts +567 -0
  175. package/src/step.test.ts +490 -0
  176. package/src/stepValidation.test.ts +346 -0
  177. package/src/stress.test.ts +526 -0
  178. package/src/symmetricTensor.test.ts +166 -0
  179. package/src/world.test.ts +1127 -0
  180. package/src/worldQueries.test.ts +565 -0
@@ -0,0 +1,11 @@
1
+ export declare const TENSOR_XX = 0;
2
+ export declare const TENSOR_YY = 1;
3
+ export declare const TENSOR_ZZ = 2;
4
+ export declare const TENSOR_XY = 3;
5
+ export declare const TENSOR_XZ = 4;
6
+ export declare const TENSOR_YZ = 5;
7
+ export declare function applySymmetricTensor(tensor: Readonly<ArrayLike<number>>, vX: number, vY: number, vZ: number, out: number[]): void;
8
+ export declare function inverseSymmetricTensor(tensor: Readonly<ArrayLike<number>>, out: number[]): boolean;
9
+ export declare function rotateSymmetricTensor(tensor: Readonly<ArrayLike<number>>, quaternionX: number, quaternionY: number, quaternionZ: number, quaternionW: number, out: number[]): void;
10
+ export declare function translateSymmetricTensor(tensor: Readonly<ArrayLike<number>>, mass: number, dX: number, dY: number, dZ: number, out: number[]): void;
11
+ //# sourceMappingURL=symmetricTensor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symmetricTensor.d.ts","sourceRoot":"","sources":["../src/symmetricTensor.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,SAAS,IAAI,CAAC;AAI3B,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EACnC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EAAE,GACZ,IAAI,CAWN;AAUD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAiClG;AAQD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EACnC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EAAE,GACZ,IAAI,CAmDN;AAUD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EAAE,GACZ,IAAI,CAcN"}
@@ -0,0 +1,150 @@
1
+ // Symmetric 3x3 tensor arithmetic, in the six-component form the solver stores inertia in.
2
+ //
3
+ // Package-internal: these are how the mass and constraint code reads a tensor, not part of the
4
+ // physics3d API. They take and return loose numbers rather than a matrix type because an inertia tensor
5
+ // lives as six flat fields on `RigidBody3D` — `@flighthq/geometry`'s `Matrix3` is an `Entity` wrapping a
6
+ // `Float32Array`, which is both an indirection in a hot loop and a precision step down from what a
7
+ // solver's accumulators need.
8
+ //
9
+ // Every function here writes into a caller-provided `out` array of six numbers, ordered
10
+ // `[xx, yy, zz, xy, xz, yz]`, and is safe when `out` also supplies the input.
11
+ // Component offsets into the six-number form. Named so a caller indexes by meaning rather than by a
12
+ // number whose order it has to remember.
13
+ export const TENSOR_XX = 0;
14
+ export const TENSOR_YY = 1;
15
+ export const TENSOR_ZZ = 2;
16
+ export const TENSOR_XY = 3;
17
+ export const TENSOR_XZ = 4;
18
+ export const TENSOR_YZ = 5;
19
+ // Applies a symmetric tensor to a vector, writing `tensor * v` into `out`. The workhorse: every
20
+ // constraint row multiplies an angular term by an inverse inertia tensor.
21
+ export function applySymmetricTensor(tensor, vX, vY, vZ, out) {
22
+ const xx = tensor[TENSOR_XX];
23
+ const yy = tensor[TENSOR_YY];
24
+ const zz = tensor[TENSOR_ZZ];
25
+ const xy = tensor[TENSOR_XY];
26
+ const xz = tensor[TENSOR_XZ];
27
+ const yz = tensor[TENSOR_YZ];
28
+ out[0] = xx * vX + xy * vY + xz * vZ;
29
+ out[1] = xy * vX + yy * vY + yz * vZ;
30
+ out[2] = xz * vX + yz * vY + zz * vZ;
31
+ }
32
+ // Inverts a symmetric tensor, writing the result into `out`. Returns false and writes a zero tensor
33
+ // when the tensor is singular — which is the ordinary case, not an error: a static body, a
34
+ // fixed-rotation body, and a zero-mass body all carry a singular inertia, and a zero inverse is exactly
35
+ // what makes "infinite inertia" fall out of the same arithmetic as any other body with no branch.
36
+ //
37
+ // The determinant is compared against a scale-relative epsilon rather than an absolute one, because an
38
+ // inertia tensor's magnitude tracks mass times length squared and a fixed epsilon would call a small
39
+ // but perfectly invertible body singular.
40
+ export function inverseSymmetricTensor(tensor, out) {
41
+ const xx = tensor[TENSOR_XX];
42
+ const yy = tensor[TENSOR_YY];
43
+ const zz = tensor[TENSOR_ZZ];
44
+ const xy = tensor[TENSOR_XY];
45
+ const xz = tensor[TENSOR_XZ];
46
+ const yz = tensor[TENSOR_YZ];
47
+ // Cofactors of the symmetric matrix; only six are distinct.
48
+ const cofactorXX = yy * zz - yz * yz;
49
+ const cofactorXY = xz * yz - xy * zz;
50
+ const cofactorXZ = xy * yz - xz * yy;
51
+ const determinant = xx * cofactorXX + xy * cofactorXY + xz * cofactorXZ;
52
+ const scale = Math.abs(xx) + Math.abs(yy) + Math.abs(zz);
53
+ if (!Number.isFinite(determinant) || Math.abs(determinant) <= SINGULAR_EPSILON * scale * scale * scale) {
54
+ out[TENSOR_XX] = 0;
55
+ out[TENSOR_YY] = 0;
56
+ out[TENSOR_ZZ] = 0;
57
+ out[TENSOR_XY] = 0;
58
+ out[TENSOR_XZ] = 0;
59
+ out[TENSOR_YZ] = 0;
60
+ return false;
61
+ }
62
+ const inverseDeterminant = 1 / determinant;
63
+ out[TENSOR_XX] = cofactorXX * inverseDeterminant;
64
+ out[TENSOR_YY] = (xx * zz - xz * xz) * inverseDeterminant;
65
+ out[TENSOR_ZZ] = (xx * yy - xy * xy) * inverseDeterminant;
66
+ out[TENSOR_XY] = cofactorXY * inverseDeterminant;
67
+ out[TENSOR_XZ] = cofactorXZ * inverseDeterminant;
68
+ out[TENSOR_YZ] = (xy * xz - xx * yz) * inverseDeterminant;
69
+ return true;
70
+ }
71
+ // Rotates a symmetric tensor into world space by a unit quaternion, writing `R * tensor * transpose(R)`
72
+ // into `out`. The result is symmetric by construction, so only six components are produced.
73
+ //
74
+ // The rotation matrix is built once and applied as two multiplies rather than composing the similarity
75
+ // transform in closed quaternion form: the closed form is longer, no faster, and far harder to check
76
+ // against a reference implementation.
77
+ export function rotateSymmetricTensor(tensor, quaternionX, quaternionY, quaternionZ, quaternionW, out) {
78
+ const x2 = quaternionX + quaternionX;
79
+ const y2 = quaternionY + quaternionY;
80
+ const z2 = quaternionZ + quaternionZ;
81
+ const xx2 = quaternionX * x2;
82
+ const yy2 = quaternionY * y2;
83
+ const zz2 = quaternionZ * z2;
84
+ const xy2 = quaternionX * y2;
85
+ const xz2 = quaternionX * z2;
86
+ const yz2 = quaternionY * z2;
87
+ const wx2 = quaternionW * x2;
88
+ const wy2 = quaternionW * y2;
89
+ const wz2 = quaternionW * z2;
90
+ // Column-major rotation basis: r0 is the image of the local x axis, and so on.
91
+ const r00 = 1 - yy2 - zz2;
92
+ const r10 = xy2 + wz2;
93
+ const r20 = xz2 - wy2;
94
+ const r01 = xy2 - wz2;
95
+ const r11 = 1 - xx2 - zz2;
96
+ const r21 = yz2 + wx2;
97
+ const r02 = xz2 + wy2;
98
+ const r12 = yz2 - wx2;
99
+ const r22 = 1 - xx2 - yy2;
100
+ const xx = tensor[TENSOR_XX];
101
+ const yy = tensor[TENSOR_YY];
102
+ const zz = tensor[TENSOR_ZZ];
103
+ const xy = tensor[TENSOR_XY];
104
+ const xz = tensor[TENSOR_XZ];
105
+ const yz = tensor[TENSOR_YZ];
106
+ // m = tensor * transpose(R). Since `transpose(R)[k][j]` is `R[j][k]`, each entry pairs a row of the
107
+ // tensor with a ROW of R — pairing it with a column instead silently computes `R * tensor * R`, which
108
+ // agrees with the right answer for every symmetric rotation and disagrees for a quarter turn.
109
+ const m00 = xx * r00 + xy * r01 + xz * r02;
110
+ const m01 = xx * r10 + xy * r11 + xz * r12;
111
+ const m02 = xx * r20 + xy * r21 + xz * r22;
112
+ const m10 = xy * r00 + yy * r01 + yz * r02;
113
+ const m11 = xy * r10 + yy * r11 + yz * r12;
114
+ const m12 = xy * r20 + yy * r21 + yz * r22;
115
+ const m20 = xz * r00 + yz * r01 + zz * r02;
116
+ const m21 = xz * r10 + yz * r11 + zz * r12;
117
+ const m22 = xz * r20 + yz * r21 + zz * r22;
118
+ out[TENSOR_XX] = r00 * m00 + r01 * m10 + r02 * m20;
119
+ out[TENSOR_YY] = r10 * m01 + r11 * m11 + r12 * m21;
120
+ out[TENSOR_ZZ] = r20 * m02 + r21 * m12 + r22 * m22;
121
+ out[TENSOR_XY] = r00 * m01 + r01 * m11 + r02 * m21;
122
+ out[TENSOR_XZ] = r00 * m02 + r01 * m12 + r02 * m22;
123
+ out[TENSOR_YZ] = r10 * m02 + r11 * m12 + r12 * m22;
124
+ }
125
+ // Shifts a symmetric tensor from an axis through the centre of mass to a parallel axis offset by
126
+ // (`dX`,`dY`,`dZ`), writing the result into `out` — the parallel-axis theorem,
127
+ // `I + mass * (dot(d,d) * identity - outer(d,d))`.
128
+ //
129
+ // This is what lets primitives combine without an eigenvalue solve: each contributes its own tensor
130
+ // about its own centre, and every one of them is shifted to the assembly's centre and summed. Note the
131
+ // direction — this moves AWAY from the centre of mass. Passing a negated offset does not move back,
132
+ // because the correction is quadratic in the offset and therefore even.
133
+ export function translateSymmetricTensor(tensor, mass, dX, dY, dZ, out) {
134
+ const xx = tensor[TENSOR_XX];
135
+ const yy = tensor[TENSOR_YY];
136
+ const zz = tensor[TENSOR_ZZ];
137
+ const xy = tensor[TENSOR_XY];
138
+ const xz = tensor[TENSOR_XZ];
139
+ const yz = tensor[TENSOR_YZ];
140
+ out[TENSOR_XX] = xx + mass * (dY * dY + dZ * dZ);
141
+ out[TENSOR_YY] = yy + mass * (dX * dX + dZ * dZ);
142
+ out[TENSOR_ZZ] = zz + mass * (dX * dX + dY * dY);
143
+ out[TENSOR_XY] = xy - mass * dX * dY;
144
+ out[TENSOR_XZ] = xz - mass * dX * dZ;
145
+ out[TENSOR_YZ] = yz - mass * dY * dZ;
146
+ }
147
+ // Relative tolerance for calling a tensor singular. Cubed against the tensor's trace scale in
148
+ // `inverseSymmetricTensor`, since a 3x3 determinant carries three factors of the matrix's magnitude.
149
+ const SINGULAR_EPSILON = 1e-12;
150
+ //# sourceMappingURL=symmetricTensor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symmetricTensor.js","sourceRoot":"","sources":["../src/symmetricTensor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { CollisionColliderShape3D, Physics3DBodyType, Physics3DCollider, Physics3DCollisionFilter, Physics3DMaterial, Physics3DSequentialImpulseConfig, Physics3DSolverConfig, Physics3DWorld, RigidBody3D, SpatialIndexBackend3D } from '@flighthq/types/contract';
2
+ export declare function addPhysics3DBody(world: Physics3DWorld, body: RigidBody3D): number;
3
+ export declare function addPhysics3DCollider(world: Physics3DWorld, body: RigidBody3D, collider: Physics3DCollider): Physics3DCollider;
4
+ export declare function applyPhysics3DForce(body: RigidBody3D, x: number, y: number, z: number): boolean;
5
+ export declare function applyPhysics3DForceAtPoint(body: RigidBody3D, x: number, y: number, z: number, pointX: number, pointY: number, pointZ: number): boolean;
6
+ export declare function applyPhysics3DLinearImpulse(body: RigidBody3D, x: number, y: number, z: number): boolean;
7
+ export declare function applyPhysics3DLinearImpulseAtPoint(body: RigidBody3D, x: number, y: number, z: number, pointX: number, pointY: number, pointZ: number): boolean;
8
+ export declare function applyPhysics3DTorque(body: RigidBody3D, x: number, y: number, z: number): boolean;
9
+ export declare function createPhysics3DCollider(local: Readonly<CollisionColliderShape3D>, material?: Readonly<Physics3DMaterial>, filter?: Readonly<Physics3DCollisionFilter>, sensor?: boolean): Physics3DCollider;
10
+ export declare function createPhysics3DSequentialImpulseConfig(): Physics3DSequentialImpulseConfig;
11
+ export declare function createPhysics3DSolverConfig(): Physics3DSolverConfig;
12
+ export declare function createPhysics3DWorld(index?: SpatialIndexBackend3D): Physics3DWorld;
13
+ export declare function createRigidBody3D(type?: Physics3DBodyType): RigidBody3D;
14
+ export declare function findPhysics3DBody(world: Readonly<Physics3DWorld>, index: number): RigidBody3D | null;
15
+ export declare function hydratePhysics3DWorld(world: Physics3DWorld): boolean;
16
+ export declare function invalidatePhysics3DCollider(world: Physics3DWorld, body: RigidBody3D, collider: Physics3DCollider): boolean;
17
+ export declare function removePhysics3DBody(world: Physics3DWorld, body: RigidBody3D): boolean;
18
+ export declare function removePhysics3DCollider(world: Physics3DWorld, body: RigidBody3D, collider: Physics3DCollider): boolean;
19
+ export declare function setPhysics3DBodyBullet(body: RigidBody3D, bullet: boolean): boolean;
20
+ export declare function setPhysics3DBodyFixedRotation(body: RigidBody3D, fixedRotation: boolean): boolean;
21
+ export declare function setPhysics3DBodySleepEnabled(body: RigidBody3D, sleepEnabled: boolean): boolean;
22
+ export declare function setPhysics3DBodyTransform(body: RigidBody3D, x: number, y: number, z: number, orientationX: number, orientationY: number, orientationZ: number, orientationW: number): boolean;
23
+ export declare function setPhysics3DBodyType(body: RigidBody3D, type: Physics3DBodyType): boolean;
24
+ export declare function wakePhysics3DBody(body: RigidBody3D): void;
25
+ export declare function writeRigidBody3DWorldCenter(body: Readonly<RigidBody3D>, out: number[]): void;
26
+ export declare const Physics3DWorldVersion = 4;
27
+ //# sourceMappingURL=world.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}