@bitmagic/cli 0.1.39 → 0.1.40
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/README.md +27 -5
- package/dist/commands/verify.js +16 -3
- package/dist/commands/verify.js.map +1 -1
- package/dist/editor/asset-detail-panel.d.ts +22 -0
- package/dist/editor/asset-detail-panel.js +72 -0
- package/dist/editor/asset-detail-panel.js.map +1 -0
- package/dist/editor/asset-preview-page.d.ts +6 -0
- package/dist/editor/asset-preview-page.js +103 -0
- package/dist/editor/asset-preview-page.js.map +1 -0
- package/dist/editor/asset-viewer.d.ts +19 -0
- package/dist/editor/asset-viewer.js +218 -0
- package/dist/editor/asset-viewer.js.map +1 -0
- package/dist/editor/server.js +128 -0
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +309 -30
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/scaffold/project-files.d.ts +6 -0
- package/dist/scaffold/project-files.js +5 -1
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/verify/browser.js +30 -0
- package/dist/verify/browser.js.map +1 -1
- package/dist/verify/classify.d.ts +4 -0
- package/dist/verify/classify.js +26 -0
- package/dist/verify/classify.js.map +1 -1
- package/dist/verify/events.d.ts +41 -0
- package/dist/verify/events.js +72 -0
- package/dist/verify/events.js.map +1 -0
- package/dist/verify/iterate.js +3 -1
- package/dist/verify/iterate.js.map +1 -1
- package/dist/verify/result.d.ts +5 -1
- package/dist/verify/result.js.map +1 -1
- package/dist/verify/url.d.ts +12 -0
- package/dist/verify/url.js +14 -0
- package/dist/verify/url.js.map +1 -0
- package/package.json +2 -1
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
* nothing. Polling `CHECK_SCENE_CHANGES` is what the Creator does too, just on tab switch
|
|
49
49
|
* instead of on a timer, and it covers drags, deletes, adds and inspector edits with one path.
|
|
50
50
|
*/
|
|
51
|
+
import { ASSET_DETAIL_CSS, ASSET_DETAIL_HTML } from './asset-detail-panel.js';
|
|
51
52
|
/** How often the shell asks the engine whether anything changed. A `Set` read; effectively free. */
|
|
52
53
|
const POLL_INTERVAL_MS = 500;
|
|
53
54
|
/**
|
|
@@ -121,6 +122,8 @@ export function renderEditorShell(options) {
|
|
|
121
122
|
#assets-head .count { margin-left: auto; color: #6a6a7a; letter-spacing: 0; }
|
|
122
123
|
#assets-empty { padding: 14px 10px; color: #6a6a7a; }
|
|
123
124
|
.row { display: flex; gap: 9px; padding: 8px 10px; border-bottom: 1px solid #1e1e26; }
|
|
125
|
+
.row.clickable { cursor: pointer; }
|
|
126
|
+
.row.clickable:hover, .row.clickable:focus-visible { background: #1b1b23; outline: none; }
|
|
124
127
|
.row .thumb { width: 46px; height: 46px; flex: none; border-radius: 4px; background: #1e1e26;
|
|
125
128
|
display: flex; align-items: center; justify-content: center; font-size: 18px;
|
|
126
129
|
color: #55556a; overflow: hidden; }
|
|
@@ -177,6 +180,7 @@ export function renderEditorShell(options) {
|
|
|
177
180
|
background: #101014; border: 1px solid #26262e; }
|
|
178
181
|
#hq-note.show { display: block; }
|
|
179
182
|
#hq-note code { display: block; margin-top: 6px; color: #9fd0a8; word-break: break-all; }
|
|
183
|
+
${ASSET_DETAIL_CSS}
|
|
180
184
|
</style>
|
|
181
185
|
</head>
|
|
182
186
|
<body>
|
|
@@ -235,6 +239,7 @@ export function renderEditorShell(options) {
|
|
|
235
239
|
</div>
|
|
236
240
|
</div>
|
|
237
241
|
</div>
|
|
242
|
+
${ASSET_DETAIL_HTML}
|
|
238
243
|
<script>
|
|
239
244
|
(function () {
|
|
240
245
|
'use strict';
|
|
@@ -330,6 +335,13 @@ export function renderEditorShell(options) {
|
|
|
330
335
|
var message = event.data;
|
|
331
336
|
if (!message || typeof message.type !== 'string') return;
|
|
332
337
|
|
|
338
|
+
// The asset overlay's viewer is a second sender on this window. Its replies are routed by
|
|
339
|
+
// source, before the waiter list below gets to match anything on type alone.
|
|
340
|
+
if (assetFrame && event.source === assetFrame.contentWindow) {
|
|
341
|
+
onAssetPreviewMessage(message);
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
|
|
333
345
|
waiters = waiters.filter(function (waiter) {
|
|
334
346
|
if (waiter.type !== message.type) return true;
|
|
335
347
|
clearTimeout(waiter.timer);
|
|
@@ -938,23 +950,51 @@ export function renderEditorShell(options) {
|
|
|
938
950
|
}
|
|
939
951
|
|
|
940
952
|
/**
|
|
941
|
-
*
|
|
953
|
+
* How the engine should draw this asset's thumbnail, or null when there is nothing to draw.
|
|
954
|
+
*
|
|
955
|
+
* 'sourceGlbUrl' before 'url' because many CLI-lane meshes are voxelized: 'url' is then a .vxl,
|
|
956
|
+
* and the GLB the forger started from renders in one message with nothing to fetch here.
|
|
957
|
+
*
|
|
958
|
+
* A .vxl with NO GLB source used to fall through to a glyph, and that was most of the panel —
|
|
959
|
+
* across the sampled project worlds it is 153 such assets against 144 with a GLB source, and
|
|
960
|
+
* every fresh project starts in the bad half: templates/standard-3d ships nine assets, all vxl,
|
|
961
|
+
* none with a sourceGlbUrl or a screenshotUrl. So the whole assets panel of a new project was
|
|
962
|
+
* grey boxes. Those now go the voxel route, which the engine has been able to draw the entire
|
|
963
|
+
* time (VoxelMessageHandlers.handleGenerateVoxelPreview) and which the web Creator has used since
|
|
964
|
+
* before this lane existed.
|
|
942
965
|
*
|
|
943
|
-
*
|
|
944
|
-
*
|
|
945
|
-
* the generator started from. An asset with neither — a sound, an animation, a level — keeps its
|
|
946
|
-
* glyph, which is the honest answer for something with no appearance.
|
|
966
|
+
* An asset with neither — a sound, an animation, a level — keeps its glyph, which is the honest
|
|
967
|
+
* answer for something with no appearance.
|
|
947
968
|
*/
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
969
|
+
var MAX_VXL_PREVIEW_BYTES = 8 * 1024 * 1024;
|
|
970
|
+
|
|
971
|
+
function previewJobFor(asset) {
|
|
972
|
+
var glb = asset.sourceGlbUrl || asset.url;
|
|
951
973
|
// Double-escaped because this whole page is a template literal: a single backslash is consumed
|
|
952
974
|
// by the literal, and the browser would receive the invalid regex /.(glb|gltf)(?|$)/.
|
|
953
|
-
|
|
975
|
+
if (typeof glb === 'string' && /\\.(glb|gltf)(\\?|$)/i.test(glb)) return { kind: 'glb', url: glb };
|
|
976
|
+
var url = asset.url;
|
|
977
|
+
if (typeof url !== 'string' || !/\\.vxl(\\?|$)/i.test(url)) return null;
|
|
978
|
+
// The voxel message carries the FILE, so this one costs a fetch and a structured clone of the
|
|
979
|
+
// whole thing. The templates' files are 0.5-2.5 KB; a multi-megabyte one is a hitch on the
|
|
980
|
+
// render thread in exchange for a 46px tile, and the glyph is the better trade.
|
|
981
|
+
if (typeof asset.size === 'number' && asset.size > MAX_VXL_PREVIEW_BYTES) return null;
|
|
982
|
+
return { kind: 'vxl', url: url };
|
|
954
983
|
}
|
|
955
984
|
|
|
956
985
|
function assetRow(asset, isFresh, hasPreview) {
|
|
957
|
-
var row = el('div', 'row' + (isFresh ? ' fresh' : ''));
|
|
986
|
+
var row = el('div', 'row clickable' + (isFresh ? ' fresh' : ''));
|
|
987
|
+
// A row is a button: the panel is a list of things you can look at. Job rows deliberately are
|
|
988
|
+
// not — there is nothing to show for an asset that does not exist yet.
|
|
989
|
+
row.setAttribute('role', 'button');
|
|
990
|
+
row.setAttribute('tabindex', '0');
|
|
991
|
+
row.title = 'Open a preview of this asset';
|
|
992
|
+
row.addEventListener('click', function () { openAssetDetail(asset, hasPreview); });
|
|
993
|
+
row.addEventListener('keydown', function (event) {
|
|
994
|
+
if (event.key !== 'Enter' && event.key !== ' ') return;
|
|
995
|
+
event.preventDefault();
|
|
996
|
+
openAssetDetail(asset, hasPreview);
|
|
997
|
+
});
|
|
958
998
|
var thumb = el('div', 'thumb');
|
|
959
999
|
var type = String(asset.type || '').toLowerCase();
|
|
960
1000
|
if (type === 'image' && typeof asset.url === 'string' && asset.url !== '') {
|
|
@@ -972,7 +1012,7 @@ export function renderEditorShell(options) {
|
|
|
972
1012
|
thumb.appendChild(cached);
|
|
973
1013
|
} else {
|
|
974
1014
|
thumb.appendChild(el('span', '', glyphFor(asset.type)));
|
|
975
|
-
if (
|
|
1015
|
+
if (previewJobFor(asset) !== null) queuePreview(asset);
|
|
976
1016
|
}
|
|
977
1017
|
row.appendChild(thumb);
|
|
978
1018
|
|
|
@@ -1035,26 +1075,71 @@ export function renderEditorShell(options) {
|
|
|
1035
1075
|
}
|
|
1036
1076
|
|
|
1037
1077
|
/**
|
|
1038
|
-
* Ask the game to draw the thumbnails the cache is missing — one at a time, and
|
|
1078
|
+
* Ask the game to draw the thumbnails the cache is missing — one at a time, and at most twice for
|
|
1039
1079
|
* the same asset in one session.
|
|
1040
1080
|
*
|
|
1041
|
-
* Serial on purpose. Each render is a
|
|
1042
|
-
*
|
|
1043
|
-
*
|
|
1044
|
-
*
|
|
1081
|
+
* Serial on purpose. Each render is a fetch and a draw in the SAME renderer the creator is playing
|
|
1082
|
+
* in, and a forged city has hundreds of assets: firing them all at once would stutter the game to
|
|
1083
|
+
* decorate a side panel.
|
|
1084
|
+
*
|
|
1085
|
+
* Two rather than one attempt, and the second is not defensive padding. GENERATE_VOXEL_PREVIEW is
|
|
1086
|
+
* in the engine's REQUIRES_GAME_LOADED set (the GLB one is not), so a request arriving while a
|
|
1087
|
+
* game is loading is QUEUED and silently never answered. Marked attempted-once, that asset would
|
|
1088
|
+
* keep its glyph for the rest of the session; the retry costs one extra message and the cap keeps
|
|
1089
|
+
* a genuinely broken asset from asking forever.
|
|
1045
1090
|
*/
|
|
1091
|
+
var MAX_PREVIEW_ATTEMPTS = 2;
|
|
1046
1092
|
var previewQueue = [];
|
|
1047
|
-
var
|
|
1093
|
+
var previewAttempts = {};
|
|
1048
1094
|
var previewRunning = false;
|
|
1049
1095
|
var previewRequestId = 0;
|
|
1050
1096
|
|
|
1051
1097
|
function queuePreview(asset) {
|
|
1052
|
-
|
|
1053
|
-
|
|
1098
|
+
var attempts = previewAttempts[asset.id] || 0;
|
|
1099
|
+
if (attempts >= MAX_PREVIEW_ATTEMPTS) return;
|
|
1100
|
+
previewAttempts[asset.id] = attempts + 1;
|
|
1054
1101
|
previewQueue.push(asset);
|
|
1055
1102
|
void drainPreviewQueue();
|
|
1056
1103
|
}
|
|
1057
1104
|
|
|
1105
|
+
/**
|
|
1106
|
+
* Both preview messages use the FLAT envelope and both are answered by requestId, so neither can
|
|
1107
|
+
* go through the request() helper — it matches on type alone.
|
|
1108
|
+
*/
|
|
1109
|
+
function requestGlbPreview(url, requestId) {
|
|
1110
|
+
postFlat({ type: 'GENERATE_GLB_PREVIEW', requestId: requestId, glbUrl: url });
|
|
1111
|
+
return await_('GLB_PREVIEW_RESPONSE', 15000);
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
/**
|
|
1115
|
+
* The voxel counterpart, ported from the web Creator's useAssetsEditor.requestVoxelPreview.
|
|
1116
|
+
*
|
|
1117
|
+
* The bytes come through the sidecar rather than straight from the asset host: this message
|
|
1118
|
+
* carries the file itself, and a browser fetch would make voxel thumbnails depend on that host's
|
|
1119
|
+
* CORS headers — see /api/assets/source.
|
|
1120
|
+
*/
|
|
1121
|
+
async function requestVoxelPreview(url, requestId) {
|
|
1122
|
+
var bytes;
|
|
1123
|
+
try {
|
|
1124
|
+
var source = await fetch('/api/assets/source?url=' + encodeURIComponent(url));
|
|
1125
|
+
if (!source.ok) throw new Error('sidecar answered ' + source.status);
|
|
1126
|
+
bytes = new Uint8Array(await source.arrayBuffer());
|
|
1127
|
+
} catch (error) {
|
|
1128
|
+
// Worth a line: without one, an asset the sidecar cannot reach is a grey tile with no reason.
|
|
1129
|
+
console.warn('[bitmagic dev] no voxel preview for ' + url, error);
|
|
1130
|
+
return null;
|
|
1131
|
+
}
|
|
1132
|
+
postFlat({
|
|
1133
|
+
type: 'GENERATE_VOXEL_PREVIEW',
|
|
1134
|
+
requestId: requestId,
|
|
1135
|
+
// A plain number array, which is what the engine handler reads (new Uint8Array(data.vxlData)).
|
|
1136
|
+
// Not an ArrayBuffer: this page ships with the CLI and talks to whatever engine the project
|
|
1137
|
+
// has vendored, so the wire shape has to keep working against older ones.
|
|
1138
|
+
vxlData: Array.prototype.slice.call(bytes)
|
|
1139
|
+
});
|
|
1140
|
+
return await_('VOXEL_PREVIEW_RESPONSE', 15000);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1058
1143
|
async function drainPreviewQueue() {
|
|
1059
1144
|
if (previewRunning) return;
|
|
1060
1145
|
previewRunning = true;
|
|
@@ -1065,20 +1150,24 @@ export function renderEditorShell(options) {
|
|
|
1065
1150
|
// pass rather than being dropped — refreshAssets re-queues on every render.
|
|
1066
1151
|
if (!loaded) return;
|
|
1067
1152
|
var asset = previewQueue.shift();
|
|
1068
|
-
var
|
|
1069
|
-
if (
|
|
1153
|
+
var job = previewJobFor(asset);
|
|
1154
|
+
if (job === null) continue;
|
|
1070
1155
|
|
|
1071
1156
|
previewRequestId += 1;
|
|
1072
|
-
// Deliberately not the request() helper: this message uses the FLAT envelope, and the reply
|
|
1073
|
-
// has to be matched on requestId (below) rather than on type alone.
|
|
1074
1157
|
var requestId = 'preview-' + previewRequestId;
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
//
|
|
1080
|
-
|
|
1081
|
-
|
|
1158
|
+
var response = job.kind === 'vxl'
|
|
1159
|
+
? await requestVoxelPreview(job.url, requestId)
|
|
1160
|
+
: await requestGlbPreview(job.url, requestId);
|
|
1161
|
+
|
|
1162
|
+
// The requestId is verified rather than assumed: a late answer from a request that already
|
|
1163
|
+
// timed out would otherwise be cached under the NEXT asset's id, which is a wrong picture
|
|
1164
|
+
// rather than a missing one — much the worse failure.
|
|
1165
|
+
if (!response || response.requestId !== requestId || !response.success || !response.previewBase64) {
|
|
1166
|
+
// Back of the queue, behind everything else, and only while attempts remain. This is the
|
|
1167
|
+
// path a request swallowed by REQUIRES_GAME_LOADED takes.
|
|
1168
|
+
queuePreview(asset);
|
|
1169
|
+
continue;
|
|
1170
|
+
}
|
|
1082
1171
|
|
|
1083
1172
|
var saved = await (await fetch('/api/assets/preview', {
|
|
1084
1173
|
method: 'POST',
|
|
@@ -1126,6 +1215,196 @@ export function renderEditorShell(options) {
|
|
|
1126
1215
|
}, 1000);
|
|
1127
1216
|
}
|
|
1128
1217
|
|
|
1218
|
+
/**
|
|
1219
|
+
* The asset overlay — everything a 46px tile cannot show.
|
|
1220
|
+
*
|
|
1221
|
+
* The viewer itself is an iframe onto '/asset-preview', which the dev sidecar serves from this
|
|
1222
|
+
* same origin. It is not part of the game: the game keeps its own WebGL context in the frame
|
|
1223
|
+
* behind this dialog, and the two never share a renderer.
|
|
1224
|
+
*/
|
|
1225
|
+
var assetOverlay = document.getElementById('asset-overlay');
|
|
1226
|
+
var assetFrame = document.getElementById('asset-frame');
|
|
1227
|
+
var assetImage = document.getElementById('asset-image');
|
|
1228
|
+
var assetAudio = document.getElementById('asset-audio');
|
|
1229
|
+
var assetNote = document.getElementById('asset-note');
|
|
1230
|
+
var assetFacts = document.getElementById('asset-facts');
|
|
1231
|
+
var assetResetButton = document.getElementById('asset-reset');
|
|
1232
|
+
var assetPausedByOverlay = false;
|
|
1233
|
+
var assetReturnFocus = null;
|
|
1234
|
+
var assetLoadTimer = null;
|
|
1235
|
+
|
|
1236
|
+
var IMAGE_TYPES = { image: 1, skybox: 1 };
|
|
1237
|
+
var AUDIO_TYPES = { audio: 1, sound: 1, 'sound-effect': 1 };
|
|
1238
|
+
|
|
1239
|
+
/**
|
|
1240
|
+
* What the VIEWER should load — which is not always what the thumbnail drew.
|
|
1241
|
+
*
|
|
1242
|
+
* previewJobFor prefers a voxelized asset's GLB source, because one message with no fetch is the
|
|
1243
|
+
* cheaper way to fill a 46px tile. Here the creator has asked to look at a specific asset, so it
|
|
1244
|
+
* shows the asset: a .vxl is drawn as voxels even when the mesh it was baked from is on record.
|
|
1245
|
+
*/
|
|
1246
|
+
function detailJobFor(asset) {
|
|
1247
|
+
var url = asset.url;
|
|
1248
|
+
if (typeof url === 'string' && /\\.vxl(\\?|$)/i.test(url)) {
|
|
1249
|
+
if (typeof asset.size === 'number' && asset.size > MAX_VXL_PREVIEW_BYTES) return null;
|
|
1250
|
+
return { kind: 'vxl', url: url };
|
|
1251
|
+
}
|
|
1252
|
+
var glb = asset.sourceGlbUrl || url;
|
|
1253
|
+
if (typeof glb === 'string' && /\\.(glb|gltf)(\\?|$)/i.test(glb)) return { kind: 'glb', url: glb };
|
|
1254
|
+
return null;
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
function fact(term, value) {
|
|
1258
|
+
if (!value) return;
|
|
1259
|
+
assetFacts.appendChild(el('dt', '', term));
|
|
1260
|
+
assetFacts.appendChild(el('dd', term === 'Id' ? 'mono' : '', value));
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
/** Extent in world units, which is the number that says whether a prop is door-sized. */
|
|
1264
|
+
function dimensionsOf(asset) {
|
|
1265
|
+
var box = asset.boundingBox;
|
|
1266
|
+
if (!box || typeof box.minX !== 'number') return '';
|
|
1267
|
+
var round = function (n) { return Math.round(n * 10) / 10; };
|
|
1268
|
+
return round(box.maxX - box.minX) + ' × ' + round(box.maxY - box.minY) + ' × ' + round(box.maxZ - box.minZ);
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
function showAssetNote(text) {
|
|
1272
|
+
assetNote.textContent = text;
|
|
1273
|
+
assetNote.classList.remove('hidden');
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
function openAssetDetail(asset, hasPreview) {
|
|
1277
|
+
assetReturnFocus = document.activeElement;
|
|
1278
|
+
document.getElementById('asset-name').textContent = asset.name || asset.id || 'unnamed';
|
|
1279
|
+
document.getElementById('asset-sub').textContent =
|
|
1280
|
+
(asset.hqGeneratedAt ? 'High quality · ' : asset.placeholder === true ? 'Placeholder · ' : '')
|
|
1281
|
+
+ (asset.type || 'unknown');
|
|
1282
|
+
|
|
1283
|
+
assetFacts.textContent = '';
|
|
1284
|
+
fact('Size', formatSize(asset.size));
|
|
1285
|
+
fact('Extent', dimensionsOf(asset));
|
|
1286
|
+
fact('Voxels', typeof asset.voxelCount === 'number' ? String(asset.voxelCount) : '');
|
|
1287
|
+
fact('Id', asset.id || '');
|
|
1288
|
+
|
|
1289
|
+
assetNote.classList.add('hidden');
|
|
1290
|
+
assetFrame.classList.add('hidden');
|
|
1291
|
+
assetImage.classList.add('hidden');
|
|
1292
|
+
assetAudio.classList.add('hidden');
|
|
1293
|
+
assetResetButton.classList.add('hidden');
|
|
1294
|
+
if (assetLoadTimer) clearTimeout(assetLoadTimer);
|
|
1295
|
+
|
|
1296
|
+
var type = String(asset.type || '').toLowerCase();
|
|
1297
|
+
var job = detailJobFor(asset);
|
|
1298
|
+
|
|
1299
|
+
if (IMAGE_TYPES[type] === 1 && typeof asset.url === 'string' && asset.url !== '') {
|
|
1300
|
+
// An image is already the thing. Loading a 3D viewer to show a picture would be theatre.
|
|
1301
|
+
assetImage.src = asset.url;
|
|
1302
|
+
assetImage.classList.remove('hidden');
|
|
1303
|
+
} else if (AUDIO_TYPES[type] === 1 && typeof asset.url === 'string' && asset.url !== '') {
|
|
1304
|
+
assetAudio.src = asset.url;
|
|
1305
|
+
assetAudio.classList.remove('hidden');
|
|
1306
|
+
} else if (job !== null) {
|
|
1307
|
+
assetResetButton.classList.remove('hidden');
|
|
1308
|
+
assetFrame.classList.remove('hidden');
|
|
1309
|
+
assetFrame.src = '/asset-preview?kind=' + job.kind + '&url=' + encodeURIComponent(job.url);
|
|
1310
|
+
// Not a deadline for the load — a big mesh over a slow CDN legitimately takes a while, and
|
|
1311
|
+
// replacing a working viewer with an apology would be worse than waiting. This only speaks
|
|
1312
|
+
// when the page has said nothing at all, which is what a module graph that failed to load
|
|
1313
|
+
// looks like: the page's own catch reports every error it can see, and cannot report that.
|
|
1314
|
+
assetLoadTimer = setTimeout(function () {
|
|
1315
|
+
showAssetNote('Still loading. If this does not clear, check the dev server output.');
|
|
1316
|
+
}, 12000);
|
|
1317
|
+
} else {
|
|
1318
|
+
showAssetThumbnailFallback(asset, hasPreview,
|
|
1319
|
+
'There is nothing to draw for this asset type — it has no mesh and no picture.');
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
assetOverlay.classList.add('show');
|
|
1323
|
+
document.getElementById('asset-close').focus();
|
|
1324
|
+
|
|
1325
|
+
// The game is a WebGL context and a physics step running behind a dialog nobody is looking at.
|
|
1326
|
+
// The Editor tab is already paused by applyTab, so this only fires on the Game tab.
|
|
1327
|
+
if (activeTab === 'game' && gameState === 'playing') {
|
|
1328
|
+
post('SET_PAUSE', { paused: true });
|
|
1329
|
+
assetPausedByOverlay = true;
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
/** When the viewer cannot show it, show the tile that was already rendered, and say why. */
|
|
1334
|
+
function showAssetThumbnailFallback(asset, hasPreview, reason) {
|
|
1335
|
+
assetFrame.classList.add('hidden');
|
|
1336
|
+
assetResetButton.classList.add('hidden');
|
|
1337
|
+
if (hasPreview) {
|
|
1338
|
+
assetImage.src = '/api/assets/preview/' + encodeURIComponent(asset.id) + '.png';
|
|
1339
|
+
assetImage.classList.remove('hidden');
|
|
1340
|
+
}
|
|
1341
|
+
showAssetNote(reason);
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
function closeAssetDetail() {
|
|
1345
|
+
if (!assetOverlay.classList.contains('show')) return false;
|
|
1346
|
+
assetOverlay.classList.remove('show');
|
|
1347
|
+
if (assetLoadTimer) clearTimeout(assetLoadTimer);
|
|
1348
|
+
// about:blank rather than hiding it: an idle iframe would hold a WebGL context and a render
|
|
1349
|
+
// loop for the rest of the session, next to the game that needs both.
|
|
1350
|
+
assetFrame.src = 'about:blank';
|
|
1351
|
+
assetImage.removeAttribute('src');
|
|
1352
|
+
assetAudio.pause();
|
|
1353
|
+
assetAudio.removeAttribute('src');
|
|
1354
|
+
if (assetPausedByOverlay) {
|
|
1355
|
+
post('SET_PAUSE', { paused: false });
|
|
1356
|
+
assetPausedByOverlay = false;
|
|
1357
|
+
}
|
|
1358
|
+
if (assetReturnFocus && assetReturnFocus.focus) assetReturnFocus.focus();
|
|
1359
|
+
assetReturnFocus = null;
|
|
1360
|
+
return true;
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
/**
|
|
1364
|
+
* Replies from the preview iframe, matched by SOURCE rather than by type.
|
|
1365
|
+
*
|
|
1366
|
+
* The message listener below resolves its waiters on type alone, so a second sender on this
|
|
1367
|
+
* window could answer a request meant for the game. Today their vocabularies do not overlap;
|
|
1368
|
+
* this is what keeps that from being a silent bug the day one of them gains a name the other
|
|
1369
|
+
* already uses.
|
|
1370
|
+
*/
|
|
1371
|
+
function onAssetPreviewMessage(message) {
|
|
1372
|
+
if (message.type === 'ASSET_PREVIEW_READY') {
|
|
1373
|
+
if (assetLoadTimer) clearTimeout(assetLoadTimer);
|
|
1374
|
+
assetNote.classList.add('hidden');
|
|
1375
|
+
if (typeof message.triangles === 'number' && message.triangles > 0) {
|
|
1376
|
+
fact('Triangles', message.triangles.toLocaleString());
|
|
1377
|
+
}
|
|
1378
|
+
} else if (message.type === 'ASSET_PREVIEW_FAILED') {
|
|
1379
|
+
if (assetLoadTimer) clearTimeout(assetLoadTimer);
|
|
1380
|
+
assetFrame.src = 'about:blank';
|
|
1381
|
+
showAssetNote(message.error || 'The preview could not be loaded.');
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
assetResetButton.addEventListener('click', function () {
|
|
1386
|
+
if (assetFrame.contentWindow) {
|
|
1387
|
+
assetFrame.contentWindow.postMessage({ type: 'RESET_VIEW' }, window.location.origin);
|
|
1388
|
+
}
|
|
1389
|
+
});
|
|
1390
|
+
document.getElementById('asset-copy').addEventListener('click', function () {
|
|
1391
|
+
var id = assetFacts.querySelector('dd.mono');
|
|
1392
|
+
if (id && navigator.clipboard) void navigator.clipboard.writeText(id.textContent);
|
|
1393
|
+
});
|
|
1394
|
+
document.getElementById('asset-close').addEventListener('click', closeAssetDetail);
|
|
1395
|
+
assetOverlay.addEventListener('mousedown', function (event) {
|
|
1396
|
+
// mousedown, not click: a drag that starts inside the viewer and ends on the backdrop is a
|
|
1397
|
+
// creator turning the model, not a creator dismissing the dialog.
|
|
1398
|
+
if (event.target === assetOverlay) closeAssetDetail();
|
|
1399
|
+
});
|
|
1400
|
+
|
|
1401
|
+
// The page had no keyboard handling at all before this, so #hq-overlay gains Escape with it.
|
|
1402
|
+
document.addEventListener('keydown', function (event) {
|
|
1403
|
+
if (event.key !== 'Escape') return;
|
|
1404
|
+
if (closeAssetDetail()) return;
|
|
1405
|
+
hqOverlay.classList.remove('show');
|
|
1406
|
+
});
|
|
1407
|
+
|
|
1129
1408
|
/**
|
|
1130
1409
|
* Lend the cached thumbnails to the engine's own asset palette.
|
|
1131
1410
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-page.js","sourceRoot":"","sources":["../../src/editor/shell-page.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,oGAAoG;AACpG,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,kGAAkG;AAClG,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AASD,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,OAAO,GAAG,oBAAoB,OAAO,CAAC,QAAQ,2BAA2B,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACpH,OAAO;;;;wBAIe,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"shell-page.js","sourceRoot":"","sources":["../../src/editor/shell-page.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,oGAAoG;AACpG,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,kGAAkG;AAClG,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AASD,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,OAAO,GAAG,oBAAoB,OAAO,CAAC,QAAQ,2BAA2B,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACpH,OAAO;;;;wBAIe,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2GhD,gBAAgB;;;;;;uBAMK,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqD/C,iBAAiB;;;;mBAIA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;kBACxB,gBAAgB;yBACT,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAk4C7C,CAAC;AACF,CAAC"}
|
|
@@ -17,6 +17,12 @@ export declare const DEPENDENCIES: {
|
|
|
17
17
|
three: string;
|
|
18
18
|
};
|
|
19
19
|
export declare const DEV_DEPENDENCIES: Record<string, string>;
|
|
20
|
+
/** Resolved in the browser from a CDN, not from node_modules — see the design's import-map note. */
|
|
21
|
+
/**
|
|
22
|
+
* Exported so the dev view's asset-preview page builds its map from this one definition rather
|
|
23
|
+
* than a sixth hand-typed copy. See `editor/asset-preview-page.ts`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const CDN_IMPORTS: Record<string, string>;
|
|
20
26
|
export declare function renderPackageJson(name: string): string;
|
|
21
27
|
export declare function renderTsconfig(): string;
|
|
22
28
|
export declare function renderIndexHtml(): string;
|
|
@@ -71,7 +71,11 @@ const THREE_SHIM = [
|
|
|
71
71
|
`export{UniformsLib}from'https://esm.sh/three@${THREE_VERSION}/src/renderers/shaders/UniformsLib.js'`,
|
|
72
72
|
].join('');
|
|
73
73
|
/** Resolved in the browser from a CDN, not from node_modules — see the design's import-map note. */
|
|
74
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Exported so the dev view's asset-preview page builds its map from this one definition rather
|
|
76
|
+
* than a sixth hand-typed copy. See `editor/asset-preview-page.ts`.
|
|
77
|
+
*/
|
|
78
|
+
export const CDN_IMPORTS = {
|
|
75
79
|
// `three` and `three/webgpu` are ONE module instance (see THREE_SHIM). Pointed at separate
|
|
76
80
|
// builds (core + webgpu) they are two, and r185's LightsNode then fails to recognise lights
|
|
77
81
|
// built by the other instance — the scene renders unlit. Keep in step with game/index.html.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,2BAA2B,EAAE,SAAS;IACtC,2BAA2B,EAAE,SAAS;IACtC,kBAAkB,EAAE,QAAQ;IAC5B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,kCAAkC,EAAE,QAAQ;IAC5C,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;IACjB,4FAA4F;IAC5F,6FAA6F;IAC7F,4CAA4C;CACZ,CAAC;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,UAAU;IAC1B,8FAA8F;IAC9F,cAAc,EAAE,QAAQ;IACxB,4FAA4F;IAC5F,mFAAmF;IACnF,eAAe,EAAE,SAAS;IAC1B,UAAU,EAAE,QAAQ;IACpB,IAAI,EAAE,QAAQ;IACd,wBAAwB,EAAE,QAAQ;CACnC,CAAC;AAEF,qEAAqE;AACrE,SAAS,aAAa,CAAC,IAA+B;IACpD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAC,IAA+B;IAC7C,OAAO,kBAAkB,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,UAAU,GAAG;IACjB,uBAAuB;IACvB,oCAAoC,aAAa,WAAW;IAC5D,kDAAkD,aAAa,2CAA2C;IAC1G,8CAA8C,aAAa,uCAAuC;IAClG,gDAAgD,aAAa,wCAAwC;CACtG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEX,oGAAoG;AACpG,MAAM,WAAW,GAA2B;
|
|
1
|
+
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
|
package/dist/verify/browser.js
CHANGED
|
@@ -4,6 +4,7 @@ import { browserGlArgs } from '../browser-gl.js';
|
|
|
4
4
|
import { CliError } from '../errors.js';
|
|
5
5
|
import { RESPAWN_LINE, } from './classify.js';
|
|
6
6
|
import { DEFAULT_SETTLE_CONFIG, SETTLE_POLL_MS, isFreefalling, settleVerdict, } from './settle.js';
|
|
7
|
+
import { deriveEventsObservation } from './events.js';
|
|
7
8
|
export const DEFAULT_START_INTERACTION = {
|
|
8
9
|
playButtonSelector: '#play-button, .hud-play-button',
|
|
9
10
|
startedConsoleMarker: '🎮 Starting game...',
|
|
@@ -157,6 +158,9 @@ export class VerifyBrowserSession {
|
|
|
157
158
|
const snapshot = options.startInteraction === undefined || target === null
|
|
158
159
|
? undefined
|
|
159
160
|
: await captureStateSnapshot(target, settleSamples);
|
|
161
|
+
const events = options.startInteraction === undefined || target === null
|
|
162
|
+
? undefined
|
|
163
|
+
: deriveEventsObservation(await captureEventTrace(target));
|
|
160
164
|
let start;
|
|
161
165
|
if (options.startInteraction !== undefined && interaction !== null) {
|
|
162
166
|
start = {
|
|
@@ -178,6 +182,7 @@ export class VerifyBrowserSession {
|
|
|
178
182
|
renderer,
|
|
179
183
|
snapshot,
|
|
180
184
|
settle,
|
|
185
|
+
events,
|
|
181
186
|
};
|
|
182
187
|
}
|
|
183
188
|
finally {
|
|
@@ -380,6 +385,31 @@ function measureFps(samples) {
|
|
|
380
385
|
return 0;
|
|
381
386
|
return Math.max(1, Math.round((frames * 1000) / intervalMs));
|
|
382
387
|
}
|
|
388
|
+
/**
|
|
389
|
+
* The engine's semantic event trace, read from the `window.__bmDebug` namespace the engine
|
|
390
|
+
* installs when it has one. Same contract as every other probe here: feature-detected, wrapped
|
|
391
|
+
* in try/catch on both sides of the evaluate, null = "not observed" (an older vendored engine
|
|
392
|
+
* without the namespace, or a page too broken to answer) — never a failure by itself.
|
|
393
|
+
*/
|
|
394
|
+
async function captureEventTrace(target) {
|
|
395
|
+
try {
|
|
396
|
+
return await target.evaluate(() => {
|
|
397
|
+
/* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
|
|
398
|
+
try {
|
|
399
|
+
const w = window;
|
|
400
|
+
const debug = w.__bmDebug;
|
|
401
|
+
return debug?.getEvents?.() ?? null;
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
return null;
|
|
405
|
+
}
|
|
406
|
+
/* eslint-enable no-undef */
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
catch {
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
383
413
|
/**
|
|
384
414
|
* What renderer class the engine constructed and what backend is actually driving the canvas,
|
|
385
415
|
* read from the live engine through the debug handle `GameTemplate` installs on `window`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/verify/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/verify/browser.ts"],"names":[],"mappings":"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"}
|