@fps-games/editor 0.1.7-beta.4 → 0.1.8-beta.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.
Files changed (127) hide show
  1. package/dist/agent-bridge/capabilities/assets.d.ts.map +1 -1
  2. package/dist/agent-bridge/capabilities/assets.js +12 -7
  3. package/dist/agent-bridge/capabilities/assets.js.map +1 -1
  4. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts +1 -1
  5. package/dist/agent-bridge/capabilities/host-lifecycle.d.ts.map +1 -1
  6. package/dist/agent-bridge/capabilities/host-lifecycle.js +4 -2
  7. package/dist/agent-bridge/capabilities/host-lifecycle.js.map +1 -1
  8. package/dist/agent-bridge/capabilities/prefabs.js +50 -0
  9. package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
  10. package/dist/agent-bridge/capability-sources.d.ts.map +1 -1
  11. package/dist/agent-bridge/capability-sources.js +4 -1
  12. package/dist/agent-bridge/capability-sources.js.map +1 -1
  13. package/dist/build-info.json +15 -15
  14. package/dist/index.d.ts +5 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +7 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/local-editor-harness.d.ts +4 -0
  19. package/dist/local-editor-harness.d.ts.map +1 -1
  20. package/dist/local-editor-harness.js +146 -54
  21. package/dist/local-editor-harness.js.map +1 -1
  22. package/dist/local-editor-performance-stats.d.ts.map +1 -1
  23. package/dist/local-editor-performance-stats.js +7 -0
  24. package/dist/local-editor-performance-stats.js.map +1 -1
  25. package/dist/playable-local-editor-host.d.ts +5 -1
  26. package/dist/playable-local-editor-host.d.ts.map +1 -1
  27. package/dist/playable-local-editor-host.js +75 -1
  28. package/dist/playable-local-editor-host.js.map +1 -1
  29. package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
  30. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.d.ts +2 -0
  31. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.d.ts.map +1 -1
  32. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js +1 -0
  33. package/node_modules/@fps-games/editor-babylon/dist/inspector-host.js.map +1 -1
  34. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts +6 -2
  35. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts.map +1 -1
  36. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js +94 -24
  37. package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
  38. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts +6 -2
  39. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -1
  40. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +7 -0
  41. package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
  42. package/node_modules/@fps-games/editor-babylon/dist/monitor.d.ts +2 -0
  43. package/node_modules/@fps-games/editor-babylon/dist/monitor.d.ts.map +1 -1
  44. package/node_modules/@fps-games/editor-babylon/dist/monitor.js +2 -0
  45. package/node_modules/@fps-games/editor-babylon/dist/monitor.js.map +1 -1
  46. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.d.ts +14 -0
  47. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.d.ts.map +1 -1
  48. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.js +121 -2
  49. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.js.map +1 -1
  50. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +1 -5
  51. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
  52. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +19 -0
  53. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  54. package/node_modules/@fps-games/editor-babylon/dist/projection.js +882 -43
  55. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  56. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  57. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +96 -35
  58. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  59. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  60. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +3 -1
  61. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  62. package/node_modules/@fps-games/editor-browser/dist/index.js +1 -0
  63. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  64. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts +26 -0
  65. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts.map +1 -0
  66. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js +187 -0
  67. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -0
  68. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  69. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +102 -2
  70. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  71. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +17 -0
  72. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  73. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  74. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +84 -0
  75. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  76. package/node_modules/@fps-games/editor-browser/package.json +3 -3
  77. package/node_modules/@fps-games/editor-core/package.json +2 -2
  78. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  79. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +198 -53
  80. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
  81. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +4 -1
  82. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  83. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  84. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +89 -9
  85. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  86. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +4 -1
  87. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
  88. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +60 -5
  89. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
  90. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +1 -1
  91. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  92. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  93. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
  94. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +62 -2
  95. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
  96. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +27 -0
  97. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
  98. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
  99. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +29 -0
  100. package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
  101. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  102. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +34 -1
  103. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  104. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +6 -2
  105. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
  106. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.d.ts.map +1 -1
  107. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js +57 -3
  108. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
  109. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +30 -0
  110. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  111. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.d.ts.map +1 -1
  112. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js +18 -2
  113. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
  114. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts +1 -0
  115. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
  116. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +1 -0
  117. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  118. package/node_modules/@fps-games/editor-playable-sdk/package.json +3 -3
  119. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +13 -0
  120. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -1
  121. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +29 -0
  122. package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
  123. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +6 -1
  124. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  125. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  126. package/node_modules/@fps-games/editor-protocol/package.json +1 -1
  127. package/package.json +8 -8
@@ -189,6 +189,73 @@ export function installPlayableForgePlayModeBridge(options) {
189
189
  const postEvent = (name, payload = {}) => {
190
190
  postPlayableForgePlayEvent(options.window, name, payload);
191
191
  };
192
+ const notifySaveFailed = async (operation, error) => {
193
+ const notify = options.interactions?.notifySaveFailed;
194
+ if (!notify)
195
+ return;
196
+ let state;
197
+ try {
198
+ state = options.harness.getSaveFailureState?.();
199
+ }
200
+ catch (stateError) {
201
+ console.error('[PlayableForgePlayBridge] save failure state unavailable', stateError);
202
+ }
203
+ const input = {
204
+ operation,
205
+ status: state?.status ?? (error instanceof Error ? error.message : undefined),
206
+ details: state?.details,
207
+ error: error ?? state?.error,
208
+ };
209
+ try {
210
+ await notify(input);
211
+ }
212
+ catch (notifyError) {
213
+ console.error('[PlayableForgePlayBridge] save failure notification failed', notifyError);
214
+ }
215
+ };
216
+ const saveScene = async (operation) => {
217
+ try {
218
+ const saved = await options.harness.saveScene();
219
+ if (!saved)
220
+ await notifySaveFailed(operation);
221
+ return saved;
222
+ }
223
+ catch (error) {
224
+ await notifySaveFailed(operation, error);
225
+ throw error;
226
+ }
227
+ };
228
+ const readUnsavedChangesState = () => {
229
+ const fallbackHasWorkingDocument = options.harness.getWorkingDocument() !== null;
230
+ try {
231
+ return options.harness.getUnsavedChangesState?.() ?? {
232
+ dirty: false,
233
+ hasWorkingDocument: fallbackHasWorkingDocument,
234
+ };
235
+ }
236
+ catch (error) {
237
+ console.error('[PlayableForgePlayBridge] unsaved changes state unavailable', error);
238
+ return {
239
+ dirty: false,
240
+ hasWorkingDocument: fallbackHasWorkingDocument,
241
+ };
242
+ }
243
+ };
244
+ const confirmDiscardIfNeeded = async (operation) => {
245
+ const unsavedChanges = readUnsavedChangesState();
246
+ if (!unsavedChanges.dirty || !unsavedChanges.hasWorkingDocument)
247
+ return true;
248
+ try {
249
+ return await options.interactions?.confirmDiscardUnsavedChanges?.({
250
+ operation,
251
+ unsavedChanges,
252
+ }) !== false;
253
+ }
254
+ catch (error) {
255
+ console.error('[PlayableForgePlayBridge] discard confirmation failed', error);
256
+ return false;
257
+ }
258
+ };
192
259
  const clearOverlayHideTimer = () => {
193
260
  if (overlayHideTimer == null)
194
261
  return;
@@ -203,8 +270,7 @@ export function installPlayableForgePlayModeBridge(options) {
203
270
  clearOverlayHideTimer();
204
271
  overlayHideTimer = options.window.setTimeout(() => {
205
272
  overlayHideTimer = null;
206
- if (currentMode === 'edit')
207
- options.loadingOverlay.hide();
273
+ options.loadingOverlay.hide();
208
274
  }, overlayHideDelayMs);
209
275
  };
210
276
  const reportModeChangeError = (error, fallbackMode) => {
@@ -236,6 +302,14 @@ export function installPlayableForgePlayModeBridge(options) {
236
302
  return;
237
303
  }
238
304
  inFlight = (async () => {
305
+ if (mode === 'play' && switchOptions.save !== true && shouldRunExit()) {
306
+ const confirmed = await confirmDiscardIfNeeded('forge-play-mode-change');
307
+ if (!confirmed) {
308
+ currentMode = 'edit';
309
+ postEvent(PLAYABLE_FORGE_PLAY_EVENT.MODE_CHANGE, { mode: 'edit' });
310
+ return;
311
+ }
312
+ }
239
313
  if (exitLoadingContent) {
240
314
  showSaveOverlay(exitLoadingContent);
241
315
  await waitForPaint();
@@ -255,16 +329,19 @@ export function installPlayableForgePlayModeBridge(options) {
255
329
  && saveState.preparedRevision === saveState.committedRevision
256
330
  && options.hasUnsavedPlatformChanges?.() !== true;
257
331
  if (!platformCommitAlreadySaved) {
258
- const saved = await options.harness.saveScene();
332
+ const saved = await saveScene('forge-play-mode-change');
259
333
  if (!saved) {
260
334
  if (exitLoadingContent)
261
335
  options.loadingOverlay.hide();
262
- reportModeChangeError(new Error('save_failed'), 'edit');
336
+ currentMode = 'edit';
337
+ postEvent(PLAYABLE_FORGE_PLAY_EVENT.MODE_CHANGE, { mode: 'edit' });
263
338
  return;
264
339
  }
265
340
  }
266
341
  }
267
342
  await options.harness.discardAndRunGame();
343
+ if (exitLoadingContent)
344
+ options.loadingOverlay.hide();
268
345
  currentMode = 'play';
269
346
  postEvent(PLAYABLE_FORGE_PLAY_EVENT.MODE_CHANGE, { mode: 'play' });
270
347
  }
@@ -285,9 +362,10 @@ export function installPlayableForgePlayModeBridge(options) {
285
362
  if (inFlight)
286
363
  await inFlight;
287
364
  inFlight = (async () => {
288
- const saved = await options.harness.saveScene();
365
+ const originalMode = currentMode;
366
+ const saved = await saveScene('forge-play-document-commit');
289
367
  if (!saved) {
290
- reportModeChangeError(new Error('save_failed'), 'edit');
368
+ postEvent(PLAYABLE_FORGE_PLAY_EVENT.MODE_CHANGE, { mode: originalMode });
291
369
  return;
292
370
  }
293
371
  if (saveState.preparedRevision > 0) {
@@ -353,11 +431,13 @@ export function installPlayableForgePlayModeBridge(options) {
353
431
  }
354
432
  if (commandName === PLAYABLE_FORGE_PLAY_COMMAND.DOCUMENT_EXPORT) {
355
433
  showSaveOverlay(options.loadingContent.saveScene);
356
- const exported = options.exportDocument
357
- ? options.exportDocument({ payload, saveState, postEvent })
434
+ const exportDocument = options.exportDocument;
435
+ const exported = exportDocument
436
+ ? Promise.resolve().then(() => exportDocument({ payload, saveState, postEvent }))
358
437
  : Promise.resolve();
359
- void exported.catch((error) => {
438
+ void exported.catch(async (error) => {
360
439
  options.loadingOverlay.hide();
440
+ await notifySaveFailed('forge-play-document-export', error);
361
441
  postEvent(PLAYABLE_FORGE_PLAY_EVENT.DOCUMENT_EXPORTED, {
362
442
  ...(readPlayableForgePlayRequestId(payload) ? { requestId: readPlayableForgePlayRequestId(payload) } : {}),
363
443
  error: error instanceof Error ? error.message : String(error),
@@ -1 +1 @@
1
- {"version":3,"file":"forge-play.js","sourceRoot":"","sources":["../../src/local-harness/forge-play.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forge-play.js","sourceRoot":"","sources":["../../src/local-harness/forge-play.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { PlayableForgePlayBridgeInstallOptions, PlayableForgePlayModeBridge, PlayableForgePlaySaveState, PlayableForgePlayWindowLike } from './forge-play-types';
2
- import type { PlayableLocalEditorLifecycleContent, PlayableLocalEditorLifecycleController, PlayableLocalEditorLifecycleHarness, PlayableLocalEditorLoadingOverlayContent, PlayableLocalEditorLoadingOverlayController } from './types';
2
+ import type { PlayableLocalEditorLifecycleContent, PlayableLocalEditorLifecycleController, PlayableLocalEditorLifecycleHarness, PlayableLocalEditorInteractionPolicy, PlayableLocalEditorLoadingOverlayContent, PlayableLocalEditorLoadingOverlayController } from './types';
3
3
  export interface PlayableLocalEditorHostHarness extends PlayableLocalEditorLifecycleHarness {
4
4
  getWorkingDocument(): unknown | null;
5
5
  }
@@ -27,6 +27,8 @@ export interface PlayableLocalEditorHostControllerOptions<THarness extends Playa
27
27
  now?: () => number;
28
28
  minAssetLoadingOverlayMs?: number;
29
29
  viewportRevealReason?: string;
30
+ renderAfterEnter?: boolean;
31
+ interactions?: PlayableLocalEditorInteractionPolicy;
30
32
  forgePlay?: {
31
33
  enabled?: boolean;
32
34
  window?: PlayableForgePlayWindowLike;
@@ -49,6 +51,7 @@ export interface PlayableLocalEditorHostController<THarness extends PlayableLoca
49
51
  lifecycle: PlayableLocalEditorLifecycleController;
50
52
  getBridge(): PlayableForgePlayModeBridge | null;
51
53
  enterEditor(): Promise<void>;
54
+ saveScene(): Promise<boolean>;
52
55
  saveAndRunGame(): Promise<boolean>;
53
56
  discardAndRunGame(): Promise<void>;
54
57
  runWithAssetLoadingOverlay<T>(operation: () => Promise<T>): Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"host-controller.d.ts","sourceRoot":"","sources":["../../src/local-harness/host-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-controller.d.ts","sourceRoot":"","sources":["../../src/local-harness/host-controller.ts"],"names":[],"mappings":"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"}
@@ -3,18 +3,24 @@ import { createPlayableLocalEditorLifecycleController, } from './lifecycle.js';
3
3
  export function createPlayableLocalEditorHostController(options) {
4
4
  let bridge = null;
5
5
  let disposed = false;
6
+ const loadingOverlay = createScopedLoadingOverlay(options.loadingOverlay);
7
+ const lifecycleLoadingOverlay = loadingOverlay.createScope();
8
+ const forgePlayLoadingOverlay = loadingOverlay.createScope();
6
9
  const harness = createDiscardHookHarness(options.harness, options.beforeDiscardAndRunGame);
7
10
  const lifecycle = createPlayableLocalEditorLifecycleController({
8
11
  harness,
9
- loadingOverlay: options.loadingOverlay,
12
+ loadingOverlay: lifecycleLoadingOverlay,
10
13
  content: options.loadingContent,
14
+ interactions: options.interactions,
11
15
  waitForPaint: options.waitForPaint,
12
16
  waitForMilliseconds: options.waitForMilliseconds,
13
17
  now: options.now,
14
18
  minAssetLoadingOverlayMs: options.minAssetLoadingOverlayMs,
15
19
  viewportRevealReason: options.viewportRevealReason,
20
+ renderAfterEnter: options.renderAfterEnter,
16
21
  });
17
22
  const runWithAssetLoadingOverlay = (operation) => (lifecycle.runWithAssetLoadingOverlay(operation));
23
+ const lifecycleHarness = createLifecycleHarness(harness, lifecycle);
18
24
  const ensureEditorMode = async () => {
19
25
  if (!bridge || bridge.getMode() === 'edit')
20
26
  return;
@@ -29,7 +35,7 @@ export function createPlayableLocalEditorHostController(options) {
29
35
  const createBridgeContext = (name, payload) => ({
30
36
  name,
31
37
  payload,
32
- harness,
38
+ harness: lifecycleHarness,
33
39
  ensureEditorMode,
34
40
  runWithAssetLoadingOverlay,
35
41
  postEvent,
@@ -39,7 +45,7 @@ export function createPlayableLocalEditorHostController(options) {
39
45
  bridge = installPlayableForgePlayModeBridge({
40
46
  window: options.forgePlay.window,
41
47
  harness,
42
- loadingOverlay: options.loadingOverlay,
48
+ loadingOverlay: forgePlayLoadingOverlay,
43
49
  loadingContent: {
44
50
  saveScene: options.loadingContent.saveScene,
45
51
  saveAndRunGame: options.loadingContent.saveAndRunGame,
@@ -50,6 +56,7 @@ export function createPlayableLocalEditorHostController(options) {
50
56
  waitForPaint: options.waitForPaint,
51
57
  hasUnsavedPlatformChanges: options.forgePlay.hasUnsavedPlatformChanges,
52
58
  reportError: options.forgePlay.reportError,
59
+ interactions: options.interactions,
53
60
  handleAssetDrop: options.forgePlay.handleAssetDrop
54
61
  ? payload => {
55
62
  options.forgePlay?.handleAssetDrop?.(payload, createBridgeContext('', payload));
@@ -73,12 +80,13 @@ export function createPlayableLocalEditorHostController(options) {
73
80
  });
74
81
  }
75
82
  return {
76
- harness,
83
+ harness: lifecycleHarness,
77
84
  lifecycle,
78
85
  getBridge() {
79
86
  return bridge;
80
87
  },
81
88
  enterEditor: lifecycle.enterEditor,
89
+ saveScene: () => lifecycle.saveScene('save-scene'),
82
90
  saveAndRunGame: lifecycle.saveAndRunGame,
83
91
  discardAndRunGame: lifecycle.discardAndRunGame,
84
92
  runWithAssetLoadingOverlay,
@@ -88,7 +96,54 @@ export function createPlayableLocalEditorHostController(options) {
88
96
  disposed = true;
89
97
  bridge?.dispose();
90
98
  bridge = null;
91
- options.loadingOverlay.dispose?.();
99
+ loadingOverlay.dispose();
100
+ },
101
+ };
102
+ }
103
+ function createLifecycleHarness(harness, lifecycle) {
104
+ const enterEditor = lifecycle.enterEditor;
105
+ const saveScene = () => lifecycle.saveScene('save-scene');
106
+ const saveAndRunGame = lifecycle.saveAndRunGame;
107
+ const discardAndRunGame = lifecycle.discardAndRunGame;
108
+ return new Proxy(harness, {
109
+ get(target, property) {
110
+ if (property === 'enterEditor')
111
+ return enterEditor;
112
+ if (property === 'saveScene')
113
+ return saveScene;
114
+ if (property === 'saveAndRunGame')
115
+ return saveAndRunGame;
116
+ if (property === 'discardAndRunGame')
117
+ return discardAndRunGame;
118
+ const value = Reflect.get(target, property, target);
119
+ return typeof value === 'function' ? value.bind(target) : value;
120
+ },
121
+ });
122
+ }
123
+ function createScopedLoadingOverlay(loadingOverlay) {
124
+ let owner = null;
125
+ return {
126
+ createScope() {
127
+ const scopeOwner = Symbol('playable-local-editor-loading-overlay-scope');
128
+ return {
129
+ show(content) {
130
+ owner = scopeOwner;
131
+ loadingOverlay.show(content);
132
+ },
133
+ hide() {
134
+ if (owner !== scopeOwner)
135
+ return;
136
+ owner = null;
137
+ loadingOverlay.hide();
138
+ },
139
+ isVisible() {
140
+ return loadingOverlay.isVisible();
141
+ },
142
+ };
143
+ },
144
+ dispose() {
145
+ owner = null;
146
+ loadingOverlay.dispose?.();
92
147
  },
93
148
  };
94
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"host-controller.js","sourceRoot":"","sources":["../../src/local-harness/host-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAOtB,OAAO,EACL,4CAA4C,GAC7C,MAAM,aAAa,CAAC;AAiFrB,MAAM,UAAU,uCAAuC,CAGrD,OAA2D;IAE3D,IAAI,MAAM,GAAuC,IAAI,CAAC;IACtD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,wBAAwB,CACtC,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,uBAAuB,CAChC,CAAC;IAEF,MAAM,SAAS,GAAG,4CAA4C,CAAC;QAC7D,OAAO;QACP,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,OAAO,EAAE,OAAO,CAAC,cAAc;QAC/B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;QAC1D,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;KACnD,CAAC,CAAC;IAEH,MAAM,0BAA0B,GAAG,CAAI,SAA2B,EAAc,EAAE,CAAC,CACjF,SAAS,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAChD,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,IAAmB,EAAE;QACjD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,MAAM;YAAE,OAAO;QACnD,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,UAAmC,EAAE,EAAQ,EAAE;QAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7C,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,0BAA0B,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAC1B,IAAY,EACZ,OAAgC,EACgB,EAAE,CAAC,CAAC;QACpD,IAAI;QACJ,OAAO;QACP,OAAO;QACP,gBAAgB;QAChB,0BAA0B;QAC1B,SAAS;QACT,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;KACxB,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK,IAAI,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACtE,MAAM,GAAG,kCAAkC,CAAC;YAC1C,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM;YAChC,OAAO;YACP,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,cAAc,EAAE;gBACd,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,SAAS;gBAC3C,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc;gBACrD,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,iBAAiB;aAC5D;YACD,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW;YAC1C,kBAAkB,EAAE,OAAO,CAAC,SAAS,CAAC,kBAAkB;YACxD,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,yBAAyB,EAAE,OAAO,CAAC,SAAS,CAAC,yBAAyB;YACtE,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW;YAC1C,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,eAAe;gBAChD,CAAC,CAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClF,CAAC;gBACD,CAAC,CAAC,SAAS;YACb,yBAAyB,EAAE,OAAO,CAAC,SAAS,CAAC,yBAAyB;gBACpE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACxB,MAAM,OAAO,CAAC,SAAS,EAAE,yBAAyB,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC3F,CAAC;gBACD,CAAC,CAAC,SAAS;YACb,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,cAAc;gBAC9C,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE;oBAC7D,MAAM,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC;wBACxC,OAAO;wBACP,SAAS;wBACT,SAAS,EAAE,eAAe;wBAC1B,OAAO,EAAE,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC;qBAC1C,CAAC,CAAC;gBACL,CAAC;gBACD,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO;QACP,SAAS;QACT,SAAS;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;QAC9C,0BAA0B;QAC1B,OAAO;YACL,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,EAAE,OAAO,EAAE,CAAC;YAClB,MAAM,GAAG,IAAI,CAAC;YACd,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAG/B,OAAiB,EACjB,uBAAiE;IAEjE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,KAAK,IAAmB,EAAE;QAClD,MAAM,uBAAuB,EAAE,EAAE,CAAC;QAClC,MAAM,oBAAoB,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,QAAQ;YAClB,IAAI,QAAQ,KAAK,aAAa;gBAAE,OAAO,WAAW,CAAC;YACnD,IAAI,QAAQ,KAAK,WAAW;gBAAE,OAAO,SAAS,CAAC;YAC/C,IAAI,QAAQ,KAAK,mBAAmB;gBAAE,OAAO,iBAAiB,CAAC;YAC/D,IAAI,QAAQ,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC;YACzC,IAAI,QAAQ,KAAK,wBAAwB;gBAAE,OAAO,sBAAsB,CAAC;YACzE,IAAI,QAAQ,KAAK,oBAAoB;gBAAE,OAAO,kBAAkB,CAAC;YACjE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,CAAC;KACF,CAAa,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"host-controller.js","sourceRoot":"","sources":["../../src/local-harness/host-controller.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export type { PlayableLocalEditorHostBridgeContext, PlayableLocalEditorHostController, PlayableLocalEditorHostControllerOptions, PlayableLocalEditorHostHarness, PlayableLocalEditorHostLoadingContent, } from './host-controller';
2
2
  export type { PlayableForgePlayBridgeHarness, PlayableForgePlayBridgeInstallOptions, PlayableForgePlayBridgeLoadingOverlay, PlayableForgePlayHistoryOperation, PlayableForgePlayHistoryOperationOptions, PlayableForgePlayHistoryOperationResult, PlayableForgePlayHistoryProjectionResult, PlayableForgePlayHistoryStateResult, PlayableForgePlayMessageEvent, PlayableForgePlayMode, PlayableForgePlayModeBridge, PlayableForgePlayOperationOrigin, PlayableForgePlayProjectionWaitPolicy, PlayableForgePlaySaveState, PlayableForgePlayWindowLike, PlayableLegacyAssetCommandBypassOptions, PlayableLegacyAssetCommandBypassWindowLike, } from './forge-play-types';
3
- export type { PlayableLocalEditorLifecycleContent, PlayableLocalEditorLifecycleController, PlayableLocalEditorLifecycleControllerOptions, PlayableLocalEditorLifecycleHarness, PlayableLocalEditorLoadingOverlayContent, PlayableLocalEditorLoadingOverlayController, } from './types';
3
+ export type { PlayableLocalEditorLifecycleContent, PlayableLocalEditorLifecycleController, PlayableLocalEditorLifecycleControllerOptions, PlayableLocalEditorDataSafetyOperation, PlayableLocalEditorDiscardConfirmationInput, PlayableLocalEditorLifecycleHarness, PlayableLocalEditorInteractionPolicy, PlayableLocalEditorLoadingOverlayContent, PlayableLocalEditorLoadingOverlayController, PlayableLocalEditorSaveFailureInput, PlayableLocalEditorSaveFailureState, PlayableLocalEditorUnsavedChangesState, } from './types';
4
4
  export type { PlayableProjectAssetCommandAsset, PlayableProjectAssetCommandCreateResult, PlayableProjectAssetCommandHandler, PlayableProjectAssetCommandHandlerOptions, PlayableProjectAssetCommandHarness, PlayableProjectAssetCommandReloadResult, } from './project-asset-commands';
5
5
  export { createPlayableLocalEditorHostController, } from './host-controller';
6
6
  export { createPlayableProjectAssetCommandHandler, } from './project-asset-commands';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local-harness/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oCAAoC,EACpC,iCAAiC,EACjC,wCAAwC,EACxC,8BAA8B,EAC9B,qCAAqC,GACtC,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,8BAA8B,EAC9B,qCAAqC,EACrC,qCAAqC,EACrC,iCAAiC,EACjC,wCAAwC,EACxC,uCAAuC,EACvC,wCAAwC,EACxC,mCAAmC,EACnC,6BAA6B,EAC7B,qBAAqB,EACrB,2BAA2B,EAC3B,gCAAgC,EAChC,qCAAqC,EACrC,0BAA0B,EAC1B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,GAC3C,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mCAAmC,EACnC,sCAAsC,EACtC,6CAA6C,EAC7C,mCAAmC,EACnC,wCAAwC,EACxC,2CAA2C,GAC5C,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gCAAgC,EAChC,uCAAuC,EACvC,kCAAkC,EAClC,yCAAyC,EACzC,kCAAkC,EAClC,uCAAuC,GACxC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uCAAuC,GACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wCAAwC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4CAA4C,GAC7C,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uCAAuC,GACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gCAAgC,EAChC,0CAA0C,EAC1C,uCAAuC,EACvC,kCAAkC,EAClC,qCAAqC,EACrC,iCAAiC,EACjC,2BAA2B,EAC3B,mCAAmC,EACnC,yBAAyB,EACzB,iCAAiC,EACjC,oCAAoC,EACpC,gCAAgC,EAChC,0CAA0C,EAC1C,yCAAyC,EACzC,mCAAmC,EACnC,sCAAsC,EACtC,0BAA0B,EAC1B,4CAA4C,EAC5C,8BAA8B,GAC/B,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local-harness/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oCAAoC,EACpC,iCAAiC,EACjC,wCAAwC,EACxC,8BAA8B,EAC9B,qCAAqC,GACtC,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,8BAA8B,EAC9B,qCAAqC,EACrC,qCAAqC,EACrC,iCAAiC,EACjC,wCAAwC,EACxC,uCAAuC,EACvC,wCAAwC,EACxC,mCAAmC,EACnC,6BAA6B,EAC7B,qBAAqB,EACrB,2BAA2B,EAC3B,gCAAgC,EAChC,qCAAqC,EACrC,0BAA0B,EAC1B,2BAA2B,EAC3B,uCAAuC,EACvC,0CAA0C,GAC3C,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mCAAmC,EACnC,sCAAsC,EACtC,6CAA6C,EAC7C,sCAAsC,EACtC,2CAA2C,EAC3C,mCAAmC,EACnC,oCAAoC,EACpC,wCAAwC,EACxC,2CAA2C,EAC3C,mCAAmC,EACnC,mCAAmC,EACnC,sCAAsC,GACvC,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gCAAgC,EAChC,uCAAuC,EACvC,kCAAkC,EAClC,yCAAyC,EACzC,kCAAkC,EAClC,uCAAuC,GACxC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uCAAuC,GACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wCAAwC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4CAA4C,GAC7C,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uCAAuC,GACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gCAAgC,EAChC,0CAA0C,EAC1C,uCAAuC,EACvC,kCAAkC,EAClC,qCAAqC,EACrC,iCAAiC,EACjC,2BAA2B,EAC3B,mCAAmC,EACnC,yBAAyB,EACzB,iCAAiC,EACjC,oCAAoC,EACpC,gCAAgC,EAChC,0CAA0C,EAC1C,yCAAyC,EACzC,mCAAmC,EACnC,sCAAsC,EACtC,0BAA0B,EAC1B,4CAA4C,EAC5C,8BAA8B,GAC/B,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-harness/index.ts"],"names":[],"mappings":"AA0CA,OAAO,EACL,uCAAuC,GACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wCAAwC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4CAA4C,GAC7C,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uCAAuC,GACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gCAAgC,EAChC,0CAA0C,EAC1C,uCAAuC,EACvC,kCAAkC,EAClC,qCAAqC,EACrC,iCAAiC,EACjC,2BAA2B,EAC3B,mCAAmC,EACnC,yBAAyB,EACzB,iCAAiC,EACjC,oCAAoC,EACpC,gCAAgC,EAChC,0CAA0C,EAC1C,yCAAyC,EACzC,mCAAmC,EACnC,sCAAsC,EACtC,0BAA0B,EAC1B,4CAA4C,EAC5C,8BAA8B,GAC/B,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-harness/index.ts"],"names":[],"mappings":"AAgDA,OAAO,EACL,uCAAuC,GACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wCAAwC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4CAA4C,GAC7C,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uCAAuC,GACxC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gCAAgC,EAChC,0CAA0C,EAC1C,uCAAuC,EACvC,kCAAkC,EAClC,qCAAqC,EACrC,iCAAiC,EACjC,2BAA2B,EAC3B,mCAAmC,EACnC,yBAAyB,EACzB,iCAAiC,EACjC,oCAAoC,EACpC,gCAAgC,EAChC,0CAA0C,EAC1C,yCAAyC,EACzC,mCAAmC,EACnC,sCAAsC,EACtC,0BAA0B,EAC1B,4CAA4C,EAC5C,8BAA8B,GAC/B,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/local-harness/lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,sCAAsC,EACtC,6CAA6C,EAE9C,MAAM,SAAS,CAAC;AAEjB,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,6CAA6C,GACrD,sCAAsC,CA2ExC"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/local-harness/lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,sCAAsC,EACtC,6CAA6C,EAK9C,MAAM,SAAS,CAAC;AAEjB,wBAAgB,4CAA4C,CAC1D,OAAO,EAAE,6CAA6C,GACrD,sCAAsC,CAyIxC"}
@@ -5,6 +5,7 @@ export function createPlayableLocalEditorLifecycleController(options) {
5
5
  const now = options.now ?? (() => Date.now());
6
6
  const minAssetLoadingOverlayMs = options.minAssetLoadingOverlayMs ?? 500;
7
7
  const viewportRevealReason = options.viewportRevealReason ?? 'editor-loading-overlay-hidden';
8
+ const renderAfterEnter = options.renderAfterEnter ?? true;
8
9
  let assetLoadingCount = 0;
9
10
  let assetLoadingOverlayOwned = false;
10
11
  let assetLoadingOverlayShownAt = 0;
@@ -12,6 +13,61 @@ export function createPlayableLocalEditorLifecycleController(options) {
12
13
  if (!options.loadingOverlay.isVisible())
13
14
  options.loadingOverlay.show(content);
14
15
  };
16
+ const notifySaveFailed = async (operation, error) => {
17
+ const notify = options.interactions?.notifySaveFailed;
18
+ if (!notify)
19
+ return;
20
+ let state;
21
+ try {
22
+ state = options.harness.getSaveFailureState?.();
23
+ }
24
+ catch (stateError) {
25
+ console.error('[PlayableLocalEditorLifecycle] save failure state unavailable', stateError);
26
+ }
27
+ const input = {
28
+ operation,
29
+ status: state?.status ?? (error instanceof Error ? error.message : undefined),
30
+ details: state?.details,
31
+ error: error ?? state?.error,
32
+ };
33
+ try {
34
+ await notify(input);
35
+ }
36
+ catch (notifyError) {
37
+ console.error('[PlayableLocalEditorLifecycle] save failure notification failed', notifyError);
38
+ }
39
+ };
40
+ const saveScene = async (operation = 'save-scene') => {
41
+ try {
42
+ const saved = await options.harness.saveScene();
43
+ if (!saved)
44
+ await notifySaveFailed(operation);
45
+ return saved;
46
+ }
47
+ catch (error) {
48
+ await notifySaveFailed(operation, error);
49
+ throw error;
50
+ }
51
+ };
52
+ const readUnsavedChangesState = () => (options.harness.getUnsavedChangesState?.() ?? {
53
+ dirty: false,
54
+ hasWorkingDocument: false,
55
+ });
56
+ const confirmDiscardIfNeeded = async (operation) => {
57
+ const unsavedChanges = readUnsavedChangesState();
58
+ if (!unsavedChanges.dirty || !unsavedChanges.hasWorkingDocument)
59
+ return true;
60
+ try {
61
+ return await options.interactions?.confirmDiscardUnsavedChanges?.({
62
+ operation,
63
+ unsavedChanges,
64
+ }) !== false;
65
+ }
66
+ catch (error) {
67
+ console.error('[PlayableLocalEditorLifecycle] discard confirmation failed', error);
68
+ return false;
69
+ }
70
+ };
15
71
  return {
16
72
  async enterEditor() {
17
73
  options.loadingOverlay.show(options.content.enter);
@@ -20,7 +76,8 @@ export function createPlayableLocalEditorLifecycleController(options) {
20
76
  await waitForPaint();
21
77
  await options.harness.enterEditor();
22
78
  entered = true;
23
- options.harness.render();
79
+ if (renderAfterEnter)
80
+ options.harness.render();
24
81
  await waitForPaint();
25
82
  }
26
83
  finally {
@@ -29,11 +86,12 @@ export function createPlayableLocalEditorLifecycleController(options) {
29
86
  options.harness.notifyViewportRevealed?.(viewportRevealReason);
30
87
  }
31
88
  },
89
+ saveScene,
32
90
  async saveAndRunGame() {
33
91
  showLoadingOverlayIfNeeded(options.content.saveAndRunGame);
34
92
  try {
35
93
  await waitForPaint();
36
- const saved = await options.harness.saveScene();
94
+ const saved = await saveScene('save-and-run-game');
37
95
  if (!saved)
38
96
  return false;
39
97
  await options.harness.discardAndRunGame();
@@ -44,6 +102,8 @@ export function createPlayableLocalEditorLifecycleController(options) {
44
102
  }
45
103
  },
46
104
  async discardAndRunGame() {
105
+ if (!await confirmDiscardIfNeeded('discard-and-run-game'))
106
+ return;
47
107
  showLoadingOverlayIfNeeded(options.content.discardAndRunGame);
48
108
  try {
49
109
  await waitForPaint();
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/local-harness/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/local-harness/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAWlB,MAAM,UAAU,4CAA4C,CAC1D,OAAsD;IAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,+BAA+B,CAAC;IAC7E,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,2BAA2B,CAAC;IACvF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,IAAI,GAAG,CAAC;IACzE,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,+BAA+B,CAAC;IAC7F,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAC1D,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,IAAI,0BAA0B,GAAG,CAAC,CAAC;IAEnC,MAAM,0BAA0B,GAAG,CAAC,OAAiD,EAAQ,EAAE;QAC7F,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE;YAAE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChF,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAC5B,SAAiD,EACjD,KAAe,EACA,EAAE;QACjB,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,KAA6D,CAAC;QAClE,IAAI,CAAC;YACH,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,+DAA+D,EAAE,UAAU,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,KAAK,GAAwC;YACjD,SAAS;YACT,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,OAAO,EAAE,KAAK,EAAE,OAAO;YACvB,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK;SAC7B,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,WAAW,CAAC,CAAC;QAChG,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,YAAoD,YAAY,EAAoB,EAAE;QAC7G,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK;gBAAE,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,GAA2C,EAAE,CAAC,CAC5E,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,IAAI;QAC5C,KAAK,EAAE,KAAK;QACZ,kBAAkB,EAAE,KAAK;KAC1B,CACF,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,EAClC,SAAiD,EAC/B,EAAE;QACpB,MAAM,cAAc,GAAG,uBAAuB,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAC7E,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,YAAY,EAAE,4BAA4B,EAAE,CAAC;gBAChE,SAAS;gBACT,cAAc;aACf,CAAC,KAAK,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4DAA4D,EAAE,KAAK,CAAC,CAAC;YACnF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,WAAW;YACf,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,YAAY,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACpC,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,gBAAgB;oBAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/C,MAAM,YAAY,EAAE,CAAC;YACvB,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,OAAO;oBAAE,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,oBAAoB,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QACD,SAAS;QACT,KAAK,CAAC,cAAc;YAClB,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC3D,IAAI,CAAC;gBACH,MAAM,YAAY,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,CAAC;gBACnD,IAAI,CAAC,KAAK;oBAAE,OAAO,KAAK,CAAC;gBACzB,MAAM,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,iBAAiB;YACrB,IAAI,CAAC,MAAM,sBAAsB,CAAC,sBAAsB,CAAC;gBAAE,OAAO;YAClE,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC9D,IAAI,CAAC;gBACH,MAAM,YAAY,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC5C,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,0BAA0B,CAAC,SAAS;YACxC,MAAM,sBAAsB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC;YAChG,iBAAiB,IAAI,CAAC,CAAC;YACvB,IAAI,sBAAsB,EAAE,CAAC;gBAC3B,wBAAwB,GAAG,IAAI,CAAC;gBAChC,0BAA0B,GAAG,GAAG,EAAE,CAAC;gBACnC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzD,MAAM,YAAY,EAAE,CAAC;YACvB,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,MAAM,SAAS,EAAE,CAAC;YAC3B,CAAC;oBAAS,CAAC;gBACT,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,iBAAiB,KAAK,CAAC,IAAI,wBAAwB,EAAE,CAAC;oBACxD,MAAM,SAAS,GAAG,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,0BAA0B,CAAC,CAAC;oBAClF,IAAI,SAAS,GAAG,CAAC;wBAAE,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;oBACxD,IAAI,iBAAiB,KAAK,CAAC,IAAI,wBAAwB,EAAE,CAAC;wBACxD,wBAAwB,GAAG,KAAK,CAAC;wBACjC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -8,12 +8,35 @@ export interface PlayableLocalEditorLoadingOverlayController {
8
8
  isVisible(): boolean;
9
9
  dispose(): void;
10
10
  }
11
+ export type PlayableLocalEditorDataSafetyOperation = 'save-scene' | 'save-and-run-game' | 'discard-and-run-game' | 'forge-play-mode-change' | 'forge-play-document-export' | 'forge-play-document-commit';
12
+ export interface PlayableLocalEditorUnsavedChangesState {
13
+ dirty: boolean;
14
+ hasWorkingDocument: boolean;
15
+ }
16
+ export interface PlayableLocalEditorSaveFailureState {
17
+ status?: string;
18
+ details?: string;
19
+ error?: unknown;
20
+ }
21
+ export interface PlayableLocalEditorSaveFailureInput extends PlayableLocalEditorSaveFailureState {
22
+ operation: PlayableLocalEditorDataSafetyOperation;
23
+ }
24
+ export interface PlayableLocalEditorDiscardConfirmationInput {
25
+ operation: PlayableLocalEditorDataSafetyOperation;
26
+ unsavedChanges: PlayableLocalEditorUnsavedChangesState;
27
+ }
28
+ export interface PlayableLocalEditorInteractionPolicy {
29
+ confirmDiscardUnsavedChanges?(input: PlayableLocalEditorDiscardConfirmationInput): boolean | Promise<boolean>;
30
+ notifySaveFailed?(input: PlayableLocalEditorSaveFailureInput): void | Promise<void>;
31
+ }
11
32
  export interface PlayableLocalEditorLifecycleHarness {
12
33
  enterEditor(): Promise<void>;
13
34
  saveScene(): Promise<boolean>;
14
35
  discardAndRunGame(): Promise<void>;
15
36
  render(): void;
16
37
  notifyViewportRevealed?(reason?: string): void;
38
+ getUnsavedChangesState?(): PlayableLocalEditorUnsavedChangesState;
39
+ getSaveFailureState?(): PlayableLocalEditorSaveFailureState | null;
17
40
  }
18
41
  export interface PlayableLocalEditorLifecycleContent {
19
42
  enter: PlayableLocalEditorLoadingOverlayContent;
@@ -25,14 +48,18 @@ export interface PlayableLocalEditorLifecycleControllerOptions {
25
48
  harness: PlayableLocalEditorLifecycleHarness;
26
49
  loadingOverlay: Pick<PlayableLocalEditorLoadingOverlayController, 'show' | 'hide' | 'isVisible'>;
27
50
  content: PlayableLocalEditorLifecycleContent;
51
+ interactions?: PlayableLocalEditorInteractionPolicy;
28
52
  waitForPaint?: () => Promise<void>;
29
53
  waitForMilliseconds?: (milliseconds: number) => Promise<void>;
30
54
  now?: () => number;
31
55
  minAssetLoadingOverlayMs?: number;
32
56
  viewportRevealReason?: string;
57
+ /** Set false when harness.enterEditor already renders the initial editor frame. */
58
+ renderAfterEnter?: boolean;
33
59
  }
34
60
  export interface PlayableLocalEditorLifecycleController {
35
61
  enterEditor(): Promise<void>;
62
+ saveScene(operation?: PlayableLocalEditorDataSafetyOperation): Promise<boolean>;
36
63
  saveAndRunGame(): Promise<boolean>;
37
64
  discardAndRunGame(): Promise<void>;
38
65
  runWithAssetLoadingOverlay<T>(operation: () => Promise<T>): Promise<T>;