@plasius/gpu-shared 0.1.2 → 0.1.3
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 +20 -0
- package/README.md +19 -1
- package/dist/index.cjs +43 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/{showcase-runtime-67CHJBNO.js → showcase-runtime-V72XV55N.js} +44 -10
- package/dist/{showcase-runtime-67CHJBNO.js.map → showcase-runtime-V72XV55N.js.map} +1 -1
- package/package.json +1 -1
- package/src/index.d.ts +1 -0
- package/src/showcase-runtime.js +48 -8
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ async function loadGltfModel(url) {
|
|
|
18
18
|
return module.loadGltfModel(url);
|
|
19
19
|
}
|
|
20
20
|
async function mountGpuShowcase(options = {}) {
|
|
21
|
-
const runtimeLoader = typeof options.__runtimeLoader === "function" ? options.__runtimeLoader : () => import("./showcase-runtime-
|
|
21
|
+
const runtimeLoader = typeof options.__runtimeLoader === "function" ? options.__runtimeLoader : () => import("./showcase-runtime-V72XV55N.js");
|
|
22
22
|
const module = await runtimeLoader();
|
|
23
23
|
if (typeof module.mountGpuShowcase !== "function") {
|
|
24
24
|
throw new Error("showcase runtime loader must provide mountGpuShowcase.");
|
|
@@ -7710,6 +7710,9 @@ function syncTextState(state, shipModel) {
|
|
|
7710
7710
|
async function mountGpuShowcase(options = {}) {
|
|
7711
7711
|
injectStyles();
|
|
7712
7712
|
const root = options.root ?? document.body;
|
|
7713
|
+
const previousMarkup = root.innerHTML;
|
|
7714
|
+
const previousRenderGameToText = window.render_game_to_text;
|
|
7715
|
+
const previousAdvanceTime = window.advanceTime;
|
|
7713
7716
|
const focus = options.focus ?? new URLSearchParams(window.location.search).get("focus") ?? "integrated";
|
|
7714
7717
|
const dom = buildDemoDom(root, {
|
|
7715
7718
|
packageName: options.packageName ?? "@plasius/gpu-demo-viewer",
|
|
@@ -7726,7 +7729,12 @@ async function mountGpuShowcase(options = {}) {
|
|
|
7726
7729
|
state.demoDescription = resolveSceneDescription(state, options, shipModel).description;
|
|
7727
7730
|
syncTextState(state, shipModel);
|
|
7728
7731
|
const ctx = dom.canvas.getContext("2d");
|
|
7732
|
+
let destroyed = false;
|
|
7733
|
+
let frameHandle = null;
|
|
7729
7734
|
const renderFrame = (nowMs) => {
|
|
7735
|
+
if (destroyed) {
|
|
7736
|
+
return;
|
|
7737
|
+
}
|
|
7730
7738
|
if (!state.paused) {
|
|
7731
7739
|
if (state.lastTimeMs == null) {
|
|
7732
7740
|
state.lastTimeMs = nowMs;
|
|
@@ -7743,27 +7751,53 @@ async function mountGpuShowcase(options = {}) {
|
|
|
7743
7751
|
state.demoDescription = resolveSceneDescription(state, options, shipModel).description;
|
|
7744
7752
|
renderScene(ctx, dom.canvas, state, shipModel, dom);
|
|
7745
7753
|
syncTextState(state, shipModel);
|
|
7746
|
-
requestAnimationFrame(renderFrame);
|
|
7754
|
+
frameHandle = requestAnimationFrame(renderFrame);
|
|
7747
7755
|
};
|
|
7748
|
-
|
|
7756
|
+
const handlePauseClick = () => {
|
|
7749
7757
|
state.paused = !state.paused;
|
|
7750
7758
|
dom.pauseButton.textContent = state.paused ? "Resume" : "Pause";
|
|
7751
|
-
}
|
|
7752
|
-
|
|
7759
|
+
};
|
|
7760
|
+
const handleStressChange = () => {
|
|
7753
7761
|
state.stress = dom.stressToggle.checked;
|
|
7754
|
-
}
|
|
7755
|
-
|
|
7762
|
+
};
|
|
7763
|
+
const handleFocusChange = () => {
|
|
7756
7764
|
state.focus = dom.focusMode.value;
|
|
7757
7765
|
Object.assign(state.camera, {
|
|
7758
7766
|
...CAMERA_PRESETS[state.focus],
|
|
7759
7767
|
target: vec3(...CAMERA_PRESETS[state.focus].target)
|
|
7760
7768
|
});
|
|
7761
|
-
}
|
|
7762
|
-
|
|
7769
|
+
};
|
|
7770
|
+
dom.pauseButton.addEventListener("click", handlePauseClick);
|
|
7771
|
+
dom.stressToggle.addEventListener("change", handleStressChange);
|
|
7772
|
+
dom.focusMode.addEventListener("change", handleFocusChange);
|
|
7773
|
+
frameHandle = requestAnimationFrame(renderFrame);
|
|
7763
7774
|
return {
|
|
7764
7775
|
state,
|
|
7765
7776
|
shipModel,
|
|
7766
|
-
canvas: dom.canvas
|
|
7777
|
+
canvas: dom.canvas,
|
|
7778
|
+
destroy() {
|
|
7779
|
+
if (destroyed) {
|
|
7780
|
+
return;
|
|
7781
|
+
}
|
|
7782
|
+
destroyed = true;
|
|
7783
|
+
if (frameHandle != null) {
|
|
7784
|
+
cancelAnimationFrame(frameHandle);
|
|
7785
|
+
}
|
|
7786
|
+
dom.pauseButton.removeEventListener("click", handlePauseClick);
|
|
7787
|
+
dom.stressToggle.removeEventListener("change", handleStressChange);
|
|
7788
|
+
dom.focusMode.removeEventListener("change", handleFocusChange);
|
|
7789
|
+
root.innerHTML = previousMarkup;
|
|
7790
|
+
if (typeof previousRenderGameToText === "function") {
|
|
7791
|
+
window.render_game_to_text = previousRenderGameToText;
|
|
7792
|
+
} else {
|
|
7793
|
+
delete window.render_game_to_text;
|
|
7794
|
+
}
|
|
7795
|
+
if (typeof previousAdvanceTime === "function") {
|
|
7796
|
+
window.advanceTime = previousAdvanceTime;
|
|
7797
|
+
} else {
|
|
7798
|
+
delete window.advanceTime;
|
|
7799
|
+
}
|
|
7800
|
+
}
|
|
7767
7801
|
};
|
|
7768
7802
|
}
|
|
7769
7803
|
function updatePhysicsSnapshot(state, shipModel) {
|
|
@@ -7791,4 +7825,4 @@ export {
|
|
|
7791
7825
|
resolveShowcaseAssetUrl,
|
|
7792
7826
|
showcaseFocusModes
|
|
7793
7827
|
};
|
|
7794
|
-
//# sourceMappingURL=showcase-runtime-
|
|
7828
|
+
//# sourceMappingURL=showcase-runtime-V72XV55N.js.map
|