@aura3d/physics 2.0.0 → 2.0.1

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 (73) hide show
  1. package/package.json +2 -2
  2. package/dist/CharacterController.d.ts +0 -135
  3. package/dist/CharacterController.d.ts.map +0 -1
  4. package/dist/CharacterController.js +0 -609
  5. package/dist/CharacterController.js.map +0 -1
  6. package/dist/ClothFixtures.d.ts +0 -87
  7. package/dist/ClothFixtures.d.ts.map +0 -1
  8. package/dist/ClothFixtures.js +0 -264
  9. package/dist/ClothFixtures.js.map +0 -1
  10. package/dist/Crowd.d.ts +0 -64
  11. package/dist/Crowd.d.ts.map +0 -1
  12. package/dist/Crowd.js +0 -209
  13. package/dist/Crowd.js.map +0 -1
  14. package/dist/FireSmokeFixtures.d.ts +0 -103
  15. package/dist/FireSmokeFixtures.d.ts.map +0 -1
  16. package/dist/FireSmokeFixtures.js +0 -271
  17. package/dist/FireSmokeFixtures.js.map +0 -1
  18. package/dist/FluidFixtures.d.ts +0 -75
  19. package/dist/FluidFixtures.d.ts.map +0 -1
  20. package/dist/FluidFixtures.js +0 -219
  21. package/dist/FluidFixtures.js.map +0 -1
  22. package/dist/FractureFixtures.d.ts +0 -68
  23. package/dist/FractureFixtures.d.ts.map +0 -1
  24. package/dist/FractureFixtures.js +0 -199
  25. package/dist/FractureFixtures.js.map +0 -1
  26. package/dist/NarrowPhase.d.ts +0 -11
  27. package/dist/NarrowPhase.d.ts.map +0 -1
  28. package/dist/NarrowPhase.js +0 -565
  29. package/dist/NarrowPhase.js.map +0 -1
  30. package/dist/Navigation.d.ts +0 -67
  31. package/dist/Navigation.d.ts.map +0 -1
  32. package/dist/Navigation.js +0 -261
  33. package/dist/Navigation.js.map +0 -1
  34. package/dist/PathFollowDriver.d.ts +0 -162
  35. package/dist/PathFollowDriver.d.ts.map +0 -1
  36. package/dist/PathFollowDriver.js +0 -163
  37. package/dist/PathFollowDriver.js.map +0 -1
  38. package/dist/PhysicsSandboxFixtures.d.ts +0 -53
  39. package/dist/PhysicsSandboxFixtures.d.ts.map +0 -1
  40. package/dist/PhysicsSandboxFixtures.js +0 -280
  41. package/dist/PhysicsSandboxFixtures.js.map +0 -1
  42. package/dist/PlatformerFixtures.d.ts +0 -70
  43. package/dist/PlatformerFixtures.d.ts.map +0 -1
  44. package/dist/PlatformerFixtures.js +0 -120
  45. package/dist/PlatformerFixtures.js.map +0 -1
  46. package/dist/RacingLineProfile.d.ts +0 -116
  47. package/dist/RacingLineProfile.d.ts.map +0 -1
  48. package/dist/RacingLineProfile.js +0 -181
  49. package/dist/RacingLineProfile.js.map +0 -1
  50. package/dist/SoftBodyFixtures.d.ts +0 -70
  51. package/dist/SoftBodyFixtures.d.ts.map +0 -1
  52. package/dist/SoftBodyFixtures.js +0 -272
  53. package/dist/SoftBodyFixtures.js.map +0 -1
  54. package/dist/Steering.d.ts +0 -161
  55. package/dist/Steering.d.ts.map +0 -1
  56. package/dist/Steering.js +0 -347
  57. package/dist/Steering.js.map +0 -1
  58. package/dist/VehicleDynamics.d.ts +0 -162
  59. package/dist/VehicleDynamics.d.ts.map +0 -1
  60. package/dist/VehicleDynamics.js +0 -363
  61. package/dist/VehicleDynamics.js.map +0 -1
  62. package/dist/VehicleMotion.d.ts +0 -125
  63. package/dist/VehicleMotion.d.ts.map +0 -1
  64. package/dist/VehicleMotion.js +0 -373
  65. package/dist/VehicleMotion.js.map +0 -1
  66. package/dist/solverless-entry.d.ts +0 -41
  67. package/dist/solverless-entry.d.ts.map +0 -1
  68. package/dist/solverless-entry.js +0 -40
  69. package/dist/solverless-entry.js.map +0 -1
  70. package/dist/world-entry.d.ts +0 -31
  71. package/dist/world-entry.d.ts.map +0 -1
  72. package/dist/world-entry.js +0 -30
  73. package/dist/world-entry.js.map +0 -1
@@ -1,272 +0,0 @@
1
- const sourceFiles = [
2
- "origin/master:src/simulation/softbody/SoftBody.ts",
3
- "origin/master:src/simulation/softbody/SoftBodySolver.ts",
4
- "origin/master:src/simulation/softbody/TetMeshGenerator.ts"
5
- ];
6
- const blockedClaims = [
7
- "production tetrahedral FEM solver parity",
8
- "Neo-Hookean material parity",
9
- "implicit solver convergence parity",
10
- "soft body self-collision",
11
- "runtime tetrahedral remeshing",
12
- "skinned render mesh deformation",
13
- "Unity soft-body asset parity",
14
- "Unreal Chaos soft-body parity"
15
- ];
16
- export function sampleSoftBodyFixture(options = {}) {
17
- const seed = integer(options.seed ?? 0x50fb0d, "seed");
18
- const elapsedSeconds = finiteNonNegative(options.elapsedSeconds ?? 0.36, "elapsedSeconds");
19
- const divisions = integerInRange(options.divisions ?? 2, "divisions", 1, 5);
20
- const gridSize = divisions + 1;
21
- const vertices = [];
22
- const restPositions = new Map();
23
- const positions = new Map();
24
- const attachedIndices = new Set([
25
- vertexIndex(0, divisions, 0, gridSize),
26
- vertexIndex(divisions, divisions, 0, gridSize),
27
- vertexIndex(0, divisions, divisions, gridSize),
28
- vertexIndex(divisions, divisions, divisions, gridSize)
29
- ]);
30
- const tets = [];
31
- const targetOffset = [0.08, 0.02, -0.035];
32
- const groundPlaneY = -0.42;
33
- let maxDisplacement = 0;
34
- let displacementTotal = 0;
35
- let contactVertices = 0;
36
- let resolvedVertices = 0;
37
- let maxPenetrationBeforeResolve = 0;
38
- let attachmentErrorTotal = 0;
39
- let maxAttachmentError = 0;
40
- for (let z = 0; z <= divisions; z += 1) {
41
- for (let y = 0; y <= divisions; y += 1) {
42
- for (let x = 0; x <= divisions; x += 1) {
43
- const index = vertexIndex(x, y, z, gridSize);
44
- const nx = x / divisions - 0.5;
45
- const ny = y / divisions - 0.5;
46
- const nz = z / divisions - 0.5;
47
- const rest = [round4(nx * 0.9), round4(ny * 0.9), round4(nz * 0.9)];
48
- const attached = attachedIndices.has(index);
49
- const verticalFall = attached ? targetOffset[1] : -0.12 - elapsedSeconds * 0.11 * (1 - y / divisions);
50
- const impulse = Math.sin(elapsedSeconds * 3.2 + x * 0.7 + z * 0.45 + hash01(seed, index) * 2.4) * 0.055;
51
- const squash = attached ? 1 : 1 - (0.06 + hash01(seed, index + 17) * 0.035) * (1 - y / divisions);
52
- let position = attached
53
- ? [round4(rest[0] + targetOffset[0]), round4(rest[1] + targetOffset[1]), round4(rest[2] + targetOffset[2])]
54
- : [round4(rest[0] * squash + impulse), round4(rest[1] + verticalFall), round4(rest[2] * squash - impulse * 0.35)];
55
- const penetration = Math.max(0, groundPlaneY - position[1]);
56
- if (penetration > 0) {
57
- contactVertices += 1;
58
- resolvedVertices += 1;
59
- maxPenetrationBeforeResolve = Math.max(maxPenetrationBeforeResolve, penetration);
60
- position = [position[0], round4(groundPlaneY), position[2]];
61
- }
62
- const displacement = round4(distance(rest, position));
63
- maxDisplacement = Math.max(maxDisplacement, displacement);
64
- displacementTotal += displacement;
65
- restPositions.set(index, rest);
66
- positions.set(index, position);
67
- if (attached) {
68
- const target = [rest[0] + targetOffset[0], rest[1] + targetOffset[1], rest[2] + targetOffset[2]];
69
- const error = distance(position, target);
70
- attachmentErrorTotal += error;
71
- maxAttachmentError = Math.max(maxAttachmentError, error);
72
- }
73
- if ((x === 0 || x === divisions) && (y === 0 || y === divisions) && (z === 0 || z === divisions) || (x === Math.floor(divisions / 2) && y === Math.floor(divisions / 2) && z === Math.floor(divisions / 2))) {
74
- vertices.push({ index, grid: [x, y, z], attached, rest, position, displacement });
75
- }
76
- }
77
- }
78
- }
79
- for (let z = 0; z < divisions; z += 1) {
80
- for (let y = 0; y < divisions; y += 1) {
81
- for (let x = 0; x < divisions; x += 1) {
82
- const cornerOrigin = vertexIndex(x, y, z, gridSize);
83
- const cornerX = vertexIndex(x + 1, y, z, gridSize);
84
- const cornerY = vertexIndex(x, y + 1, z, gridSize);
85
- const cornerXY = vertexIndex(x + 1, y + 1, z, gridSize);
86
- const cornerZ = vertexIndex(x, y, z + 1, gridSize);
87
- const cornerXZ = vertexIndex(x + 1, y, z + 1, gridSize);
88
- const cornerYZ = vertexIndex(x, y + 1, z + 1, gridSize);
89
- const cornerXYZ = vertexIndex(x + 1, y + 1, z + 1, gridSize);
90
- tets.push([cornerOrigin, cornerX, cornerY, cornerZ], [cornerX, cornerXY, cornerY, cornerXYZ], [cornerX, cornerZ, cornerXZ, cornerXYZ], [cornerY, cornerZ, cornerYZ, cornerXYZ], [cornerX, cornerY, cornerZ, cornerXYZ]);
91
- }
92
- }
93
- }
94
- const edges = uniqueTetEdges(tets);
95
- const restVolume = sumTetVolumes(tets, restPositions);
96
- const currentVolume = sumTetVolumes(tets, positions);
97
- const restCenterOfMass = centerOfMass(restPositions);
98
- const center = centerOfMass(positions);
99
- const vertexCount = gridSize * gridSize * gridSize;
100
- const averageDisplacement = displacementTotal / vertexCount;
101
- const shapeMatchingError = distance(center, [
102
- restCenterOfMass[0] + targetOffset[0] * 0.18,
103
- restCenterOfMass[1] - 0.065,
104
- restCenterOfMass[2] + targetOffset[2] * 0.18
105
- ]);
106
- const attachmentCount = attachedIndices.size;
107
- return {
108
- id: "external-parity-old-branch-soft-body-fixture",
109
- source: "origin-master-softbody-tet-pbd-adapted",
110
- sourceFiles,
111
- config: {
112
- method: "bounded-pbd-telemetry",
113
- materialModel: "bounded-corotated-reference",
114
- divisions,
115
- damping: 0.99,
116
- solverIterations: 5,
117
- volumeStiffness: 0.5,
118
- shapeMatchingStiffness: 0.2,
119
- distanceStiffness: 0.8,
120
- particleMass: 1
121
- },
122
- mesh: {
123
- vertexCount,
124
- tetrahedronCount: tets.length,
125
- surfaceTriangleEstimate: divisions * divisions * 12,
126
- distanceConstraintCount: edges.size,
127
- attachmentCount,
128
- sampleVertices: vertices
129
- },
130
- deformation: {
131
- centerOfMass: roundVec3(center),
132
- restCenterOfMass: roundVec3(restCenterOfMass),
133
- maxDisplacement: round4(maxDisplacement),
134
- averageDisplacement: round4(averageDisplacement),
135
- volumeRatio: round4(currentVolume / restVolume),
136
- restVolume: round4(restVolume),
137
- currentVolume: round4(currentVolume),
138
- shapeMatchingError: round4(shapeMatchingError)
139
- },
140
- collision: {
141
- groundPlaneY,
142
- contactVertices,
143
- maxPenetrationBeforeResolve: round4(maxPenetrationBeforeResolve),
144
- resolvedVertices,
145
- restitution: 0.05,
146
- friction: 0.62
147
- },
148
- attachments: {
149
- rigidAttachmentCount: attachmentCount,
150
- targetOffset,
151
- maxAttachmentError: round4(maxAttachmentError),
152
- averageAttachmentError: round4(attachmentErrorTotal / attachmentCount)
153
- },
154
- blockedClaims,
155
- hash: hashNumbers([
156
- seed,
157
- elapsedSeconds,
158
- divisions,
159
- vertexCount,
160
- tets.length,
161
- edges.size,
162
- restVolume,
163
- currentVolume,
164
- maxDisplacement,
165
- averageDisplacement,
166
- contactVertices,
167
- maxPenetrationBeforeResolve,
168
- shapeMatchingError
169
- ]),
170
- claimBoundary: "Deterministic bounded soft-body telemetry adapted from old tetrahedral PBD/FEM soft-body concepts. It proves tet-mesh counts, distance constraints, volume/shape metrics, ground contact response, and rigid attachment telemetry; it does not claim a production FEM solver, Neo-Hookean material parity, self-collision, render-mesh deformation, Unity soft-body asset parity, or Unreal Chaos soft-body parity."
171
- };
172
- }
173
- function vertexIndex(x, y, z, gridSize) {
174
- return z * gridSize * gridSize + y * gridSize + x;
175
- }
176
- function uniqueTetEdges(tets) {
177
- const edges = new Set();
178
- for (const tet of tets) {
179
- const pairs = [
180
- [tet[0], tet[1]],
181
- [tet[0], tet[2]],
182
- [tet[0], tet[3]],
183
- [tet[1], tet[2]],
184
- [tet[1], tet[3]],
185
- [tet[2], tet[3]]
186
- ];
187
- for (const [a, b] of pairs) {
188
- edges.add(a < b ? `${a}:${b}` : `${b}:${a}`);
189
- }
190
- }
191
- return edges;
192
- }
193
- function sumTetVolumes(tets, positions) {
194
- let total = 0;
195
- for (const tet of tets) {
196
- const a = positions.get(tet[0]);
197
- const b = positions.get(tet[1]);
198
- const c = positions.get(tet[2]);
199
- const d = positions.get(tet[3]);
200
- if (!a || !b || !c || !d)
201
- continue;
202
- total += tetVolume(a, b, c, d);
203
- }
204
- return total;
205
- }
206
- function tetVolume(a, b, c, d) {
207
- const ab = [b[0] - a[0], b[1] - a[1], b[2] - a[2]];
208
- const ac = [c[0] - a[0], c[1] - a[1], c[2] - a[2]];
209
- const ad = [d[0] - a[0], d[1] - a[1], d[2] - a[2]];
210
- const cross = [
211
- ac[1] * ad[2] - ac[2] * ad[1],
212
- ac[2] * ad[0] - ac[0] * ad[2],
213
- ac[0] * ad[1] - ac[1] * ad[0]
214
- ];
215
- return Math.abs(ab[0] * cross[0] + ab[1] * cross[1] + ab[2] * cross[2]) / 6;
216
- }
217
- function centerOfMass(positions) {
218
- let x = 0;
219
- let y = 0;
220
- let z = 0;
221
- for (const position of positions.values()) {
222
- x += position[0];
223
- y += position[1];
224
- z += position[2];
225
- }
226
- const count = Math.max(1, positions.size);
227
- return [x / count, y / count, z / count];
228
- }
229
- function distance(left, right) {
230
- return Math.hypot(left[0] - right[0], left[1] - right[1], left[2] - right[2]);
231
- }
232
- function roundVec3(value) {
233
- return [round4(value[0]), round4(value[1]), round4(value[2])];
234
- }
235
- function hash01(seed, salt) {
236
- let value = Math.imul(seed + salt * 1013904223, 1664525) + 1013904223;
237
- value = Math.imul(value ^ (value >>> 13), 1274126177);
238
- return ((value ^ (value >>> 16)) >>> 0) / 4294967296;
239
- }
240
- function hashNumbers(values) {
241
- let hash = 0x811c9dc5;
242
- for (const value of values) {
243
- const scaled = Math.round(value * 10_000);
244
- hash ^= scaled & 0xff;
245
- hash = Math.imul(hash, 0x01000193) >>> 0;
246
- hash ^= (scaled >>> 8) & 0xff;
247
- hash = Math.imul(hash, 0x01000193) >>> 0;
248
- hash ^= (scaled >>> 16) & 0xff;
249
- hash = Math.imul(hash, 0x01000193) >>> 0;
250
- }
251
- return hash.toString(16).padStart(8, "0");
252
- }
253
- function round4(value) {
254
- return Number(value.toFixed(4));
255
- }
256
- function finiteNonNegative(value, label) {
257
- if (!Number.isFinite(value) || value < 0)
258
- throw new RangeError(`Soft-body fixture ${label} must be finite and non-negative.`);
259
- return value;
260
- }
261
- function integer(value, label) {
262
- if (!Number.isInteger(value))
263
- throw new RangeError(`Soft-body fixture ${label} must be an integer.`);
264
- return value;
265
- }
266
- function integerInRange(value, label, min, max) {
267
- const parsed = integer(value, label);
268
- if (parsed < min || parsed > max)
269
- throw new RangeError(`Soft-body fixture ${label} must be in the [${min}, ${max}] range.`);
270
- return parsed;
271
- }
272
- //# sourceMappingURL=SoftBodyFixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SoftBodyFixtures.js","sourceRoot":"","sources":["../../../../packages/physics/src/SoftBodyFixtures.ts"],"names":[],"mappings":"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"}
@@ -1,161 +0,0 @@
1
- export type SteeringPoint = readonly [number, number];
2
- export type SteeringVector = readonly [number, number];
3
- export interface SteeringForce {
4
- readonly force: SteeringVector;
5
- readonly desiredVelocity: SteeringVector;
6
- readonly distance: number;
7
- readonly arrived: boolean;
8
- }
9
- export interface PredictiveSteeringForce extends SteeringForce {
10
- readonly predictedTarget: SteeringPoint;
11
- readonly predictionTime: number;
12
- }
13
- export interface WanderSteeringForce extends SteeringForce {
14
- readonly wanderTarget: SteeringPoint;
15
- readonly seed: number;
16
- }
17
- export interface FlockingNeighbor {
18
- readonly position: SteeringPoint;
19
- readonly velocity: SteeringVector;
20
- }
21
- export interface FlockingSteeringForce extends SteeringForce {
22
- readonly separation: SteeringVector;
23
- readonly alignment: SteeringVector;
24
- readonly cohesion: SteeringVector;
25
- readonly neighborCount: number;
26
- }
27
- export interface SteeringObstacle {
28
- readonly position: SteeringPoint;
29
- readonly radius: number;
30
- readonly id?: string;
31
- }
32
- export interface ObstacleAvoidanceSteeringForce extends SteeringForce {
33
- readonly obstacleDetected: boolean;
34
- readonly obstacleId?: string;
35
- readonly closestDistance: number;
36
- }
37
- export interface SteeringWall {
38
- readonly start: SteeringPoint;
39
- readonly end: SteeringPoint;
40
- readonly normal: SteeringVector;
41
- readonly id?: string;
42
- }
43
- export interface WallAvoidanceSteeringForce extends SteeringForce {
44
- readonly wallDetected: boolean;
45
- readonly wallId?: string;
46
- readonly hitDistance: number;
47
- }
48
- export type SteeringBlendMode = "weighted-sum" | "priority";
49
- export interface SteeringPipelineEntry {
50
- readonly id: string;
51
- readonly force: SteeringVector;
52
- readonly weight?: number;
53
- readonly priority?: number;
54
- readonly enabled?: boolean;
55
- }
56
- export interface SteeringPipelineResult {
57
- readonly force: SteeringVector;
58
- readonly selectedIds: readonly string[];
59
- readonly mode: SteeringBlendMode;
60
- }
61
- export interface SteeringAgentOptions {
62
- readonly position: SteeringPoint;
63
- readonly velocity?: SteeringVector;
64
- readonly maxSpeed?: number;
65
- readonly maxForce?: number;
66
- }
67
- export interface SteeringAgentSnapshot {
68
- readonly position: SteeringPoint;
69
- readonly velocity: SteeringVector;
70
- readonly speed: number;
71
- readonly distanceTraveled: number;
72
- }
73
- export declare function seekSteering(position: SteeringPoint, velocity: SteeringVector, target: SteeringPoint, maxSpeed: number): SteeringForce;
74
- export declare function arriveSteering(options: {
75
- readonly position: SteeringPoint;
76
- readonly velocity: SteeringVector;
77
- readonly target: SteeringPoint;
78
- readonly maxSpeed: number;
79
- readonly slowingRadius: number;
80
- readonly tolerance?: number;
81
- }): SteeringForce;
82
- export declare function fleeSteering(options: {
83
- readonly position: SteeringPoint;
84
- readonly velocity: SteeringVector;
85
- readonly threat: SteeringPoint;
86
- readonly maxSpeed: number;
87
- readonly panicDistance?: number;
88
- }): SteeringForce;
89
- export declare function pursuitSteering(options: {
90
- readonly position: SteeringPoint;
91
- readonly velocity: SteeringVector;
92
- readonly targetPosition: SteeringPoint;
93
- readonly targetVelocity: SteeringVector;
94
- readonly maxSpeed: number;
95
- readonly maxPredictionTime?: number;
96
- }): PredictiveSteeringForce;
97
- export declare function evadeSteering(options: {
98
- readonly position: SteeringPoint;
99
- readonly velocity: SteeringVector;
100
- readonly threatPosition: SteeringPoint;
101
- readonly threatVelocity: SteeringVector;
102
- readonly maxSpeed: number;
103
- readonly maxPredictionTime?: number;
104
- readonly panicDistance?: number;
105
- }): PredictiveSteeringForce;
106
- export declare function wanderSteering(options: {
107
- readonly position: SteeringPoint;
108
- readonly velocity: SteeringVector;
109
- readonly maxSpeed: number;
110
- readonly seed: number;
111
- readonly radius?: number;
112
- readonly distance?: number;
113
- readonly jitter?: number;
114
- }): WanderSteeringForce;
115
- export declare function flockingSteering(options: {
116
- readonly position: SteeringPoint;
117
- readonly velocity: SteeringVector;
118
- readonly neighbors: readonly FlockingNeighbor[];
119
- readonly maxSpeed: number;
120
- readonly separationRadius?: number;
121
- readonly alignmentRadius?: number;
122
- readonly cohesionRadius?: number;
123
- readonly separationWeight?: number;
124
- readonly alignmentWeight?: number;
125
- readonly cohesionWeight?: number;
126
- }): FlockingSteeringForce;
127
- export declare function obstacleAvoidanceSteering(options: {
128
- readonly position: SteeringPoint;
129
- readonly velocity: SteeringVector;
130
- readonly obstacles: readonly SteeringObstacle[];
131
- readonly maxSpeed: number;
132
- readonly detectionDistance?: number;
133
- readonly agentRadius?: number;
134
- readonly avoidanceForce?: number;
135
- }): ObstacleAvoidanceSteeringForce;
136
- export declare function wallAvoidanceSteering(options: {
137
- readonly position: SteeringPoint;
138
- readonly velocity: SteeringVector;
139
- readonly walls: readonly SteeringWall[];
140
- readonly maxSpeed: number;
141
- readonly whiskerLength?: number;
142
- readonly whiskerSpread?: number;
143
- readonly avoidanceForce?: number;
144
- }): WallAvoidanceSteeringForce;
145
- export declare function blendSteeringForces(options: {
146
- readonly entries: readonly SteeringPipelineEntry[];
147
- readonly mode?: SteeringBlendMode;
148
- readonly maxForce?: number;
149
- readonly priorityThreshold?: number;
150
- }): SteeringPipelineResult;
151
- export declare class SteeringAgent {
152
- private position;
153
- private velocity;
154
- private distanceTraveled;
155
- private readonly maxSpeed;
156
- private readonly maxForce;
157
- constructor(options: SteeringAgentOptions);
158
- apply(force: SteeringVector, deltaSeconds: number): SteeringAgentSnapshot;
159
- snapshot(): SteeringAgentSnapshot;
160
- }
161
- //# sourceMappingURL=Steering.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Steering.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/Steering.ts"],"names":[],"mappings":"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"}