@adobe/data-gpu 0.9.87 → 0.9.89

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 (90) hide show
  1. package/dist/core/core-plugin.d.ts +1 -1
  2. package/dist/graphics/animation/animation-plugin.d.ts +2 -2
  3. package/dist/graphics/camera/camera-plugin.d.ts +1 -1
  4. package/dist/graphics/camera/orbit/orbit-data-plugin.d.ts +1 -1
  5. package/dist/graphics/camera/orbit/orbit-plugin.d.ts +1 -1
  6. package/dist/graphics/camera/orbit/orbit-system-plugin.d.ts +1 -1
  7. package/dist/graphics/graphics-plugin.d.ts +1 -1
  8. package/dist/graphics/picking/picking-plugin.d.ts +798 -861
  9. package/dist/graphics/rendering/bone-collider-plugin.d.ts +2647 -275
  10. package/dist/graphics/rendering/bone-collider-plugin.js +4 -4
  11. package/dist/graphics/rendering/bone-collider-plugin.js.map +1 -1
  12. package/dist/graphics/rendering/display-transform-plugin.d.ts +2 -2
  13. package/dist/graphics/rendering/display-transform-plugin.js +2 -2
  14. package/dist/graphics/rendering/display-transform-plugin.js.map +1 -1
  15. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.d.ts +159 -177
  16. package/dist/graphics/rendering/interpolation-plugin.d.ts +2447 -56
  17. package/dist/graphics/rendering/jolt-ragdoll-plugin.d.ts +2634 -262
  18. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.d.ts +8 -8
  19. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.js +1 -1
  20. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.js.map +1 -1
  21. package/dist/graphics/rendering/model-collider-plugin.d.ts +2567 -192
  22. package/dist/graphics/rendering/pbr-core-plugin.d.ts +5 -5
  23. package/dist/graphics/rendering/pbr-core-plugin.js +5 -5
  24. package/dist/graphics/rendering/pbr-core-plugin.js.map +1 -1
  25. package/dist/graphics/rendering/pbr-render/pbr-factor-render-plugin.d.ts +172 -190
  26. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.d.ts +2398 -5
  27. package/dist/graphics/rendering/skinning/skinning-plugin.d.ts +189 -210
  28. package/dist/graphics/rendering/skinning/skinning-plugin.js +1 -1
  29. package/dist/graphics/rendering/skinning/skinning-plugin.js.map +1 -1
  30. package/dist/graphics/scene/model/mesh-plugin.d.ts +20 -50
  31. package/dist/graphics/scene/model/model-loader-plugin.d.ts +156 -174
  32. package/dist/graphics/scene/model/shape/shape-geometry-plugin.d.ts +73 -76
  33. package/dist/graphics/scene/model/world-bounds-plugin.d.ts +156 -174
  34. package/dist/graphics/scene/node/node-data-plugin.d.ts +2 -5
  35. package/dist/graphics/scene/node/node-data-plugin.js +2 -2
  36. package/dist/graphics/scene/node/node-data-plugin.js.map +1 -1
  37. package/dist/graphics/scene/node/node-plugin.d.ts +2 -5
  38. package/dist/graphics/scene/node/transform-plugin.d.ts +2 -5
  39. package/dist/graphics/scene/scene-plugin.d.ts +16 -31
  40. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.d.ts +1 -1
  41. package/dist/physics/physics-clock-plugin.d.ts +1 -1
  42. package/dist/physics/physics-data-plugin.d.ts +2400 -4
  43. package/dist/physics/physics-data-plugin.js +28 -2
  44. package/dist/physics/physics-data-plugin.js.map +1 -1
  45. package/dist/physics/physics-hit.d.ts +18 -0
  46. package/dist/physics/physics-hit.js +3 -0
  47. package/dist/physics/physics-hit.js.map +1 -0
  48. package/dist/physics/physics-query.d.ts +43 -0
  49. package/dist/physics/physics-query.js +3 -0
  50. package/dist/physics/physics-query.js.map +1 -0
  51. package/dist/physics/public.d.ts +2 -0
  52. package/dist/physics/public.js +2 -0
  53. package/dist/physics/public.js.map +1 -1
  54. package/dist/physics/solvers/jolt-solver-plugin.d.ts +2399 -9
  55. package/dist/physics/solvers/jolt-solver-plugin.js +151 -2
  56. package/dist/physics/solvers/jolt-solver-plugin.js.map +1 -1
  57. package/dist/physics/solvers/mutable-hit.d.ts +14 -0
  58. package/dist/physics/solvers/mutable-hit.js +3 -0
  59. package/dist/physics/solvers/mutable-hit.js.map +1 -0
  60. package/dist/physics/solvers/orient-normal-against-ray.d.ts +11 -0
  61. package/dist/physics/solvers/orient-normal-against-ray.js +25 -0
  62. package/dist/physics/solvers/orient-normal-against-ray.js.map +1 -0
  63. package/dist/physics/solvers/orient-normal-against-ray.test.d.ts +1 -0
  64. package/dist/physics/solvers/orient-normal-against-ray.test.js +27 -0
  65. package/dist/physics/solvers/orient-normal-against-ray.test.js.map +1 -0
  66. package/dist/physics/solvers/pick-ray-conformance.test.d.ts +1 -0
  67. package/dist/physics/solvers/pick-ray-conformance.test.js +159 -0
  68. package/dist/physics/solvers/pick-ray-conformance.test.js.map +1 -0
  69. package/dist/physics/solvers/rapier-solver-plugin.d.ts +2399 -9
  70. package/dist/physics/solvers/rapier-solver-plugin.js +112 -3
  71. package/dist/physics/solvers/rapier-solver-plugin.js.map +1 -1
  72. package/package.json +2 -2
  73. package/src/graphics/rendering/bone-collider-plugin.ts +4 -4
  74. package/src/graphics/rendering/display-transform-plugin.ts +2 -2
  75. package/src/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.ts +1 -1
  76. package/src/graphics/rendering/pbr-core-plugin.ts +5 -5
  77. package/src/graphics/rendering/skinning/skinning-plugin.ts +1 -1
  78. package/src/graphics/scene/node/node-data-plugin.ts +2 -2
  79. package/src/physics/README.md +15 -2
  80. package/src/physics/physics-data-plugin.ts +31 -3
  81. package/src/physics/physics-hit.ts +21 -0
  82. package/src/physics/physics-query.ts +42 -0
  83. package/src/physics/public.ts +2 -0
  84. package/src/physics/solvers/jolt-solver-plugin.ts +121 -2
  85. package/src/physics/solvers/mutable-hit.ts +18 -0
  86. package/src/physics/solvers/orient-normal-against-ray.test.ts +31 -0
  87. package/src/physics/solvers/orient-normal-against-ray.ts +18 -0
  88. package/src/physics/solvers/pick-ray-conformance.test.ts +200 -0
  89. package/src/physics/solvers/rapier-solver-plugin.ts +94 -3
  90. package/tsconfig.tsbuildinfo +1 -1
@@ -7,6 +7,8 @@ import { physicsClock } from "../physics-clock-plugin.js";
7
7
  import { physicsData } from "../physics-data-plugin.js";
8
8
  import { jointData } from "../joint/joint-plugin.js";
9
9
  import { BodyType } from "../body/body-type/body-type.js";
10
+ import { orientNormalAgainstRay } from "./orient-normal-against-ray.js";
11
+ import { newHit } from "./mutable-hit.js";
10
12
  /**
11
13
  * A second rigid-body solver behind the same `physicsData` seam — the
12
14
  * battle-tested Rapier engine (dimforge, Rust→WASM). It reads the identical
@@ -40,8 +42,8 @@ const NEW_JOINT = { exclude: ["_rapierJoint"] };
40
42
  export const rapierSolver = Database.Plugin.create({
41
43
  extends: Database.Plugin.combine(physicsData, jointData, physicsClock),
42
44
  components: {
43
- _rapierBody: { ...True.schema, nonPersistent: true }, // tag: this body has been mirrored into the Rapier world
44
- _rapierJoint: { ...True.schema, nonPersistent: true }, // tag: this joint has been mirrored into the Rapier world
45
+ _rapierBody: { ...True.schema, default: undefined, nonPersistent: true }, // tag: this body has been mirrored into the Rapier world
46
+ _rapierJoint: { ...True.schema, default: undefined, nonPersistent: true }, // tag: this joint has been mirrored into the Rapier world
45
47
  },
46
48
  systems: {
47
49
  rapierStep: {
@@ -78,6 +80,7 @@ export const rapierSolver = Database.Plugin.create({
78
80
  desc.setAngvel({ x: wx, y: wy, z: wz });
79
81
  }
80
82
  const body = world.createRigidBody(desc);
83
+ body.userData = id; // reverse lookup for ray-pick: collider → parent body → entity
81
84
  // capsule: Y-aligned, halfHeight = cylinder half (hy), radius = hx.
82
85
  // hull: convex hull of the authored point cloud (read once here).
83
86
  let col;
@@ -109,11 +112,117 @@ export const rapierSolver = Database.Plugin.create({
109
112
  world.createCollider(col, body);
110
113
  bodies.set(id, body);
111
114
  };
115
+ // Solver-agnostic ray-pick over the live Rapier world. Passing the
116
+ // segment vector (b − a) as the ray/shape-cast direction and capping
117
+ // the time-of-impact at 1 makes the returned toi the parametric α ∈
118
+ // [0,1] along the segment directly (matching PhysicsHit's convention).
119
+ const makeQuery = (w) => {
120
+ // Fill `out` with a thin-ray hit. userData was set to the entity id
121
+ // when the body was mirrored. Normal is oriented to oppose the ray.
122
+ const fillRay = (out, entity, alpha, nx, ny, nz, a, dx, dy, dz) => {
123
+ out.entity = entity;
124
+ out.distance = alpha;
125
+ out.point[0] = a[0] + dx * alpha;
126
+ out.point[1] = a[1] + dy * alpha;
127
+ out.point[2] = a[2] + dz * alpha;
128
+ out.normal[0] = nx;
129
+ out.normal[1] = ny;
130
+ out.normal[2] = nz;
131
+ orientNormalAgainstRay(out.normal, dx, dy, dz);
132
+ };
133
+ const nearest = (ray, options) => {
134
+ const a = ray.a, b = ray.b;
135
+ const dx = b[0] - a[0], dy = b[1] - a[1], dz = b[2] - a[2];
136
+ const radius = options?.radius ?? 0;
137
+ const out = newHit();
138
+ if (radius > 0) {
139
+ // sphere of `radius` swept along the segment
140
+ const hit = w.castShape({ x: a[0], y: a[1], z: a[2] }, { x: 0, y: 0, z: 0, w: 1 }, { x: dx, y: dy, z: dz }, new RAPIER.Ball(radius), 0, 1, true);
141
+ if (!hit)
142
+ return null;
143
+ const bod = hit.collider.parent();
144
+ if (!bod)
145
+ return null;
146
+ const alpha = hit.time_of_impact;
147
+ out.entity = bod.userData;
148
+ out.distance = alpha;
149
+ out.normal[0] = hit.normal1.x;
150
+ out.normal[1] = hit.normal1.y;
151
+ out.normal[2] = hit.normal1.z;
152
+ orientNormalAgainstRay(out.normal, dx, dy, dz);
153
+ // pull the swept-sphere centre at impact back onto the collider surface
154
+ out.point[0] = a[0] + dx * alpha - out.normal[0] * radius;
155
+ out.point[1] = a[1] + dy * alpha - out.normal[1] * radius;
156
+ out.point[2] = a[2] + dz * alpha - out.normal[2] * radius;
157
+ return out;
158
+ }
159
+ const hit = w.castRayAndGetNormal(new RAPIER.Ray({ x: a[0], y: a[1], z: a[2] }, { x: dx, y: dy, z: dz }), 1, true);
160
+ if (!hit)
161
+ return null;
162
+ const bod = hit.collider.parent();
163
+ if (!bod)
164
+ return null;
165
+ fillRay(out, bod.userData, hit.timeOfImpact, hit.normal.x, hit.normal.y, hit.normal.z, a, dx, dy, dz);
166
+ return out;
167
+ };
168
+ // Zero-alloc scratch for castRayEach: one reused hit + a grow-only pool
169
+ // of records. intersectionsWithRay reports crossings in broadphase-
170
+ // arbitrary order, so records are collected then index-sorted near→far.
171
+ const scratch = newHit();
172
+ const pool = [];
173
+ const order = [];
174
+ return {
175
+ castRay: nearest,
176
+ castRayEach(ray, visit, options) {
177
+ // The compat binding has no swept-shape all-hits query, so a
178
+ // radius query degrades to the nearest hit (see PhysicsQuery).
179
+ if ((options?.radius ?? 0) > 0) {
180
+ const h = nearest(ray, options);
181
+ if (h)
182
+ visit(h);
183
+ return;
184
+ }
185
+ const a = ray.a, b = ray.b;
186
+ const dx = b[0] - a[0], dy = b[1] - a[1], dz = b[2] - a[2];
187
+ let count = 0;
188
+ w.intersectionsWithRay(new RAPIER.Ray({ x: a[0], y: a[1], z: a[2] }, { x: dx, y: dy, z: dz }), 1, true, (isect) => {
189
+ const bod = isect.collider.parent();
190
+ if (bod) {
191
+ let rec = pool[count];
192
+ if (!rec) {
193
+ rec = { entity: 0, distance: 0, nx: 0, ny: 0, nz: 0 };
194
+ pool[count] = rec;
195
+ }
196
+ rec.entity = bod.userData;
197
+ rec.distance = isect.timeOfImpact;
198
+ rec.nx = isect.normal.x;
199
+ rec.ny = isect.normal.y;
200
+ rec.nz = isect.normal.z;
201
+ count++;
202
+ }
203
+ return true; // keep collecting
204
+ });
205
+ for (let i = 0; i < count; i++)
206
+ order[i] = i;
207
+ order.length = count;
208
+ order.sort((i, j) => pool[i].distance - pool[j].distance);
209
+ for (let k = 0; k < count; k++) {
210
+ const rec = pool[order[k]];
211
+ fillRay(scratch, rec.entity, rec.distance, rec.nx, rec.ny, rec.nz, a, dx, dy, dz);
212
+ if (visit(scratch) === false)
213
+ break;
214
+ }
215
+ },
216
+ };
217
+ };
112
218
  return () => {
113
219
  if (!world) {
114
220
  if (!initStarted) {
115
221
  initStarted = true;
116
- RAPIER.init().then(() => { world = new RAPIER.World({ x: 0, y: -GRAVITY, z: 0 }); });
222
+ RAPIER.init().then(() => {
223
+ world = new RAPIER.World({ x: 0, y: -GRAVITY, z: 0 });
224
+ db.store.resources.physicsQuery = makeQuery(world);
225
+ });
117
226
  }
118
227
  return; // WASM not ready yet
119
228
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rapier-solver-plugin.js","sourceRoot":"","sources":["../../../src/physics/solvers/rapier-solver-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rapier-solver-plugin.js","sourceRoot":"","sources":["../../../src/physics/solvers/rapier-solver-plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/data-gpu",
3
- "version": "0.9.87",
3
+ "version": "0.9.89",
4
4
  "description": "Adobe data WebGPU plugins and types for graphics and compute",
5
5
  "type": "module",
6
6
  "private": false,
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "@dimforge/rapier3d-compat": "^0.19.3",
14
14
  "jolt-physics": "^1.0.0",
15
- "@adobe/data": "0.9.87"
15
+ "@adobe/data": "0.9.89"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@webgpu/types": "^0.1.61",
@@ -53,10 +53,10 @@ interface SkinMesh {
53
53
  export const boneColliders = Database.Plugin.create({
54
54
  extends: Database.Plugin.combine(physicsData, jointData, ragdollTrigger, pbrSkinning, modelLoader, transform),
55
55
  components: {
56
- _boneJoint: { ...Entity.schema, nonPersistent: true }, // the skeleton joint this capsule tracks
57
- _boneOffsetPos: { ...Vec3.schema, nonPersistent: true }, // capsule offset in the bone's bind-local frame
58
- _boneOffsetRot: { ...Quat.schema, nonPersistent: true },
59
- _ragdollBuilt: { ...True.schema, nonPersistent: true }, // tag: this skeleton's bone capsules have been generated
56
+ _boneJoint: { ...Entity.schema, default: undefined, nonPersistent: true }, // the skeleton joint this capsule tracks
57
+ _boneOffsetPos: { ...Vec3.schema, default: undefined, nonPersistent: true }, // capsule offset in the bone's bind-local frame
58
+ _boneOffsetRot: { ...Quat.schema, default: undefined, nonPersistent: true },
59
+ _ragdollBuilt: { ...True.schema, default: undefined, nonPersistent: true }, // tag: this skeleton's bone capsules have been generated
60
60
  },
61
61
  archetypes: {
62
62
  // a kinematic capsule body bound to a skeleton joint (collisionGroup 1 ⇒ the
@@ -20,7 +20,7 @@ import { Vec3, Quat } from "@adobe/data/math";
20
20
  */
21
21
  export const displayTransform = Database.Plugin.create({
22
22
  components: {
23
- _renderPosition: { ...Vec3.schema, nonPersistent: true }, // derived: interpolated pose to render at (else use `position`)
24
- _renderRotation: { ...Quat.schema, nonPersistent: true },
23
+ _renderPosition: { ...Vec3.schema, default: undefined, nonPersistent: true }, // derived: interpolated pose to render at (else use `position`)
24
+ _renderRotation: { ...Quat.schema, default: undefined, nonPersistent: true },
25
25
  },
26
26
  });
@@ -27,7 +27,7 @@ const FACTOR_MATERIAL_COMPONENTS = [
27
27
  export const materialPaletteGpu = Database.Plugin.create({
28
28
  extends: Database.Plugin.combine(Material.plugin, core),
29
29
  components: {
30
- _paletteIndex: { ...U32.schema, nonPersistent: true },
30
+ _paletteIndex: { ...U32.schema, default: undefined, nonPersistent: true },
31
31
  },
32
32
  resources: {
33
33
  _factorPalette: { default: null as GPUBuffer | null, nonPersistent: true },
@@ -15,19 +15,19 @@ export const pbrCore = Database.Plugin.create({
15
15
  * null for static primitives. Drives skinned-pipeline dispatch. */
16
16
  _skinVertexBuffer: { default: null as GPUBuffer | null, nonPersistent: true },
17
17
  _indexBuffer: { default: null as GPUBuffer | null, nonPersistent: true },
18
- _indexCount: { ...U32.schema, nonPersistent: true },
18
+ _indexCount: { ...U32.schema, default: undefined, nonPersistent: true },
19
19
  _indexFormat: { default: "uint16" as GPUIndexFormat, nonPersistent: true },
20
20
  _materialBindGroup: { default: null as GPUBindGroup | null, nonPersistent: true },
21
21
  /** Back-reference from a _PbrPrimitive / _VisibleMaterial to the
22
22
  * baked mesh asset that owns it. */
23
- _mesh: { ...Entity.schema, nonPersistent: true },
24
- _material: { ...Entity.schema, nonPersistent: true },
23
+ _mesh: { ...Entity.schema, default: undefined, nonPersistent: true },
24
+ _material: { ...Entity.schema, default: undefined, nonPersistent: true },
25
25
  /** Node-local-to-model-root matrix baked at load time. The renderer
26
26
  * pre-multiplies it with the per-instance model-root world matrix. */
27
- _nodeLocalMatrix: { ...Mat4x4.schema, nonPersistent: true },
27
+ _nodeLocalMatrix: { ...Mat4x4.schema, default: undefined, nonPersistent: true },
28
28
  /** Skeleton-side back-references the renderer reads when dispatching
29
29
  * the skinned pipeline. Populated by `pbrSkinning`. */
30
- _skeletonModelRef: { ...Entity.schema, nonPersistent: true },
30
+ _skeletonModelRef: { ...Entity.schema, default: undefined, nonPersistent: true },
31
31
  _skeletonJointMatrixBindGroup: { default: null as GPUBindGroup | null, nonPersistent: true },
32
32
  },
33
33
  archetypes: {
@@ -16,7 +16,7 @@ export const pbrSkinning = Database.Plugin.create({
16
16
  extends: Database.Plugin.combine(modelLoader, pbrCore, transform, animation),
17
17
  components: {
18
18
  _skeletonJoints: { default: [] as number[], nonPersistent: true },
19
- _skeletonMesh: { ...Entity.schema, nonPersistent: true },
19
+ _skeletonMesh: { ...Entity.schema, default: undefined, nonPersistent: true },
20
20
  _skeletonInstanceBuffer: { default: null as GPUBuffer | null, nonPersistent: true },
21
21
  _skeletonJointMatrixBuffer: { default: null as GPUBuffer | null, nonPersistent: true },
22
22
  },
@@ -23,8 +23,8 @@ export const nodeData = Database.Plugin.create({
23
23
  rotation: Quat.schema,
24
24
  scale: Vec3.schema,
25
25
  parent: Entity.schema,
26
- _worldMatrix: { ...Mat4x4.schema, nonPersistent: true },
27
- _worldBounds: { ...Aabb.schema, nonPersistent: true },
26
+ _worldMatrix: { ...Mat4x4.schema, default: undefined, nonPersistent: true },
27
+ _worldBounds: { ...Aabb.schema, default: undefined, nonPersistent: true },
28
28
  },
29
29
  archetypes: {
30
30
  Node: ["position", "rotation", "scale", "parent", "visible"],
@@ -65,8 +65,21 @@ lose track. Keep it honest about approximations and limitations.
65
65
  so the skin flops. Runs on any solver. *Per-joint limit tuning is a follow-up.*
66
66
  - [ ] **Collision events + groups/masks + sensors** — contact callbacks drained
67
67
  to ECS; per-body layer masks; overlap-only sensor colliders.
68
- - [ ] **Spatial queries** — raycast / shape-cast / overlap against the broadphase
69
- (picking, line-of-sight, ground checks).
68
+ - [~] **Spatial queries** — a solver-agnostic `physicsQuery` resource +
69
+ `pickRay` / `pickRayEach` actions on the `physicsData` seam: **ray/line picking
70
+ with or without radius** (a thin ray, or a sphere of `radius` swept along the
71
+ segment). `pickRay` returns the nearest collider as a fresh, retainable
72
+ `PhysicsHit`; `pickRayEach` visits *every* collider along the segment, nearest
73
+ first, with early-out, passing a single reused (zero-alloc) hit valid only for
74
+ that call. A `PhysicsHit` is (entity, parametric α, world point, ray-opposing
75
+ normal). Backed by
76
+ each engine's native cast (Rapier `castRayAndGetNormal` / `castShape` /
77
+ `intersectionsWithRay`; Jolt `NarrowPhaseQuery.CastRay` / `CastShape` with
78
+ all-hit collectors) and verified by an abstract conformance suite run against
79
+ both. *Radius all-hits is native on Jolt; the Rapier compat binding has no
80
+ swept-shape all-hits query, so a radius `pickRayEach` degrades to the nearest
81
+ hit there. Still to do: overlap queries (sphere/AABB), general shape-cast vs.
82
+ arbitrary shapes, and a query `filter` (collision-group / entity predicate).*
70
83
  - [ ] **`uint32`-indexed primitives** — flat-shaded collider/render meshes
71
84
  currently emit `uint16` indices (fine for authored ramps/props, not dense
72
85
  terrain).
@@ -2,13 +2,15 @@
2
2
 
3
3
  import { Database } from "@adobe/data/ecs";
4
4
  import { F32 } from "@adobe/data/schema";
5
- import { Vec3, Quat } from "@adobe/data/math";
5
+ import { Vec3, Quat, type Line3 } from "@adobe/data/math";
6
6
  import { BodyType } from "./body/body-type/body-type.js";
7
7
  import { ColliderShape } from "./body/collider-shape/collider-shape.js";
8
8
  import type { ColliderMesh } from "./body/collider-mesh.js";
9
9
  import { Material } from "../material/material.js";
10
10
  import { RIGID_BODY_COMPONENTS } from "./rigid-body-components.js";
11
11
  import { STATIC_COLLIDER_COMPONENTS } from "./static-collider-components.js";
12
+ import type { PhysicsQuery } from "./physics-query.js";
13
+ import type { PhysicsHit } from "./physics-hit.js";
12
14
 
13
15
  /**
14
16
  * The shared, solver-agnostic rigid-body data model — the seam every physics
@@ -39,6 +41,11 @@ import { STATIC_COLLIDER_COMPONENTS } from "./static-collider-components.js";
39
41
  * body the first time it mirrors it, so authors never supply derived state.
40
42
  *
41
43
  * Mass + inertia are derived per solver from shape + material (not stored here).
44
+ *
45
+ * Besides the authored model, this seam declares the pluggable spatial-query
46
+ * contract every solver fulfils: a `physicsQuery` resource (the active solver
47
+ * publishes its engine-backed implementation once its world is live) and a
48
+ * `pickRay` action that delegates to it — so ray/line picking is solver-agnostic.
42
49
  */
43
50
  export const physicsData = Database.Plugin.create({
44
51
  extends: Material.plugin, // brings the `material` reference component
@@ -50,8 +57,8 @@ export const physicsData = Database.Plugin.create({
50
57
  rotation: Quat.schema, // unified with Node.rotation so a body renders directly
51
58
  linearVelocity: Vec3.schema,
52
59
  angularVelocity: Vec3.schema,
53
- _prevPosition: { ...Vec3.schema, nonPersistent: true }, // derived: pose before the last fixed step (render interpolation)
54
- _prevRotation: { ...Quat.schema, nonPersistent: true },
60
+ _prevPosition: { ...Vec3.schema, default: undefined, nonPersistent: true }, // derived: pose before the last fixed step (render interpolation)
61
+ _prevRotation: { ...Quat.schema, default: undefined, nonPersistent: true },
55
62
  // Bodies sharing the same non-zero collisionGroup do not collide with each
56
63
  // other (they still collide with group 0 / the world) — e.g. a ragdoll's
57
64
  // bones. 0 = default (collide with everything). Honored by both solvers
@@ -64,6 +71,13 @@ export const physicsData = Database.Plugin.create({
64
71
  convexPoints: { default: null as Float32Array | null }, // colliderShape "hull": point cloud → convex hull
65
72
  colliderMesh: { default: null as ColliderMesh | null }, // colliderShape "mesh": static triangle soup
66
73
  },
74
+ resources: {
75
+ // The pluggable spatial-query seam: the active solver publishes its
76
+ // engine-backed implementation here once its world is live, so picking
77
+ // is solver-agnostic. Null before then (lazy WASM init) and when no
78
+ // solver is combined in. Runtime object → nonPersistent.
79
+ physicsQuery: { default: null as PhysicsQuery | null, nonPersistent: true },
80
+ },
67
81
  archetypes: {
68
82
  RigidBody: [...RIGID_BODY_COMPONENTS],
69
83
  StaticCollider: [...STATIC_COLLIDER_COMPONENTS],
@@ -72,4 +86,18 @@ export const physicsData = Database.Plugin.create({
72
86
  // A static triangle-mesh collider (terrain / level geometry).
73
87
  MeshCollider: [...STATIC_COLLIDER_COMPONENTS, "colliderMesh"],
74
88
  },
89
+ actions: {
90
+ // Consumer surface for engine-backed picking. An action (not a
91
+ // transaction) because it returns a value; a pure delegate to whatever
92
+ // solver filled `physicsQuery` — `physicsData` itself holds no engine
93
+ // knowledge. Returns null until a solver's world is live.
94
+ pickRay(db, args: { ray: Line3; radius?: number }): PhysicsHit | null {
95
+ return db.resources.physicsQuery?.castRay(args.ray, { radius: args.radius }) ?? null;
96
+ },
97
+ // Visit every collider along the ray, nearest first (see PhysicsQuery.castRayEach).
98
+ // Returns void; no-op until a solver's world is live.
99
+ pickRayEach(db, args: { ray: Line3; visit: (hit: PhysicsHit) => boolean | void; radius?: number }): void {
100
+ db.resources.physicsQuery?.castRayEach(args.ray, args.visit, { radius: args.radius });
101
+ },
102
+ },
75
103
  });
@@ -0,0 +1,21 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+
3
+ import type { Entity } from "@adobe/data/ecs";
4
+ import type { Vec3 } from "@adobe/data/math";
5
+
6
+ /**
7
+ * One physics ray-pick result — the body/collider the ray hit plus the
8
+ * geometry of the hit the engine's broadphase can give that an AABB scan
9
+ * cannot.
10
+ *
11
+ * `distance` uses the same parametric convention as the graphics `PickHit`
12
+ * (α ∈ [0,1] along the `Line3` segment, 0 = near point `a`, 1 = far point
13
+ * `b`), so `PhysicsHit` is a structural superset of `PickHit` and `distance`
14
+ * reads the same in both picking systems. The absolute hit location is `point`.
15
+ */
16
+ export interface PhysicsHit {
17
+ readonly entity: Entity;
18
+ readonly distance: number; // parametric α ∈ [0,1] along the ray segment
19
+ readonly point: Vec3; // world-space hit point = a + (b − a)·distance
20
+ readonly normal: Vec3; // unit surface normal at the hit, oriented to oppose the ray
21
+ }
@@ -0,0 +1,42 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+
3
+ import type { Line3 } from "@adobe/data/math";
4
+ import type { PhysicsHit } from "./physics-hit.js";
5
+
6
+ /**
7
+ * The solver-agnostic spatial-query capability — the pluggable seam for
8
+ * engine-backed picking. Whichever solver is active (`rapierSolver`,
9
+ * `joltSolver`, …) publishes an implementation of this interface into the
10
+ * `physicsQuery` resource once its world is live; consumers reach it through
11
+ * the `pickRay` action (or read the resource directly for advanced use).
12
+ *
13
+ * `castRay` returns the nearest collider along the `Line3` segment, or `null`
14
+ * for a miss. `castRayEach` visits *every* collider along the segment, nearest
15
+ * first. `radius` (omitted / 0 → an infinitely-thin ray; > 0 → a sphere of that
16
+ * radius swept along the segment) covers "pick along a line with or without
17
+ * radius" behind one call. Both reference solvers back these with their native
18
+ * ray / shape cast (Rapier `castRayAndGetNormal` / `castShape` /
19
+ * `intersectionsWithRay`; Jolt `NarrowPhaseQuery.CastRay` / `CastShape` with
20
+ * all-hit collectors).
21
+ */
22
+ export interface PhysicsQuery {
23
+ castRay(ray: Line3, options?: { radius?: number }): PhysicsHit | null;
24
+ /**
25
+ * Visit each collider crossed by the segment, **nearest first**, calling
26
+ * `visit` once per crossing. Return `false` from `visit` to stop early (any
27
+ * other return continues).
28
+ *
29
+ * Zero-allocation: `visit` receives a **single reused hit** that is valid
30
+ * only for the duration of that call — read what you need (or copy fields
31
+ * out); do not retain the object or its `point` / `normal` arrays past the
32
+ * callback. (`castRay` returns a fresh, retainable hit; use it when you need
33
+ * to keep one.)
34
+ *
35
+ * `radius > 0` sweeps a sphere: fully supported on solvers with a native
36
+ * swept-shape all-hits query (Jolt); where the engine binding lacks one
37
+ * (the Rapier compat binding), a radius query degrades to visiting only the
38
+ * nearest hit. A thin ray (`radius` omitted / 0) visits all crossings on
39
+ * every solver.
40
+ */
41
+ castRayEach(ray: Line3, visit: (hit: PhysicsHit) => boolean | void, options?: { radius?: number }): void;
42
+ }
@@ -1,6 +1,8 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
 
3
3
  export * from "./physics-data-plugin.js";
4
+ export * from "./physics-hit.js";
5
+ export * from "./physics-query.js";
4
6
  export * from "./rigid-body-components.js";
5
7
  export * from "./static-collider-components.js";
6
8
  export * from "./collider-primitive-render-archetypes.js";