storysplat-viewer 2.7.13 → 2.7.14

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.
@@ -1300,7 +1300,7 @@ viewer.<span class="hl-fn">on</span>(<span class="hl-str">'waypointChange'</span
1300
1300
  <tr><td><code>viewer.play()</code></td><td>Auto-play through waypoints</td></tr>
1301
1301
  <tr><td><code>viewer.pause()</code></td><td>Pause auto-play</td></tr>
1302
1302
  <tr><td><code>viewer.nextWaypoint()</code></td><td>Go to the next waypoint</td></tr>
1303
- <tr><td><code>viewer.previousWaypoint()</code></td><td>Go to the previous waypoint</td></tr>
1303
+ <tr><td><code>viewer.prevWaypoint()</code></td><td>Go to the previous waypoint</td></tr>
1304
1304
  <tr><td><code>viewer.goToWaypoint(n)</code></td><td>Jump to waypoint #n (0-indexed)</td></tr>
1305
1305
  <tr><td><code>viewer.destroy()</code></td><td>Clean up the viewer (call on unmount!)</td></tr>
1306
1306
  </table>
@@ -1382,7 +1382,12 @@ viewer.<span class="hl-fn">on</span>(<span class="hl-str">'waypointChange'</span
1382
1382
  scene.json &lt;-- Scene configuration
1383
1383
  *.ksplat &lt;-- 3D model file(s)
1384
1384
  lod/ &lt;-- Streaming data (if applicable)
1385
- assets/ &lt;-- Images, videos, audio</pre>
1385
+ assets/ &lt;-- Images, videos, audio
1386
+ other-scene/ &lt;-- Additional scenes (if portals are used)
1387
+ scene.json
1388
+ *.ksplat
1389
+ lod/
1390
+ assets/</pre>
1386
1391
  </div>
1387
1392
  </div>
1388
1393
 
@@ -1480,6 +1485,49 @@ viewer.<span class="hl-fn">play</span>();
1480
1485
  viewer.<span class="hl-fn">on</span>(<span class="hl-str">'ready'</span>, () =&gt; console.log(<span class="hl-str">'Loaded from local files!'</span>));</pre>
1481
1486
  </div>
1482
1487
  </div>
1488
+
1489
+ <!-- portal handling sub-section -->
1490
+ <div class="collapsible-header" onclick="toggleCollapsible(this)">
1491
+ <span class="chevron">&#9654;</span>
1492
+ <strong>Handling Portals in Multi-Scene Exports</strong>
1493
+ </div>
1494
+ <div class="collapsible-body">
1495
+ <p>If your scene uses <strong>portals</strong> (links to other scenes), the self-hosted export automatically bundles all linked scenes. Each portal-linked scene gets its own folder:</p>
1496
+ <div class="code-block">
1497
+ <div class="code-header"><span>Multi-scene folder structure</span></div>
1498
+ <pre>scenes/
1499
+ main-scene/
1500
+ scene.json
1501
+ *.ksplat
1502
+ linked-scene-a/
1503
+ scene.json
1504
+ *.ksplat
1505
+ linked-scene-b/
1506
+ scene.json
1507
+ *.ksplat</pre>
1508
+ </div>
1509
+ <p>The generated <code>index.html</code> handles portal navigation automatically. If you're building your own integration, listen for the <code>portalActivated</code> event and load the target scene:</p>
1510
+ <div class="code-block">
1511
+ <div class="code-header"><span>Portal handling</span><button class="copy-btn" onclick="copyCode(this)">Copy</button></div>
1512
+ <pre><span class="hl-kw">let</span> viewer = <span class="hl-fn">createViewer</span>(container, initialSceneData);
1513
+
1514
+ <span class="hl-kw">function</span> <span class="hl-fn">handlePortal</span>(data) {
1515
+ <span class="hl-comment">// data.targetSceneId matches a folder name under scenes/</span>
1516
+ <span class="hl-fn">fetch</span>(<span class="hl-str">`./scenes/${data.targetSceneId}/scene.json`</span>)
1517
+ .then(<span class="hl-kw">function</span>(r) { <span class="hl-kw">return</span> r.json(); })
1518
+ .then(<span class="hl-kw">function</span>(sceneData) {
1519
+ viewer.<span class="hl-fn">destroy</span>();
1520
+ viewer = <span class="hl-fn">createViewer</span>(container, sceneData);
1521
+ viewer.<span class="hl-fn">on</span>(<span class="hl-str">'portalActivated'</span>, handlePortal);
1522
+ });
1523
+ }
1524
+
1525
+ viewer.<span class="hl-fn">on</span>(<span class="hl-str">'portalActivated'</span>, handlePortal);</pre>
1526
+ </div>
1527
+ <div class="callout">
1528
+ <strong>Tip:</strong> The exported <code>index.html</code> already includes this logic with a <code>SCENE_FOLDERS</code> mapping. You only need custom portal handling if you're building your own page.
1529
+ </div>
1530
+ </div>
1483
1531
  </div>
1484
1532
 
1485
1533
  <div class="pros-cons">