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.
- package/CHANGELOG.md +78 -0
- package/dist/b3d-ambient.js +1 -1
- package/dist/b3d-biped.js +1 -1
- package/dist/b3d-clouds.d.ts.map +1 -1
- package/dist/b3d-clouds.js +13 -35
- package/dist/b3d-clouds.js.map +1 -1
- package/dist/b3d-death.d.ts.map +1 -1
- package/dist/b3d-death.js +12 -5
- package/dist/b3d-death.js.map +1 -1
- package/dist/b3d-destroyable.d.ts +12 -0
- package/dist/b3d-destroyable.d.ts.map +1 -1
- package/dist/b3d-destroyable.js +17 -2
- package/dist/b3d-destroyable.js.map +1 -1
- package/dist/b3d-exploder.js +1 -1
- package/dist/b3d-fog.js +1 -1
- package/dist/b3d-launcher.d.ts +14 -0
- package/dist/b3d-launcher.d.ts.map +1 -1
- package/dist/b3d-launcher.js +25 -5
- package/dist/b3d-launcher.js.map +1 -1
- package/dist/b3d-library.js +2 -2
- package/dist/b3d-light.js +1 -1
- package/dist/b3d-loader.js +1 -1
- package/dist/b3d-particles.js +1 -1
- package/dist/b3d-physics.js +1 -1
- package/dist/b3d-radar.js +2 -2
- package/dist/b3d-reflections.js +1 -1
- package/dist/b3d-shadows.js +1 -1
- package/dist/b3d-skybox.js +1 -1
- package/dist/b3d-sound.js +1 -1
- package/dist/b3d-svg-plane.d.ts +29 -0
- package/dist/b3d-svg-plane.d.ts.map +1 -1
- package/dist/b3d-svg-plane.js +136 -6
- package/dist/b3d-svg-plane.js.map +1 -1
- package/dist/b3d-trigger.js +1 -1
- package/dist/b3d-turret.js +1 -1
- package/dist/b3d-warhead.js +1 -1
- package/dist/b3d-water.js +1 -1
- package/dist/biome-chart.js +1 -1
- package/dist/cloud-shadows.js +2 -2
- package/dist/demo-utils.d.ts +166 -0
- package/dist/demo-utils.d.ts.map +1 -0
- package/dist/demo-utils.js +232 -0
- package/dist/demo-utils.js.map +1 -0
- package/dist/dialog-placement.d.ts +68 -0
- package/dist/dialog-placement.d.ts.map +1 -0
- package/dist/dialog-placement.js +130 -0
- package/dist/dialog-placement.js.map +1 -0
- package/dist/formations.js +1 -1
- package/dist/glass-gamepad.js +1 -1
- package/dist/make-mesh.js +2 -2
- package/dist/popup-surface.js +2 -2
- package/dist/shadow-decal.d.ts.map +1 -1
- package/dist/shadow-decal.js +12 -3
- package/dist/shadow-decal.js.map +1 -1
- package/dist/svg-texture.js +1 -1
- package/dist/tosi-b3d.d.ts.map +1 -1
- package/dist/tosi-b3d.js +6 -8
- package/dist/tosi-b3d.js.map +1 -1
- 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE;AACF,sBAAsB;AAStB,MAAM,GAAG,GAAG,CAAC,CAAO,EAAE,CAAO,EAAQ,EAAE,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACb,CAAC,CAAA;AACF,MAAM,GAAG,GAAG,CAAC,CAAO,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE1D,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAC,CAAO;IAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;IAChB,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,IAAI,CAAA;IACzB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,GAAS,EAAE,OAAa,EAAE,MAAY;IACnE,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAA;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;AACzC,CAAC;AAOD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAc,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;AAShE;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAgB,EAChB,UAAkB,EAClB,EAAU,EACV,OAAoB,EAAE;IAEtB,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;IAC1C,IAAI,UAAU,IAAI,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9E,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACrD,IAAI,UAAU,IAAI,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7E,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAoB,EACpB,YAAoB;IAEpB,IAAI,IAAI,GAAG,CAAC,CAAC,CAAA;IACb,IAAI,SAAS,GAAG,CAAC,QAAQ,CAAA;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,YAAY;YAAE,SAAQ;QAC9B,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,CAAA;YACR,SAAS,GAAG,CAAC,CAAA;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,OAAe,EACf,IAAI,GAAG,GAAG,EACV,MAAM,GAAG,IAAI;IAEb,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAA;IAClE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CACpB,OAAa,EACb,MAAY,EACZ,EAAU,EACV,SAAS,GAAG,KAAK;IAEjB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAClD,OAAO;QACL,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACzC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACzC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;KAC1C,CAAA;AACH,CAAC"}
|
package/dist/formations.js
CHANGED
|
@@ -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 })
|
package/dist/glass-gamepad.js
CHANGED
|
@@ -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,
|
|
28
|
+
...demoStage({ size: 16, tiles: 10, texture: '/tosi-warhol-testgrid.svg' }),
|
|
29
29
|
)
|
|
30
30
|
|
|
31
31
|
preview.append(scene)
|
package/dist/popup-surface.js
CHANGED
|
@@ -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,
|
|
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;
|
|
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"}
|
package/dist/shadow-decal.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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;
|
package/dist/shadow-decal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadow-decal.js","sourceRoot":"","sources":["../src/shadow-decal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwEE;AACF,2BAA2B;AAE3B,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"shadow-decal.js","sourceRoot":"","sources":["../src/shadow-decal.ts"],"names":[],"mappings":"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"}
|
package/dist/svg-texture.js
CHANGED
package/dist/tosi-b3d.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tosi-b3d.d.ts","sourceRoot":"","sources":["../src/tosi-b3d.ts"],"names":[],"mappings":"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
|
|
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({
|
|
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
|
-
//
|
|
879
|
-
//
|
|
880
|
-
//
|
|
881
|
-
|
|
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,
|