tosijs-3d 0.7.0 → 0.7.2

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 (59) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/b3d-ambient.js +1 -1
  3. package/dist/b3d-biped.js +1 -1
  4. package/dist/b3d-clouds.d.ts.map +1 -1
  5. package/dist/b3d-clouds.js +13 -35
  6. package/dist/b3d-clouds.js.map +1 -1
  7. package/dist/b3d-death.d.ts.map +1 -1
  8. package/dist/b3d-death.js +12 -5
  9. package/dist/b3d-death.js.map +1 -1
  10. package/dist/b3d-destroyable.d.ts +12 -0
  11. package/dist/b3d-destroyable.d.ts.map +1 -1
  12. package/dist/b3d-destroyable.js +17 -2
  13. package/dist/b3d-destroyable.js.map +1 -1
  14. package/dist/b3d-exploder.js +1 -1
  15. package/dist/b3d-fog.js +1 -1
  16. package/dist/b3d-launcher.d.ts +14 -0
  17. package/dist/b3d-launcher.d.ts.map +1 -1
  18. package/dist/b3d-launcher.js +25 -5
  19. package/dist/b3d-launcher.js.map +1 -1
  20. package/dist/b3d-library.js +2 -2
  21. package/dist/b3d-light.js +1 -1
  22. package/dist/b3d-loader.js +1 -1
  23. package/dist/b3d-particles.js +1 -1
  24. package/dist/b3d-physics.js +1 -1
  25. package/dist/b3d-radar.js +2 -2
  26. package/dist/b3d-reflections.js +1 -1
  27. package/dist/b3d-shadows.js +1 -1
  28. package/dist/b3d-skybox.js +1 -1
  29. package/dist/b3d-sound.js +1 -1
  30. package/dist/b3d-svg-plane.d.ts +29 -0
  31. package/dist/b3d-svg-plane.d.ts.map +1 -1
  32. package/dist/b3d-svg-plane.js +136 -6
  33. package/dist/b3d-svg-plane.js.map +1 -1
  34. package/dist/b3d-trigger.js +1 -1
  35. package/dist/b3d-turret.js +1 -1
  36. package/dist/b3d-warhead.js +1 -1
  37. package/dist/b3d-water.js +1 -1
  38. package/dist/biome-chart.js +1 -1
  39. package/dist/cloud-shadows.js +2 -2
  40. package/dist/demo-utils.d.ts +166 -0
  41. package/dist/demo-utils.d.ts.map +1 -0
  42. package/dist/demo-utils.js +232 -0
  43. package/dist/demo-utils.js.map +1 -0
  44. package/dist/dialog-placement.d.ts +68 -0
  45. package/dist/dialog-placement.d.ts.map +1 -0
  46. package/dist/dialog-placement.js +130 -0
  47. package/dist/dialog-placement.js.map +1 -0
  48. package/dist/formations.js +1 -1
  49. package/dist/glass-gamepad.js +1 -1
  50. package/dist/make-mesh.js +2 -2
  51. package/dist/popup-surface.js +2 -2
  52. package/dist/shadow-decal.d.ts.map +1 -1
  53. package/dist/shadow-decal.js +12 -3
  54. package/dist/shadow-decal.js.map +1 -1
  55. package/dist/svg-texture.js +1 -1
  56. package/dist/tosi-b3d.d.ts.map +1 -1
  57. package/dist/tosi-b3d.js +6 -8
  58. package/dist/tosi-b3d.js.map +1 -1
  59. package/package.json +12 -2
@@ -0,0 +1,130 @@
1
+ /*#
2
+ # dialog-placement
3
+
4
+ **Where a modal dialog goes, and when it should follow you** — the pure half of
5
+ world-placed dialogs. Babylon-free (plain `{x, y, z}`), deterministic, and unit
6
+ tested, so the rules can be argued about without a headset.
7
+
8
+ ## Why dialogs are world-placed at all
9
+
10
+ A camera-parented panel is the obvious implementation and the wrong one. In 2D a
11
+ DOM element is clipped to its window, and `z-index` is a *local* claim that
12
+ cannot lift you out of an `overflow: hidden` ancestor. **Depth and collision are
13
+ XR's window frame**: you do not get to composite over them. A respawn panel set
14
+ to draw on top painted in front of the terrain and became untouchable, because
15
+ picking is geometric and does not care what you drew last.
16
+
17
+ So a dialog is a thing at a place. It occludes and is occluded like anything
18
+ else, it stacks with other UI by ordinary depth, and it does not jitter with
19
+ your head.
20
+
21
+ ## Why it still follows you
22
+
23
+ The one honest argument for head-locking is "what if I cannot find it". Answer:
24
+ if the dialog has been outside a generous cone for a couple of seconds, it
25
+ re-picks a spot in front of you and eases over. You get findability without the
26
+ panel chasing your eyes — the thing that made a face-pinned pause dialog
27
+ unpleasant.
28
+
29
+ **Eased, never snapped.** A dialog that teleports reads as a glitch; one that
30
+ moves reads as deliberate.
31
+ */
32
+ /*{ "parent": "UI" }*/
33
+ const sub = (a, b) => ({
34
+ x: a.x - b.x,
35
+ y: a.y - b.y,
36
+ z: a.z - b.z,
37
+ });
38
+ const len = (v) => Math.hypot(v.x, v.y, v.z);
39
+ /** Unit vector, or `null` for a zero-length input (which has no direction). */
40
+ export function normalize(v) {
41
+ const l = len(v);
42
+ if (l < 1e-9)
43
+ return null;
44
+ return { x: v.x / l, y: v.y / l, z: v.z / l };
45
+ }
46
+ /**
47
+ * Angle in DEGREES between where the viewer looks and where the dialog is.
48
+ *
49
+ * Returns `0` when the dialog is exactly on the view axis and `180` when it is
50
+ * directly behind. A dialog at the viewer's own position has no direction, and
51
+ * is reported as `0` — on-axis — because "you are inside it" is not a reason to
52
+ * go and fetch it.
53
+ */
54
+ export function gazeOffAxisDeg(eye, forward, dialog) {
55
+ const f = normalize(forward);
56
+ const d = normalize(sub(dialog, eye));
57
+ if (f == null || d == null)
58
+ return 0;
59
+ const dot = Math.max(-1, Math.min(1, f.x * d.x + f.y * d.y + f.z * d.z));
60
+ return (Math.acos(dot) * 180) / Math.PI;
61
+ }
62
+ export const newGazeState = () => ({ offAxisSec: 0 });
63
+ /**
64
+ * Advance the look-away clock and say whether the dialog should re-place.
65
+ *
66
+ * The clock **resets** the moment the dialog is back inside the cone, so a
67
+ * glance away costs nothing — only sustained inattention moves it. Returns the
68
+ * next state alongside the decision rather than mutating, so the rule is
69
+ * testable and the caller owns the state.
70
+ */
71
+ export function gazeStep(state, offAxisDeg, dt, opts = {}) {
72
+ const { coneDeg = 55, holdSec = 2 } = opts;
73
+ if (offAxisDeg <= coneDeg)
74
+ return { state: { offAxisSec: 0 }, recover: false };
75
+ const offAxisSec = state.offAxisSec + Math.max(0, dt);
76
+ if (offAxisSec >= holdSec)
77
+ return { state: { offAxisSec: 0 }, recover: true };
78
+ return { state: { offAxisSec }, recover: false };
79
+ }
80
+ /**
81
+ * Pick the best of several candidate distances — the results of casting a ray
82
+ * along each candidate direction.
83
+ *
84
+ * `Infinity` means nothing was hit, i.e. fully clear. The winner is the
85
+ * candidate with the most room, preferring EARLIER candidates on a tie so a
86
+ * caller can order them by desirability (straight ahead first). Returns `-1`
87
+ * when every candidate is too cramped to use.
88
+ */
89
+ export function bestCandidate(clearances, minClearance) {
90
+ let best = -1;
91
+ let bestClear = -Infinity;
92
+ for (let i = 0; i < clearances.length; i++) {
93
+ const c = clearances[i];
94
+ if (c < minClearance)
95
+ continue;
96
+ if (c > bestClear) {
97
+ best = i;
98
+ bestClear = c;
99
+ }
100
+ }
101
+ return best;
102
+ }
103
+ /**
104
+ * How far along a candidate direction to actually sit.
105
+ *
106
+ * Short of the obstruction by `margin` so the panel is not coplanar with a wall,
107
+ * never past the distance you asked for, and never closer than `minZ` — a panel
108
+ * at arm's length is uncomfortable in a headset, which is why "just use the near
109
+ * clip plane" is the wrong version of this idea.
110
+ */
111
+ export function placementDistance(clearance, desired, minZ = 0.6, margin = 0.25) {
112
+ const room = clearance === Infinity ? desired : clearance - margin;
113
+ return Math.max(minZ, Math.min(desired, room));
114
+ }
115
+ /**
116
+ * Ease a position toward a target — frame-rate independent.
117
+ *
118
+ * `smoothing` is the fraction of the remaining distance left after one second,
119
+ * so the result does not change when the frame rate does (the naive
120
+ * `lerp(a, b, 0.1)` per frame moves twice as fast at 120fps as at 60).
121
+ */
122
+ export function easeTo(current, target, dt, smoothing = 0.001) {
123
+ const t = 1 - Math.pow(smoothing, Math.max(0, dt));
124
+ return {
125
+ x: current.x + (target.x - current.x) * t,
126
+ y: current.y + (target.y - current.y) * t,
127
+ z: current.z + (target.z - current.z) * t,
128
+ };
129
+ }
130
+ //# sourceMappingURL=dialog-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-placement.js","sourceRoot":"","sources":["../src/dialog-placement.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ The functions just return offsets — here a crate is dropped at each slot of a
19
19
 
20
20
  ```js
21
21
  import { b3d, b3dSun, b3dSkybox, b3dGround, b3dBox, vee } from 'tosijs-3d'
22
- import { orbitCam } from 'demo-utils'
22
+ import { orbitCam } from 'tosijs-3d/demo-utils'
23
23
 
24
24
  // vee(count, opts) → an array of {x, y, z} offsets. The sim just places a mesh at each.
25
25
  const slots = vee(7, { spacing: 3, sweep: 2.5 })
@@ -23,7 +23,7 @@ directly, it's a `GamepadSource` whose `poll()` merges all clusters.
23
23
 
24
24
  ```js
25
25
  import { b3d, b3dGamepad, b3dSkybox } from 'tosijs-3d'
26
- import { demoSun, patternGround } from 'demo-utils'
26
+ import { demoSun, patternGround } from 'tosijs-3d/demo-utils'
27
27
  import { elements } from 'tosijs'
28
28
  const { div, pre } = elements
29
29
 
package/dist/make-mesh.js CHANGED
@@ -8,7 +8,7 @@ the four things everyone forgets already done.
8
8
 
9
9
  ```js
10
10
  import { b3d, b3dSkybox } from 'tosijs-3d'
11
- import { demoStage, orbitCam } from 'demo-utils'
11
+ import { demoStage, orbitCam } from 'tosijs-3d/demo-utils'
12
12
 
13
13
  const scene = b3d(
14
14
  {
@@ -25,7 +25,7 @@ const scene = b3d(
25
25
  el.make.torusKnot({ radius: 0.5, tube: 0.16, x: 2.4, y: 2.7, color: '#e08a3c', glow: 0.2 })
26
26
  },
27
27
  },
28
- ...demoStage({ size: 16, tiles: 10, pattern: true }),
28
+ ...demoStage({ size: 16, tiles: 10, texture: '/tosi-warhol-testgrid.svg' }),
29
29
  )
30
30
 
31
31
  preview.append(scene)
@@ -5,7 +5,7 @@
5
5
 
6
6
  ```js
7
7
  import { b3d } from 'tosijs-3d'
8
- import { demoStage, orbitCam } from 'demo-utils'
8
+ import { demoStage, orbitCam } from 'tosijs-3d/demo-utils'
9
9
  import { svgElements, elements } from 'tosijs'
10
10
  const { svg, rect, text } = svgElements
11
11
 
@@ -63,7 +63,7 @@ const scene = b3d(
63
63
  opened.push(m)
64
64
  },
65
65
  },
66
- ...demoStage({ size: 12, tiles: 8, pattern: true, timeOfDay: 11 }),
66
+ ...demoStage({ size: 12, tiles: 8, texture: '/tosi-warhol-testgrid.svg', timeOfDay: 11 }),
67
67
  )
68
68
 
69
69
  preview.append(scene)
@@ -1 +1 @@
1
- {"version":3,"file":"shadow-decal.d.ts","sourceRoot":"","sources":["../src/shadow-decal.ts"],"names":[],"mappings":"AA2EA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAQ1C;+CAC+C;AAC/C,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,UAAU,SAAM,GACf,OAAO,CAAC,cAAc,CAuBxB;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,CAAC,KAAK,GACnB,OAAO,CAAC,gBAAgB,CAa1B;AAED,MAAM,WAAW,kBAAkB;IACjC,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;kGACkG;AAClG,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,IAAI,CAgBd;AAED,MAAM,WAAW,kBAAkB;IACjC,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2FAA2F;IAC3F,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,KAAK,OAAO,CAAA;CACjD;AAED;;8FAE8F;AAC9F,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,IAAI,EACnB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAcT"}
1
+ {"version":3,"file":"shadow-decal.d.ts","sourceRoot":"","sources":["../src/shadow-decal.ts"],"names":[],"mappings":"AA2EA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAS1C;+CAC+C;AAC/C,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,UAAU,SAAM,GACf,OAAO,CAAC,cAAc,CAuBxB;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,CAAC,KAAK,GACnB,OAAO,CAAC,gBAAgB,CAa1B;AAED,MAAM,WAAW,kBAAkB;IACjC,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;kGACkG;AAClG,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,IAAI,CAgBd;AAED,MAAM,WAAW,kBAAkB;IACjC,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2FAA2F;IAC3F,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,KAAK,OAAO,CAAA;CACjD;AAED;;8FAE8F;AAC9F,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,CAAC,IAAI,EACnB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAqBT"}
@@ -20,7 +20,7 @@ position over the floor.
20
20
 
21
21
  ```js
22
22
  import { b3d, b3dBox, createShadowDecal } from 'tosijs-3d'
23
- import { demoStage, orbitCam } from 'demo-utils'
23
+ import { demoStage, orbitCam } from 'tosijs-3d/demo-utils'
24
24
 
25
25
  const scene = b3d(
26
26
  {
@@ -41,7 +41,7 @@ const scene = b3d(
41
41
  el.scene.onBeforeRenderObservable.add(place)
42
42
  },
43
43
  },
44
- ...demoStage({ size: 24, tiles: 10, pattern: true, timeOfDay: 10 }),
44
+ ...demoStage({ size: 24, tiles: 10, texture: '/tosi-warhol-testgrid.svg', timeOfDay: 10 }),
45
45
  // `_nocast` so no real CSM shadow competes with the decal — the decal IS the grounding shadow here
46
46
  b3dBox({ meshName: 'floater_nocast', size: 2, x: 0, y: 2.6, z: 0, color: '#c85a3a' }),
47
47
  )
@@ -73,6 +73,7 @@ visibility. See [b3d-clouds](?b3d-clouds.ts), the first consumer.
73
73
  */
74
74
  /*{ "parent": "Effects" }*/
75
75
  import * as BABYLON from '@babylonjs/core';
76
+ import { collidable } from './b3d-utils';
76
77
  const TEX_CACHE = new WeakMap();
77
78
  const MAT_CACHE = new WeakMap();
78
79
  /** Lift a decal this far off the surface it sits on, to keep it out of a z-fight with the ground. */
@@ -136,7 +137,15 @@ export function createShadowDecal(scene, opts = {}) {
136
137
  export function projectShadowDown(decal, scene, x, z, opts = {}) {
137
138
  const from = opts.fromHeight ?? 200;
138
139
  const ray = new BABYLON.Ray(new BABYLON.Vector3(x, from, z), BABYLON.Vector3.Down(), opts.maxDistance ?? 1000);
139
- const predicate = opts.predicate ?? ((m) => m.isPickable);
140
+ /*
141
+ `collidable()`, not a bare `isPickable` check — a UI panel IS pickable, so the
142
+ old default let a blob shadow land on a floating dialog. `collidable` also
143
+ re-checks `isEnabled`, which Babylon skips whenever a predicate is passed.
144
+
145
+ A caller can still supply its own predicate; this is only the default, and the
146
+ default is the one that has to be safe.
147
+ */
148
+ const predicate = opts.predicate ?? collidable();
140
149
  const hit = scene.pickWithRay(ray, predicate);
141
150
  if (!hit?.pickedPoint)
142
151
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"shadow-decal.js","sourceRoot":"","sources":["../src/shadow-decal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shadow-decal.js","sourceRoot":"","sources":["../src/shadow-decal.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ Renders SVG content to a Babylon.js texture via an offscreen canvas.
14
14
 
15
15
  ```js
16
16
  import { b3d, b3dLight, SvgTexture } from 'tosijs-3d'
17
- import { orbitCam } from 'demo-utils'
17
+ import { orbitCam } from 'tosijs-3d/demo-utils'
18
18
 
19
19
  const scene = b3d(
20
20
  {
@@ -1 +1 @@
1
- {"version":3,"file":"tosi-b3d.d.ts","sourceRoot":"","sources":["../src/tosi-b3d.ts"],"names":[],"mappings":"AAkRA,OAAO,EAAE,SAAS,EAAqB,MAAM,QAAQ,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,OAAO,oBAAoB,CAAA;AAE3B,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGtC,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,OAAO,EAAE,QAAQ,EAAe,MAAM,aAAa,CAAA;AACnD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,cAAc,CAAA;AACrB,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAA;AASzB,eAAO,MAAM,YAAY,GAAI,YAAS,KAAG,IAExC,CAAA;AAgBD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,oEAAoE;IACpE,KAAK,EAAE,MAAM,MAAM,EAAE,CAAA;IACrB,uFAAuF;IACvF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;IACxE;yDACqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAA;AAEtE,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,CAAA;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,CAAA;CACzB,CAAA;AAED;mFACmF;AACnF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAE1E;;kFAEkF;AAClF,MAAM,WAAW,SAAS;IACxB;;+CAE2C;IAC3C,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB;iEAC6D;IAC7D,aAAa,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3D;uFACmF;IACnF,SAAS,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAA;CACzC;AAkBD,KAAK,WAAW,GACZ,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,iBAAiB,CAAC,KAAK,IAAI,CAAC,GACnE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,iBAAiB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAKhF,mFAAmF;AACnF,KAAK,cAAc,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAA;AAc3C,qBAAa,GAAI,SAAQ,SAAS;IAChC,MAAM,CAAC,cAAc;;;;;;;;gBAsBD,IAAI,GAAG,KAAK,GAAG,MAAM;mBAGnB,IAAI,GAAG,KAAK;;iBAOd,OAAO,GAAG,MAAM;;QAIlC;8CACsC;qBACjB,IAAI,GAAG,KAAK;iBAKd,cAAc;;QAgBjC;+EACuE;yBAC9C,IAAI,GAAG,KAAK;QACrC,yEAAyE;;QAEzE;;;;;;;;;;WAUG;sBACmB,IAAI,GAAG,KAAK;QAClC;;;;;WAKG;yBACuB,IAAI,GAAG,KAAK;MACvC;IAED,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+Kf;IAED,OAAO,2DAsCN;IAED,MAAM,EAAG,OAAO,CAAC,MAAM,CAAA;IACvB,KAAK,EAAG,OAAO,CAAC,KAAK,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAA;IACzC,QAAQ,UAAQ;IAMhB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAmB;IACzC;;qFAEiF;IACjF,IAAI,aAAa,IAAI,OAAO,CAE3B;IACD,oFAAoF;IACpF,cAAc,IAAI,IAAI;IAGtB;8EAC0E;IAC1E,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAO;IAmBhC,MAAM,CAAC,OAAO,iBAAU;IACxB,OAAO,iBAAU;IAgBjB,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,WAAW,CAA0D;IAE7E,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB;;;;;;;;OAQG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY;IAI1C,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAA;IAC7B,SAAS,EAAE,IAAI,GAAG,KAAK,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,OAAO,CAAA;IACd,eAAe,EAAE,IAAI,GAAG,KAAK,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,IAAI,GAAG,KAAK,CAAA;IAC1B,eAAe,EAAE,IAAI,GAAG,KAAK,CAAA;IAGrC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,kBAAkB,CAAQ;IAQlC,OAAO,CAAC,eAAe,CAKR;IAEf,+EAA+E;IAC/E,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;;;;;;;;OAUG;IACH;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB,CAAQ;IAChC,IAAI,eAAe,IAAI,OAAO,CAE7B;IACD,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAIhC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,OAAO,CAAQ;IACvB,IAAI,MAAM,IAAI,OAAO,CAEpB;IACD,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAOzB,KAAK,CAAC,MAAM,GAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,MAAe,GAAG,IAAI;IASzE;;mCAE+B;IAC/B,MAAM,IAAI,IAAI;IAuBd;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoFvB,OAAO,CAAC,eAAe;IASvB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,WAAW;IAwDnB,0EAA0E;IAC1E,WAAW,IAAI,IAAI;IAKnB,YAAY,EAAE,WAAW,CAAO;IAChC,MAAM,EAAE,WAAW,CAAO;IAI1B,OAAO,EAAE,WAAW,CAAO;IAQ3B,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAW;IAEhD;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,QAAQ,EAAE,GAAG,IAAI,CAAa;IAO7E,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,cAAc,EAAE,CAiC1C;IAED,OAAO,CAAC,UAAU,CAAI;IAEtB;;;;;;8CAM0C;IAE1C,UAAU,SAAS;IACnB,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,WAAW,CAAQ;IAI3B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,UAAU,CAA8B;IAEhD,oFAAoF;IACpF,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAK/B,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAOtD,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAOzD,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAmBzC,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,qBAAqB,CAA8C;IAM3E,OAAO,CAAC,WAAW,CAAuB;IAK1C,QAAQ,CAAC,MAAM,cAAoB;IAGnC,OAAO,CAAC,gBAAgB,CAAQ;IAKhC,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,cAAc,CAAI;IAE1B;;;;;;;;;OASG;IACH,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI;IAIxE,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI;IAK3E;;qDAEiD;IACjD,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAOtD,OAAO,CAAC,SAAS,CAAuD;IAExE,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,GAAG,IAAI;IAIpD,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,GAAG,IAAI;IAItD,iBAAiB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAInE,oBAAoB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAKtE,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAIxC,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI1C,mFAAmF;IACnF,IAAI,UAAU,IAAI,WAAW,CAAC,SAAS,CAAC,CAEvC;IAED;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAsCzC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAUjD,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAWnD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAMpC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE;IAKjC,eAAe,CACb,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GAC3D,IAAI;IAaP;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CACf,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GAC3D,OAAO;IAMV,OAAO,CAAC,OAAO,CA2Ed;IAED,OAAO,CAAC,SAAS,CAAQ;IAIzB,YAAY,SAAI;IAKhB,YAAY;IAcZ,IAAI,UAAU;;;;;;;;;;;MAeb;IAED,SAAS,GACP,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,KAC/C,OAAO,CAAC,IAAI,CAAC,CAEf;IAMD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAAC,aAAa,CAAQ;IAQpC,OAAO,CAAC,aAAa;IAuBrB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,QAAQ,CAAsB;IACtC;;;6EAGyE;IACzE,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,kBAAkB,CAAI;IAC9B,8EAA8E;IAC9E,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,kBAAkB,CAAI;IAC9B;;mFAE+E;IAC/E,OAAO,CAAC,gBAAgB,CAAO;IAE/B;;;;;;;;;;OAUG;IACH,IAAI,SAAS,IAAI,OAAO,CASvB;IAED;;;;;;;OAOG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAMjC;IAED,wEAAwE;IACxE,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI;IAsClD,wEAAwE;IACxE,OAAO,CAAC,eAAe;IAcvB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IA+FxB,OAAO,CAAC,eAAe,CAAsB;IAI7C,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAGjB;IACD,OAAO,CAAC,eAAe,CAA8C;IACrE;4EACwE;IACxE,OAAO,CAAC,eAAe,CAA0B;IAEjD;;;;;;;;;;;;;;;;;;;OAmBG;IAQH,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,OAAO,CAAwB;IAEvC;;;;;OAKG;IACH;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAK;IAE7B,qEAAqE;IACrE,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI;IAQhC,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,IAAI;IAQ9C;oFACgF;IAChF,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAmBvC,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,WAAW,CAAmB;IAEtC;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;;;;;;;OAUG;IACG,QAAQ,CACZ,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7C,OAAO,CAAC,MAAM,CAAC;IAalB;0EACsE;IACtE,OAAO,CAAC,cAAc;IAKtB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAsCpD,OAAO,CAAC,OAAO,CAAoD;IACnE,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,WAAW,CAAI;IACvB,2EAA2E;IAC3E,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,gFAAgF;IAChF,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAErD;IACD,oEAAoE;IACpE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAO,GAAG,IAAI;IAI1C,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgB3D,OAAO,CAAC,WAAW;IA2CnB;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAsErB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,gBAAgB;IAyExB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,aAAa;IAuCrB,OAAO,CAAC,iBAAiB;IAmCzB,iBAAiB,IAAI,IAAI;YAoJX,QAAQ;IA8LtB,OAAO,CAAC,yBAAyB;IAkuBjC,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,eAAe;IA0DvB,OAAO,CAAC,gBAAgB;IAmBxB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IA+CvB,OAAO,CAAC,gBAAgB;IAMxB;;+EAE2E;IAC3E,iBAAiB,IAAI,IAAI;IAWzB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,cAAc;IAmOtB,oBAAoB,IAAI,IAAI;IAgC5B,MAAM,IAAI,IAAI;CAqBf;AAED,eAAO,MAAM,GAAG,sCAA0C,CAAA"}
1
+ {"version":3,"file":"tosi-b3d.d.ts","sourceRoot":"","sources":["../src/tosi-b3d.ts"],"names":[],"mappings":"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"}
package/dist/tosi-b3d.js CHANGED
@@ -138,7 +138,7 @@ take the headset off. Set it on the scene below and the button changes to
138
138
 
139
139
  ```js
140
140
  import { b3d, b3dBox, b3dSphere, label3d, button3d, select3d, sceneDelta } from 'tosijs-3d'
141
- import { demoStage } from 'demo-utils'
141
+ import { demoStage } from 'tosijs-3d/demo-utils'
142
142
  import { tosi } from 'tosijs'
143
143
 
144
144
  const demo = tosi({ pauseDemo: { state: 'paused since load', spin: 'medium' } })
@@ -199,7 +199,7 @@ const scene = b3d(
199
199
  })
200
200
  },
201
201
  },
202
- ...demoStage({ pattern: true, size: 40, timeOfDay: 11 }),
202
+ ...demoStage({ texture: '/tosi-warhol-testgrid.svg', size: 40, timeOfDay: 11 }),
203
203
  cube,
204
204
  moon
205
205
  )
@@ -875,12 +875,10 @@ export class B3d extends Component {
875
875
  const width = panelFitWidth(fov, aspect, z, 1.1);
876
876
  const plane = b3dSvgPlane({
877
877
  cameraRelative: true,
878
- // Ride the TORSO, not your face (Tonio: "not sure the pause / continue
879
- // dialog needs to be pinned to your face"). It is a thing you read and
880
- // then press, so head-locking it means it follows every glance and can
881
- // never be looked AWAY from — the same reason the respawn panel moved to
882
- // this frame. Ignored flat, where cameraRelative means the orbit camera.
883
- xrFrame: 'body',
878
+ // World-placed, like the respawn panel: a thing you read and then press
879
+ // should not follow every glance, but must still be findable — so it
880
+ // comes to you if you look away for ~2s. See dialog-placement.
881
+ placement: 'world',
884
882
  width,
885
883
  height: width * (svgH / 320),
886
884
  z,