@displayxr/inline3d 1.21.0 → 1.21.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.
- package/CHANGELOG.md +9 -0
- package/js/inline3d-splat-playcanvas.js +15 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,15 @@ entry points (`.`, `./three`) are frozen for 1.x, while the **scene subpaths** (
|
|
|
5
5
|
`./splat`, `./model`) are a preview tier whose options may change in any release. Entries below say
|
|
6
6
|
which tier they touch, because that is what tells you whether an upgrade can move your pixels.
|
|
7
7
|
|
|
8
|
+
## 1.21.1 — 2026-09-24
|
|
9
|
+
|
|
10
|
+
Touches the **preview tier** (`./splat`, `engine: 'playcanvas'` only). No API change; nothing changes at rest.
|
|
11
|
+
|
|
12
|
+
- **A gated `reveal` no longer shows its start state frozen.** The splat is hidden until the reveal's clock
|
|
13
|
+
starts, so its first visible frame is the first frame of motion; previously the start state (e.g.
|
|
14
|
+
`assemble`'s scatter) sat still for up to the rest of the `firstWoven` hold, then jumped. On a cached
|
|
15
|
+
asset the tile is empty for the rest of the hold instead.
|
|
16
|
+
|
|
8
17
|
## 1.21.0 — 2026-09-24
|
|
9
18
|
|
|
10
19
|
Touches the **preview tier** (`./splat`, `engine: 'playcanvas'` only). Minor: a new `setSource`
|
|
@@ -3630,7 +3630,22 @@ export function attachPlayCanvasSplat(out, wall, canvas, src, opts, pending = []
|
|
|
3630
3630
|
// tile is woven (handle.firstWoven — which is immediate in 2D) and the first frames are built.
|
|
3631
3631
|
if (revealSpec) {
|
|
3632
3632
|
const gate = Promise.resolve(out.firstWoven).then(() => afterTicks(2));
|
|
3633
|
+
// The splat stays HIDDEN until the gate opens, so the first frame anyone sees is the first
|
|
3634
|
+
// frame of motion. The gate is `firstWoven`, a worst-case hold of up to 1.2 s past the
|
|
3635
|
+
// layer's birth (docs/woven-canvas-rules.md §5), and the browser usually joins the canvas
|
|
3636
|
+
// well before it ends. Drawn meanwhile, the start state (a particle reveal's scatter) sat
|
|
3637
|
+
// frozen on the woven panel for the rest of the hold and then jumped into motion. Hidden,
|
|
3638
|
+
// the tile is empty for that span, which also keeps stereo pixels off a canvas that may
|
|
3639
|
+
// not be joined yet (rule 5). Registered after fx.play's own `.then`, so it lands in the
|
|
3640
|
+
// same microtask that releases the effect: the clock starts on the frame it first shows.
|
|
3641
|
+
entity.enabled = false;
|
|
3633
3642
|
fx.play(revealSpec.type, revealSpec.raw, { gate });
|
|
3643
|
+
gate.then(() => {
|
|
3644
|
+
if (removed || current?.entity !== entity) return;
|
|
3645
|
+
// setVideo took the splat off screen meanwhile: its exit restores what it saved.
|
|
3646
|
+
if (vid?.saved?.entity === entity) vid.saved.splatEnabled = true;
|
|
3647
|
+
else entity.enabled = true;
|
|
3648
|
+
});
|
|
3634
3649
|
}
|
|
3635
3650
|
for (const [what, name, arg] of fxPending.splice(0)) {
|
|
3636
3651
|
if (what === 'set') fx.set(name, arg);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@displayxr/inline3d",
|
|
3
|
-
"version": "1.21.
|
|
3
|
+
"version": "1.21.1",
|
|
4
4
|
"description": "Turn any HTML <canvas> into a glasses-free-3D window on a DisplayXR display, inside an ordinary web page. Dependency-free; progressive enhancement (falls back to plain 2D everywhere else).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./index.d.ts",
|