@fps-games/editor 0.1.4-beta.1 → 0.1.4-beta.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.
Files changed (58) hide show
  1. package/dist/local-editor-harness.d.ts +9 -0
  2. package/dist/local-editor-harness.d.ts.map +1 -1
  3. package/dist/local-editor-harness.js +27 -12
  4. package/dist/local-editor-harness.js.map +1 -1
  5. package/dist/playable-babylon-facade.d.ts +1 -1
  6. package/dist/playable-babylon-facade.d.ts.map +1 -1
  7. package/dist/playable-babylon-facade.js.map +1 -1
  8. package/dist/playable-babylon-rendering.d.ts +107 -0
  9. package/dist/playable-babylon-rendering.d.ts.map +1 -0
  10. package/dist/playable-babylon-rendering.js +380 -0
  11. package/dist/playable-babylon-rendering.js.map +1 -0
  12. package/dist/playable-local-editor-host.d.ts +13 -1
  13. package/dist/playable-local-editor-host.d.ts.map +1 -1
  14. package/dist/playable-local-editor-host.js +7 -2
  15. package/dist/playable-local-editor-host.js.map +1 -1
  16. package/dist/playable-sdk.d.ts +5 -2
  17. package/dist/playable-sdk.d.ts.map +1 -1
  18. package/dist/playable-sdk.js +1 -0
  19. package/dist/playable-sdk.js.map +1 -1
  20. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js +2 -0
  21. package/node_modules/@fps-games/babylon-renderer/dist/shadows/planar-shadow-system.js.map +1 -1
  22. package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
  23. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.d.ts.map +1 -1
  24. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +84 -23
  25. package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
  26. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  27. package/node_modules/@fps-games/editor-babylon/dist/projection.js +24 -1
  28. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  29. package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +2 -2
  30. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  31. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +5 -3
  32. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
  33. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  34. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +36 -3
  35. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  36. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  37. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +148 -0
  38. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  39. package/node_modules/@fps-games/editor-browser/package.json +3 -3
  40. package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
  41. package/node_modules/@fps-games/editor-core/dist/scene-graph.js +2 -0
  42. package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
  43. package/node_modules/@fps-games/editor-core/package.json +2 -2
  44. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts +25 -0
  45. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.d.ts.map +1 -1
  46. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js +56 -9
  47. package/node_modules/@fps-games/editor-forge-play/dist/agent-transport.js.map +1 -1
  48. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  49. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  50. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +7 -6
  51. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  52. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js +2 -1
  53. package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
  54. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +1 -1
  55. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  56. package/node_modules/@fps-games/editor-playable-sdk/package.json +3 -3
  57. package/node_modules/@fps-games/editor-protocol/package.json +1 -1
  58. package/package.json +8 -8
@@ -7,7 +7,7 @@ export declare const createPlayableBabylonEditorGrid: typeof createBabylonEditor
7
7
  export { applyArtistMaterialProfileToRuntimeMaterial, applyMaterialValueToRuntimeMaterial, applyMaterialValueToRuntimeNode, resolveMaterialOwnerNode, resolveMaterialRuntimeKind, applyOutlineValueToRuntimeNode, resolveOutlineOwnerNode, resolveOutlineTarget, } from '@fps-games/editor-babylon';
8
8
  export type { CanonicalMaterialChange, CanonicalOutlineChange, } from '@fps-games/editor-babylon';
9
9
  export { applyBabylonDefaultOutline, createBabylonEnvironmentTextureController, createBabylonDefaultPostProcessPipelineController, createPlanarShadowSystem, normalizeBabylonEnvironmentTextureProfile, normalizeBabylonDefaultPostProcessProfile, normalizeBabylonDefaultPostProcessVolumeStack, resolveBabylonDefaultPostProcessVolumeStack, } from '@fps-games/babylon-renderer';
10
- export type { BabylonDefaultPostProcessPipelineController, BabylonDefaultPostProcessProfile, BabylonDefaultPostProcessResolveInput, BabylonDefaultPostProcessResolveResult, BabylonDefaultPostProcessResolvedVolume, BabylonDefaultPostProcessSamples, BabylonDefaultPostProcessVolume, BabylonDefaultPostProcessVolumeStack, BabylonDefaultToneMappingType, BabylonEnvironmentTextureController, BabylonEnvironmentTextureProfile, BabylonDefaultOutlineOptions, BabylonRendererOutlineStrategy, PlanarShadowOptions, PostProcessVolumeShape, } from '@fps-games/babylon-renderer';
10
+ export type { BabylonDefaultPostProcessPipelineController, BabylonDefaultPostProcessProfile, BabylonDefaultPostProcessResolveInput, BabylonDefaultPostProcessResolveResult, BabylonDefaultPostProcessResolvedVolume, BabylonDefaultPostProcessSamples, BabylonDefaultPostProcessVolume, BabylonDefaultPostProcessVolumeStack, BabylonDefaultToneMappingType, BabylonEnvironmentTextureController, BabylonEnvironmentTextureProfile, BabylonDefaultOutlineOptions, BabylonRendererOutlineStrategy, PlanarShadowOptions, PlanarShadowSystem, PostProcessVolumeShape, } from '@fps-games/babylon-renderer';
11
11
  export { createPlayableBabylonOutlineInspectorSection, createPlayableBabylonOutlineInspectorSeedPatchValue, isPlayableBabylonOutlineInspectorPatchPath, PLAYABLE_BABYLON_DEFAULT_OUTLINE_OVERRIDE, } from './playable-babylon-outline-inspector';
12
12
  export { applyPlayableBabylonOutlineOverrideToRuntimeNode, applyPlayableBabylonOutlineOverrideToRuntimeTarget, } from './playable-babylon-outline-runtime';
13
13
  export type { PlayableBabylonOutlineInspectorLanguage, PlayableBabylonOutlineInspectorSectionInput, PlayableBabylonOutlineInspectorSeedPatchInput, PlayableBabylonOutlineOverrideConfig, PlayableBabylonOutlineStrategy, } from './playable-babylon-outline-inspector';
@@ -1 +1 @@
1
- {"version":3,"file":"playable-babylon-facade.d.ts","sourceRoot":"","sources":["../src/playable-babylon-facade.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,EACxC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,sCAAsC,GAAG,oCAAoC,CAAC;AAC1F,MAAM,MAAM,qCAAqC,GAAG,mCAAmC,CAAC;AACxF,MAAM,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AACxE,MAAM,MAAM,oCAAoC,GAAG,4BAA4B,CAAC;AAEhF,eAAO,MAAM,+BAA+B,wCAAkC,CAAC;AAK/E,OAAO,EACL,2CAA2C,EAC3C,mCAAmC,EACnC,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,0BAA0B,EAC1B,yCAAyC,EACzC,iDAAiD,EACjD,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,6CAA6C,EAC7C,2CAA2C,GAC5C,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,2CAA2C,EAC3C,gCAAgC,EAChC,qCAAqC,EACrC,sCAAsC,EACtC,uCAAuC,EACvC,gCAAgC,EAChC,+BAA+B,EAC/B,oCAAoC,EACpC,6BAA6B,EAC7B,mCAAmC,EACnC,gCAAgC,EAChC,4BAA4B,EAC5B,8BAA8B,EAC9B,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,4CAA4C,EAC5C,mDAAmD,EACnD,0CAA0C,EAC1C,yCAAyC,GAC1C,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,gDAAgD,EAChD,kDAAkD,GACnD,MAAM,oCAAoC,CAAC;AAE5C,YAAY,EACV,uCAAuC,EACvC,2CAA2C,EAC3C,6CAA6C,EAC7C,oCAAoC,EACpC,8BAA8B,GAC/B,MAAM,sCAAsC,CAAC;AAE9C,YAAY,EACV,wCAAwC,EACxC,qCAAqC,GACtC,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"playable-babylon-facade.d.ts","sourceRoot":"","sources":["../src/playable-babylon-facade.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,EACxC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,sCAAsC,GAAG,oCAAoC,CAAC;AAC1F,MAAM,MAAM,qCAAqC,GAAG,mCAAmC,CAAC;AACxF,MAAM,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AACxE,MAAM,MAAM,oCAAoC,GAAG,4BAA4B,CAAC;AAEhF,eAAO,MAAM,+BAA+B,wCAAkC,CAAC;AAK/E,OAAO,EACL,2CAA2C,EAC3C,mCAAmC,EACnC,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,0BAA0B,EAC1B,yCAAyC,EACzC,iDAAiD,EACjD,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,6CAA6C,EAC7C,2CAA2C,GAC5C,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,2CAA2C,EAC3C,gCAAgC,EAChC,qCAAqC,EACrC,sCAAsC,EACtC,uCAAuC,EACvC,gCAAgC,EAChC,+BAA+B,EAC/B,oCAAoC,EACpC,6BAA6B,EAC7B,mCAAmC,EACnC,gCAAgC,EAChC,4BAA4B,EAC5B,8BAA8B,EAC9B,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,4CAA4C,EAC5C,mDAAmD,EACnD,0CAA0C,EAC1C,yCAAyC,GAC1C,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,gDAAgD,EAChD,kDAAkD,GACnD,MAAM,oCAAoC,CAAC;AAE5C,YAAY,EACV,uCAAuC,EACvC,2CAA2C,EAC3C,6CAA6C,EAC7C,oCAAoC,EACpC,8BAA8B,GAC/B,MAAM,sCAAsC,CAAC;AAE9C,YAAY,EACV,wCAAwC,EACxC,qCAAqC,GACtC,MAAM,oCAAoC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"playable-babylon-facade.js","sourceRoot":"","sources":["../src/playable-babylon-facade.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,GAKhC,MAAM,2BAA2B,CAAC;AAOnC,MAAM,CAAC,MAAM,+BAA+B,GAAG,+BAA+B,CAAC;AAE/E,yCAAyC;AACzC,gFAAgF;AAChF,oEAAoE;AACpE,OAAO,EACL,2CAA2C,EAC3C,mCAAmC,EACnC,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAOnC,0BAA0B;AAC1B,mFAAmF;AACnF,OAAO,EACL,0BAA0B,EAC1B,yCAAyC,EACzC,iDAAiD,EACjD,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,6CAA6C,EAC7C,2CAA2C,GAC5C,MAAM,6BAA6B,CAAC;AAoBrC,OAAO,EACL,4CAA4C,EAC5C,mDAAmD,EACnD,0CAA0C,EAC1C,yCAAyC,GAC1C,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,gDAAgD,EAChD,kDAAkD,GACnD,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"playable-babylon-facade.js","sourceRoot":"","sources":["../src/playable-babylon-facade.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,GAKhC,MAAM,2BAA2B,CAAC;AAOnC,MAAM,CAAC,MAAM,+BAA+B,GAAG,+BAA+B,CAAC;AAE/E,yCAAyC;AACzC,gFAAgF;AAChF,oEAAoE;AACpE,OAAO,EACL,2CAA2C,EAC3C,mCAAmC,EACnC,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAOnC,0BAA0B;AAC1B,mFAAmF;AACnF,OAAO,EACL,0BAA0B,EAC1B,yCAAyC,EACzC,iDAAiD,EACjD,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,6CAA6C,EAC7C,2CAA2C,GAC5C,MAAM,6BAA6B,CAAC;AAqBrC,OAAO,EACL,4CAA4C,EAC5C,mDAAmD,EACnD,0CAA0C,EAC1C,yCAAyC,GAC1C,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,gDAAgD,EAChD,kDAAkD,GACnD,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { type EditorScenePlanarShadowPreviewSettingsInput, type EditorSceneRenderingPanelLanguage, type EditorSceneRenderingPanelState, type EditorSceneRenderingPanelStateInput, type EditorSceneRenderingProfile, type EditorSceneRenderingStatusTone, type EditorSceneRenderingTextureAsset } from '@fps-games/editor-playable-sdk';
2
+ import { type BabylonDefaultPostProcessPipelineController, type BabylonDefaultPostProcessProfile, type BabylonDefaultPostProcessResolveResult, type BabylonDefaultPostProcessResolveInput, type BabylonEnvironmentTextureController, type BabylonEnvironmentTextureProfile, type PlanarShadowOptions, type PlanarShadowSystem } from '@fps-games/babylon-renderer';
3
+ import type { BabylonEditorShadowPreviewOptions } from '@fps-games/editor-babylon';
4
+ import type { PlayableLocalEditorRenderingCapability } from './playable-local-editor-host';
5
+ type MaybePromise<T> = T | Promise<T>;
6
+ export type PlayableBabylonRenderingStatusTone = EditorSceneRenderingStatusTone;
7
+ export interface PlayableBabylonRenderingDocumentInput<TDocument> {
8
+ document: TDocument;
9
+ }
10
+ export interface PlayableBabylonRenderingContext<TDocument> {
11
+ document: TDocument;
12
+ config: unknown;
13
+ profile: EditorSceneRenderingProfile;
14
+ }
15
+ export interface PlayableBabylonRenderingSetConfigInput<TDocument> {
16
+ document: TDocument;
17
+ config: Record<string, unknown>;
18
+ profile: EditorSceneRenderingProfile;
19
+ changedPaths: readonly string[];
20
+ }
21
+ export type PlayableBabylonRenderingValueResolver<TDocument, TValue> = TValue | ((context: PlayableBabylonRenderingContext<TDocument>) => TValue);
22
+ export interface PlayableBabylonRenderingShadowPreviewOptions<TDocument> {
23
+ enabled?: PlayableBabylonRenderingValueResolver<TDocument, boolean | undefined>;
24
+ directionalLightNodeId?: PlayableBabylonRenderingValueResolver<TDocument, string | null | undefined>;
25
+ planar?: PlayableBabylonRenderingValueResolver<TDocument, EditorScenePlanarShadowPreviewSettingsInput | undefined>;
26
+ }
27
+ export interface PlayableBabylonRenderingCapabilityOptions<TDocument> {
28
+ getConfig(input: PlayableBabylonRenderingDocumentInput<TDocument>): unknown;
29
+ setConfig(input: PlayableBabylonRenderingSetConfigInput<TDocument>): MaybePromise<void>;
30
+ resetConfig?(input: PlayableBabylonRenderingDocumentInput<TDocument>): MaybePromise<void>;
31
+ isDirty?(input: PlayableBabylonRenderingDocumentInput<TDocument>): boolean;
32
+ getPanelState?(input: PlayableBabylonRenderingDocumentInput<TDocument>): EditorSceneRenderingPanelStateInput;
33
+ getTextureAssets?(input: PlayableBabylonRenderingDocumentInput<TDocument>): readonly EditorSceneRenderingTextureAsset[];
34
+ getLanguage?(input: PlayableBabylonRenderingDocumentInput<TDocument>): EditorSceneRenderingPanelLanguage;
35
+ getPostProcessResolveInput?(context: PlayableBabylonRenderingContext<TDocument>): BabylonDefaultPostProcessResolveInput | undefined;
36
+ shadowPreview?: false | PlayableBabylonRenderingShadowPreviewOptions<TDocument>;
37
+ }
38
+ export interface PlayableBabylonWorldRendering {
39
+ environment: BabylonEnvironmentTextureProfile;
40
+ shadowPreview: BabylonEditorShadowPreviewOptions | null;
41
+ postProcess: BabylonDefaultPostProcessProfile;
42
+ }
43
+ export type PlayableBabylonRenderingEnvironmentTextureDiagnosticStatus = 'none' | 'resolved-asset' | 'resolved-url' | 'missing-asset' | 'unsupported-asset' | 'unsupported-url';
44
+ export interface PlayableBabylonRenderingEnvironmentTextureDiagnostic {
45
+ status: PlayableBabylonRenderingEnvironmentTextureDiagnosticStatus;
46
+ textureAssetId: string | null;
47
+ textureUrl: string | null;
48
+ resolvedUrl: string | null;
49
+ asset: EditorSceneRenderingTextureAsset | null;
50
+ reason: string | null;
51
+ }
52
+ export interface PlayableBabylonRenderingDiagnostics {
53
+ config: unknown;
54
+ profile: EditorSceneRenderingProfile;
55
+ worldRendering: PlayableBabylonWorldRendering;
56
+ environmentTexture: PlayableBabylonRenderingEnvironmentTextureDiagnostic;
57
+ postProcess: BabylonDefaultPostProcessResolveResult;
58
+ shadowPreview: BabylonEditorShadowPreviewOptions | null;
59
+ }
60
+ export interface PlayableBabylonRuntimeRenderingControllers {
61
+ environment: BabylonEnvironmentTextureController;
62
+ postProcess: BabylonDefaultPostProcessPipelineController;
63
+ getWorldRendering(): PlayableBabylonWorldRendering | null;
64
+ setWorldRendering(rendering: PlayableBabylonWorldRendering | null | undefined): void;
65
+ dispose(): void;
66
+ }
67
+ export interface PlayableBabylonRuntimeRenderingControllerOptions {
68
+ scene: unknown;
69
+ cameras: unknown[];
70
+ initialRendering?: PlayableBabylonWorldRendering | null;
71
+ postProcess?: {
72
+ name?: string;
73
+ };
74
+ }
75
+ export interface PlayableBabylonPlanarShadowPolicyInput extends EditorScenePlanarShadowPreviewSettingsInput {
76
+ directionalLightNodeId?: string | null;
77
+ includeProfileShadowMeshes?: boolean;
78
+ }
79
+ export interface PlayableBabylonResolvedPlanarShadowPolicy {
80
+ planarInput: EditorScenePlanarShadowPreviewSettingsInput;
81
+ planarOptions: PlanarShadowOptions;
82
+ editorShadowPreview: BabylonEditorShadowPreviewOptions;
83
+ }
84
+ export interface PlayableBabylonPlanarShadowPolicy {
85
+ resolve(profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): PlayableBabylonResolvedPlanarShadowPolicy;
86
+ createEditorShadowPreview(profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): BabylonEditorShadowPreviewOptions;
87
+ createRuntimePlanarOptions(profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): PlanarShadowOptions;
88
+ createRuntimePlanarShadowSystem(scene: unknown, directionalLight: unknown, profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): PlanarShadowSystem;
89
+ }
90
+ export declare function createPlayableBabylonRenderingCapability<TDocument>(options: PlayableBabylonRenderingCapabilityOptions<TDocument>): PlayableLocalEditorRenderingCapability<TDocument>;
91
+ export declare function createPlayableBabylonWorldRendering<TDocument>(document: TDocument, options: PlayableBabylonRenderingCapabilityOptions<TDocument>): PlayableBabylonWorldRendering;
92
+ export declare function createPlayableBabylonRenderingDiagnostics<TDocument>(document: TDocument, options: PlayableBabylonRenderingCapabilityOptions<TDocument>): PlayableBabylonRenderingDiagnostics;
93
+ export declare function createPlayableBabylonRuntimeRenderingControllers(options: PlayableBabylonRuntimeRenderingControllerOptions): PlayableBabylonRuntimeRenderingControllers;
94
+ export declare function createPlayableBabylonPlanarShadowPolicy(baseInput?: PlayableBabylonPlanarShadowPolicyInput): PlayableBabylonPlanarShadowPolicy;
95
+ export declare function resolvePlayableBabylonPlanarShadowPolicy(profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): PlayableBabylonResolvedPlanarShadowPolicy;
96
+ export declare function createPlayableBabylonPlanarShadowPolicyInput(profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): EditorScenePlanarShadowPreviewSettingsInput;
97
+ export declare function createPlayableBabylonPlanarShadowPreviewOptions(profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): BabylonEditorShadowPreviewOptions;
98
+ export declare function createPlayableBabylonPlanarShadowOptions(profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): PlanarShadowOptions;
99
+ export declare function createPlayableBabylonPlanarShadowSystem(scene: unknown, directionalLight: unknown, profile: EditorSceneRenderingProfile, input?: PlayableBabylonPlanarShadowPolicyInput): PlanarShadowSystem;
100
+ export declare function createPlayableBabylonRenderingPanelState<TDocument>(document: TDocument, options: PlayableBabylonRenderingCapabilityOptions<TDocument>): EditorSceneRenderingPanelState;
101
+ export declare function createPlayableBabylonEnvironmentTextureProfile(profile: EditorSceneRenderingProfile, textureAssets?: readonly EditorSceneRenderingTextureAsset[]): BabylonEnvironmentTextureProfile;
102
+ export declare function resolvePlayableBabylonRenderingEnvironmentTextureUrl(textureRef: EditorSceneRenderingProfile['environment']['texture'], textureAssets?: readonly EditorSceneRenderingTextureAsset[]): string | null;
103
+ export declare function resolvePlayableBabylonRenderingEnvironmentTextureDiagnostic(textureRef: EditorSceneRenderingProfile['environment']['texture'], textureAssets?: readonly EditorSceneRenderingTextureAsset[]): PlayableBabylonRenderingEnvironmentTextureDiagnostic;
104
+ export declare function isPlayableBabylonRenderingEnvironmentTextureAsset(texture: EditorSceneRenderingTextureAsset): boolean;
105
+ export declare function isPlayableBabylonRenderingEnvironmentTextureUrl(textureUrl: string): boolean;
106
+ export {};
107
+ //# sourceMappingURL=playable-babylon-rendering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playable-babylon-rendering.d.ts","sourceRoot":"","sources":["../src/playable-babylon-rendering.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,380 @@
1
+ import { applyEditorSceneRenderingProfilePatch, createEditorScenePlanarShadowPreviewSettings, createEditorSceneRenderingPanelState, normalizeEditorSceneRenderingProfile, } from '@fps-games/editor-playable-sdk';
2
+ import { createBabylonDefaultPostProcessPipelineController, createBabylonEnvironmentTextureController, createPlanarShadowSystem, resolveBabylonDefaultPostProcessVolumeStack, } from '@fps-games/babylon-renderer';
3
+ const PLAYABLE_BABYLON_RENDERING_ALLOWED_SECTIONS = new Set([
4
+ 'environment',
5
+ 'post-process',
6
+ 'shadows',
7
+ ]);
8
+ const PLAYABLE_BABYLON_ENVIRONMENT_TEXTURE_URL_PATTERN = /\.(env|hdr|dds|ktx|ktx2)(?:[?#].*)?$/i;
9
+ export function createPlayableBabylonRenderingCapability(options) {
10
+ return {
11
+ getWorldRendering(document) {
12
+ return createPlayableBabylonWorldRendering(document, options);
13
+ },
14
+ getRenderingPanelState(document) {
15
+ return createPlayableBabylonRenderingPanelState(document, options);
16
+ },
17
+ async onRenderingAction(input) {
18
+ return handlePlayableBabylonRenderingAction(input, options);
19
+ },
20
+ async onRenderingPropertyChange(input) {
21
+ return handlePlayableBabylonRenderingPropertyChange(input, options);
22
+ },
23
+ };
24
+ }
25
+ export function createPlayableBabylonWorldRendering(document, options) {
26
+ const context = createPlayableBabylonRenderingContext(document, options);
27
+ const postProcess = resolvePlayableBabylonRenderingPostProcess(context, options);
28
+ return {
29
+ environment: createPlayableBabylonEnvironmentTextureProfile(context.profile, options.getTextureAssets?.({ document }) ?? []),
30
+ postProcess: postProcess.profile,
31
+ shadowPreview: createPlayableBabylonShadowPreviewOptions(context, options),
32
+ };
33
+ }
34
+ export function createPlayableBabylonRenderingDiagnostics(document, options) {
35
+ const context = createPlayableBabylonRenderingContext(document, options);
36
+ const textureAssets = options.getTextureAssets?.({ document }) ?? [];
37
+ const postProcess = resolvePlayableBabylonRenderingPostProcess(context, options);
38
+ const shadowPreview = createPlayableBabylonShadowPreviewOptions(context, options);
39
+ return {
40
+ config: context.config,
41
+ profile: context.profile,
42
+ worldRendering: {
43
+ environment: createPlayableBabylonEnvironmentTextureProfile(context.profile, textureAssets),
44
+ postProcess: postProcess.profile,
45
+ shadowPreview,
46
+ },
47
+ environmentTexture: resolvePlayableBabylonRenderingEnvironmentTextureDiagnostic(context.profile.environment.texture, textureAssets),
48
+ postProcess,
49
+ shadowPreview,
50
+ };
51
+ }
52
+ export function createPlayableBabylonRuntimeRenderingControllers(options) {
53
+ let currentRendering = options.initialRendering ?? null;
54
+ const environment = createBabylonEnvironmentTextureController(options.scene, currentRendering?.environment ?? null);
55
+ const postProcess = createBabylonDefaultPostProcessPipelineController(options.scene, options.cameras, currentRendering?.postProcess ?? null, options.postProcess);
56
+ return {
57
+ environment,
58
+ postProcess,
59
+ getWorldRendering() {
60
+ return currentRendering;
61
+ },
62
+ setWorldRendering(rendering) {
63
+ currentRendering = rendering ?? null;
64
+ environment.setProfile(currentRendering?.environment ?? null);
65
+ postProcess.setProfile(currentRendering?.postProcess ?? null);
66
+ },
67
+ dispose() {
68
+ environment.dispose();
69
+ postProcess.dispose();
70
+ currentRendering = null;
71
+ },
72
+ };
73
+ }
74
+ export function createPlayableBabylonPlanarShadowPolicy(baseInput = {}) {
75
+ return {
76
+ resolve(profile, input) {
77
+ return resolvePlayableBabylonPlanarShadowPolicy(profile, mergePlayableBabylonPlanarShadowPolicyInput(baseInput, input));
78
+ },
79
+ createEditorShadowPreview(profile, input) {
80
+ return createPlayableBabylonPlanarShadowPreviewOptions(profile, mergePlayableBabylonPlanarShadowPolicyInput(baseInput, input));
81
+ },
82
+ createRuntimePlanarOptions(profile, input) {
83
+ return createPlayableBabylonPlanarShadowOptions(profile, mergePlayableBabylonPlanarShadowPolicyInput(baseInput, input));
84
+ },
85
+ createRuntimePlanarShadowSystem(scene, directionalLight, profile, input) {
86
+ return createPlayableBabylonPlanarShadowSystem(scene, directionalLight, profile, mergePlayableBabylonPlanarShadowPolicyInput(baseInput, input));
87
+ },
88
+ };
89
+ }
90
+ export function resolvePlayableBabylonPlanarShadowPolicy(profile, input = {}) {
91
+ const planarInput = createPlayableBabylonPlanarShadowPolicyInput(profile, input);
92
+ const planarOptions = createEditorScenePlanarShadowPreviewSettings(profile, planarInput);
93
+ return {
94
+ planarInput,
95
+ planarOptions,
96
+ editorShadowPreview: {
97
+ planar: {
98
+ ...planarOptions,
99
+ ...(input.directionalLightNodeId === undefined
100
+ ? {}
101
+ : { directionalLightNodeId: input.directionalLightNodeId }),
102
+ },
103
+ },
104
+ };
105
+ }
106
+ export function createPlayableBabylonPlanarShadowPolicyInput(profile, input = {}) {
107
+ const includeProfileShadowMeshes = input.includeProfileShadowMeshes !== false;
108
+ const shadowMeshes = profile.shadowMeshes;
109
+ return {
110
+ ...(input.enabled === undefined ? {} : { enabled: input.enabled }),
111
+ ...(input.autoDetectAllCasters === undefined ? {} : { autoDetectAllCasters: input.autoDetectAllCasters }),
112
+ additionalCasterIncludePatterns: mergePlayableBabylonPlanarShadowPatterns(...(includeProfileShadowMeshes ? shadowMeshes.shadowCasters : []), ...(input.additionalCasterIncludePatterns ?? [])),
113
+ additionalExcludePatterns: mergePlayableBabylonPlanarShadowPatterns(...(includeProfileShadowMeshes ? shadowMeshes.excludeFromShadow : []), ...(input.additionalExcludePatterns ?? [])),
114
+ additionalReceiverPatterns: mergePlayableBabylonPlanarShadowPatterns(...(includeProfileShadowMeshes ? shadowMeshes.shadowReceivers : []), ...(input.additionalReceiverPatterns ?? [])),
115
+ additionalRootBoundaryPatterns: mergePlayableBabylonPlanarShadowPatterns(...(input.additionalRootBoundaryPatterns ?? [])),
116
+ };
117
+ }
118
+ export function createPlayableBabylonPlanarShadowPreviewOptions(profile, input = {}) {
119
+ return resolvePlayableBabylonPlanarShadowPolicy(profile, input).editorShadowPreview;
120
+ }
121
+ export function createPlayableBabylonPlanarShadowOptions(profile, input = {}) {
122
+ return resolvePlayableBabylonPlanarShadowPolicy(profile, input).planarOptions;
123
+ }
124
+ export function createPlayableBabylonPlanarShadowSystem(scene, directionalLight, profile, input = {}) {
125
+ return createPlanarShadowSystem(scene, directionalLight, createPlayableBabylonPlanarShadowOptions(profile, input));
126
+ }
127
+ export function createPlayableBabylonRenderingPanelState(document, options) {
128
+ const context = createPlayableBabylonRenderingContext(document, options);
129
+ const baseState = options.getPanelState?.({ document }) ?? {};
130
+ const dirty = baseState.dirty ?? options.isDirty?.({ document });
131
+ return createEditorSceneRenderingPanelState(context.profile, {
132
+ ...baseState,
133
+ ...(dirty === undefined ? {} : { dirty }),
134
+ }, {
135
+ language: options.getLanguage?.({ document }) ?? 'en',
136
+ textureAssets: options.getTextureAssets?.({ document }) ?? [],
137
+ });
138
+ }
139
+ export function createPlayableBabylonEnvironmentTextureProfile(profile, textureAssets = []) {
140
+ return {
141
+ textureUrl: resolvePlayableBabylonRenderingEnvironmentTextureUrl(profile.environment.texture, textureAssets),
142
+ intensity: profile.environment.iblIntensity,
143
+ rotationY: profile.environment.rotationY,
144
+ };
145
+ }
146
+ export function resolvePlayableBabylonRenderingEnvironmentTextureUrl(textureRef, textureAssets = []) {
147
+ if (!textureRef)
148
+ return null;
149
+ const textureAssetId = typeof textureRef.textureAssetId === 'string'
150
+ ? textureRef.textureAssetId.trim()
151
+ : '';
152
+ if (textureAssetId) {
153
+ const textureAsset = textureAssets.find(texture => texture.id === textureAssetId);
154
+ return textureAsset && isPlayableBabylonRenderingEnvironmentTextureAsset(textureAsset)
155
+ ? textureAsset.url
156
+ : null;
157
+ }
158
+ const textureUrl = typeof textureRef.url === 'string' ? textureRef.url.trim() : '';
159
+ return isPlayableBabylonRenderingEnvironmentTextureUrl(textureUrl) ? textureUrl : null;
160
+ }
161
+ export function resolvePlayableBabylonRenderingEnvironmentTextureDiagnostic(textureRef, textureAssets = []) {
162
+ if (!textureRef) {
163
+ return {
164
+ status: 'none',
165
+ textureAssetId: null,
166
+ textureUrl: null,
167
+ resolvedUrl: null,
168
+ asset: null,
169
+ reason: 'No environment texture is configured.',
170
+ };
171
+ }
172
+ const textureAssetId = typeof textureRef.textureAssetId === 'string'
173
+ ? textureRef.textureAssetId.trim()
174
+ : '';
175
+ if (textureAssetId) {
176
+ const textureAsset = textureAssets.find(texture => texture.id === textureAssetId) ?? null;
177
+ if (!textureAsset) {
178
+ return {
179
+ status: 'missing-asset',
180
+ textureAssetId,
181
+ textureUrl: null,
182
+ resolvedUrl: null,
183
+ asset: null,
184
+ reason: `Environment texture asset not found: ${textureAssetId}.`,
185
+ };
186
+ }
187
+ if (!isPlayableBabylonRenderingEnvironmentTextureAsset(textureAsset)) {
188
+ return {
189
+ status: 'unsupported-asset',
190
+ textureAssetId,
191
+ textureUrl: textureAsset.url,
192
+ resolvedUrl: null,
193
+ asset: textureAsset,
194
+ reason: `Texture asset is not marked as an environment texture: ${textureAssetId}.`,
195
+ };
196
+ }
197
+ return {
198
+ status: 'resolved-asset',
199
+ textureAssetId,
200
+ textureUrl: textureAsset.url,
201
+ resolvedUrl: textureAsset.url,
202
+ asset: textureAsset,
203
+ reason: null,
204
+ };
205
+ }
206
+ const textureUrl = typeof textureRef.url === 'string' ? textureRef.url.trim() : '';
207
+ if (!textureUrl) {
208
+ return {
209
+ status: 'none',
210
+ textureAssetId: null,
211
+ textureUrl: null,
212
+ resolvedUrl: null,
213
+ asset: null,
214
+ reason: 'No environment texture URL is configured.',
215
+ };
216
+ }
217
+ if (!isPlayableBabylonRenderingEnvironmentTextureUrl(textureUrl)) {
218
+ return {
219
+ status: 'unsupported-url',
220
+ textureAssetId: null,
221
+ textureUrl,
222
+ resolvedUrl: null,
223
+ asset: null,
224
+ reason: 'Environment texture URL must use .env, .hdr, .dds, .ktx, or .ktx2.',
225
+ };
226
+ }
227
+ return {
228
+ status: 'resolved-url',
229
+ textureAssetId: null,
230
+ textureUrl,
231
+ resolvedUrl: textureUrl,
232
+ asset: null,
233
+ reason: null,
234
+ };
235
+ }
236
+ export function isPlayableBabylonRenderingEnvironmentTextureAsset(texture) {
237
+ if (texture.capabilities?.environmentTexture === true)
238
+ return true;
239
+ if (texture.capabilities?.environmentTexture === false)
240
+ return false;
241
+ if (texture.usage === 'environment')
242
+ return true;
243
+ return isPlayableBabylonRenderingEnvironmentTextureUrl(texture.url);
244
+ }
245
+ export function isPlayableBabylonRenderingEnvironmentTextureUrl(textureUrl) {
246
+ return PLAYABLE_BABYLON_ENVIRONMENT_TEXTURE_URL_PATTERN.test(textureUrl);
247
+ }
248
+ function createPlayableBabylonRenderingContext(document, options) {
249
+ const config = options.getConfig({ document });
250
+ return {
251
+ document,
252
+ config,
253
+ profile: normalizeEditorSceneRenderingProfile(config),
254
+ };
255
+ }
256
+ function resolvePlayableBabylonRenderingPostProcess(context, options) {
257
+ return resolveBabylonDefaultPostProcessVolumeStack(context.config, options.getPostProcessResolveInput?.(context));
258
+ }
259
+ function createPlayableBabylonShadowPreviewOptions(context, options) {
260
+ if (options.shadowPreview === false)
261
+ return null;
262
+ const shadowPreview = options.shadowPreview ?? {};
263
+ const planarInput = resolvePlayableBabylonRenderingValue(shadowPreview.planar, context) ?? {};
264
+ const enabled = resolvePlayableBabylonRenderingValue(shadowPreview.enabled, context);
265
+ const directionalLightNodeId = resolvePlayableBabylonRenderingValue(shadowPreview.directionalLightNodeId, context);
266
+ return createPlayableBabylonPlanarShadowPreviewOptions(context.profile, {
267
+ ...planarInput,
268
+ ...(enabled === undefined ? {} : { enabled }),
269
+ ...(directionalLightNodeId === undefined ? {} : { directionalLightNodeId }),
270
+ });
271
+ }
272
+ async function handlePlayableBabylonRenderingPropertyChange(input, options) {
273
+ const sectionId = typeof input.sectionId === 'string' ? input.sectionId : '';
274
+ if (!PLAYABLE_BABYLON_RENDERING_ALLOWED_SECTIONS.has(sectionId)) {
275
+ return createPlayableBabylonRenderingResult(false, {
276
+ status: `Unsupported rendering section: ${sectionId || '(unknown)'}`,
277
+ statusTone: 'warning',
278
+ });
279
+ }
280
+ const path = typeof input.path === 'string' ? input.path : '';
281
+ const currentConfig = options.getConfig({ document: input.document });
282
+ const patch = applyEditorSceneRenderingProfilePatch(currentConfig, {
283
+ [path]: input.value,
284
+ });
285
+ if (patch.changedPaths.length === 0) {
286
+ return createPlayableBabylonRenderingResult(false, {
287
+ status: `Unsupported rendering field: ${path || '(unknown)'}`,
288
+ statusTone: 'warning',
289
+ });
290
+ }
291
+ await options.setConfig({
292
+ document: input.document,
293
+ config: patch.config,
294
+ changedPaths: patch.changedPaths,
295
+ profile: patch.normalized,
296
+ });
297
+ const dirty = options.isDirty?.({ document: input.document });
298
+ return createPlayableBabylonRenderingResult(true, {
299
+ dirty,
300
+ status: `Rendering draft updated: ${patch.changedPaths.join(', ')}`,
301
+ statusTone: dirty === false ? 'success' : 'warning',
302
+ });
303
+ }
304
+ async function handlePlayableBabylonRenderingAction(input, options) {
305
+ const actionId = typeof input.actionId === 'string' ? input.actionId : '';
306
+ if (actionId !== 'revert-rendering') {
307
+ return createPlayableBabylonRenderingResult(false, {
308
+ status: `Unsupported rendering action: ${actionId || '(unknown)'}`,
309
+ statusTone: 'warning',
310
+ });
311
+ }
312
+ if (!options.resetConfig) {
313
+ return createPlayableBabylonRenderingResult(false, {
314
+ status: 'Rendering reset is not available for this project.',
315
+ statusTone: 'warning',
316
+ });
317
+ }
318
+ if (options.isDirty?.({ document: input.document }) === false) {
319
+ return createPlayableBabylonRenderingResult(false, {
320
+ status: 'Rendering already matches saved settings.',
321
+ statusTone: 'default',
322
+ });
323
+ }
324
+ await options.resetConfig({ document: input.document });
325
+ return createPlayableBabylonRenderingResult(true, {
326
+ dirty: options.isDirty?.({ document: input.document }) ?? false,
327
+ status: 'Rendering draft reverted to saved settings.',
328
+ statusTone: 'success',
329
+ });
330
+ }
331
+ function createPlayableBabylonRenderingResult(changed, input) {
332
+ return {
333
+ changed,
334
+ refreshWorldRendering: changed,
335
+ ...(input.dirty === undefined ? {} : { dirty: input.dirty }),
336
+ status: input.status,
337
+ statusTone: input.statusTone,
338
+ };
339
+ }
340
+ function resolvePlayableBabylonRenderingValue(value, context) {
341
+ return typeof value === 'function'
342
+ ? value(context)
343
+ : value;
344
+ }
345
+ function mergePlayableBabylonPlanarShadowPolicyInput(base, input) {
346
+ const merged = {
347
+ additionalCasterIncludePatterns: mergePlayableBabylonPlanarShadowPatterns(...(base.additionalCasterIncludePatterns ?? []), ...(input?.additionalCasterIncludePatterns ?? [])),
348
+ additionalExcludePatterns: mergePlayableBabylonPlanarShadowPatterns(...(base.additionalExcludePatterns ?? []), ...(input?.additionalExcludePatterns ?? [])),
349
+ additionalReceiverPatterns: mergePlayableBabylonPlanarShadowPatterns(...(base.additionalReceiverPatterns ?? []), ...(input?.additionalReceiverPatterns ?? [])),
350
+ additionalRootBoundaryPatterns: mergePlayableBabylonPlanarShadowPatterns(...(base.additionalRootBoundaryPatterns ?? []), ...(input?.additionalRootBoundaryPatterns ?? [])),
351
+ };
352
+ const enabled = input?.enabled ?? base.enabled;
353
+ if (enabled !== undefined)
354
+ merged.enabled = enabled;
355
+ const autoDetectAllCasters = input?.autoDetectAllCasters ?? base.autoDetectAllCasters;
356
+ if (autoDetectAllCasters !== undefined)
357
+ merged.autoDetectAllCasters = autoDetectAllCasters;
358
+ const includeProfileShadowMeshes = input?.includeProfileShadowMeshes ?? base.includeProfileShadowMeshes;
359
+ if (includeProfileShadowMeshes !== undefined)
360
+ merged.includeProfileShadowMeshes = includeProfileShadowMeshes;
361
+ const directionalLightNodeId = input && 'directionalLightNodeId' in input
362
+ ? input.directionalLightNodeId
363
+ : base.directionalLightNodeId;
364
+ if (directionalLightNodeId !== undefined)
365
+ merged.directionalLightNodeId = directionalLightNodeId;
366
+ return merged;
367
+ }
368
+ function mergePlayableBabylonPlanarShadowPatterns(...patterns) {
369
+ const seen = new Set();
370
+ const merged = [];
371
+ for (const pattern of patterns) {
372
+ const normalized = typeof pattern === 'string' ? pattern.trim() : '';
373
+ if (!normalized || seen.has(normalized))
374
+ continue;
375
+ seen.add(normalized);
376
+ merged.push(normalized);
377
+ }
378
+ return merged;
379
+ }
380
+ //# sourceMappingURL=playable-babylon-rendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playable-babylon-rendering.js","sourceRoot":"","sources":["../src/playable-babylon-rendering.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { type EditorTransformDocumentCapabilities } from '@fps-games/editor-core';
1
+ import { type EditorTransformDocumentCapabilities, type EditorTransformSnapshot } from '@fps-games/editor-core';
2
+ import { type ForgePlayAgentContextDeliveryOptions } from '@fps-games/editor-forge-play';
2
3
  import type { ArtistMaterialTextureRef, EditorAgentContextSemantics } from '@fps-games/editor-protocol';
3
4
  import { type PlayableForgePlayModeBridge, type PlayableForgePlaySaveState, type PlayableForgePlayWindowLike, type PlayableLocalEditorHostBridgeContext, type PlayableLocalEditorHostLoadingContent } from '@fps-games/editor-playable-sdk';
4
5
  export declare const PLAYABLE_LOCAL_EDITOR_HOST_MANIFEST_VERSION: 1;
@@ -136,6 +137,13 @@ export interface PlayableLocalEditorTransformPatchInput<TDocument = unknown> {
136
137
  duplicate?: boolean;
137
138
  [key: string]: unknown;
138
139
  }
140
+ export interface PlayableLocalEditorTransformInspectorPreviewInput<TDocument = unknown> {
141
+ document: TDocument;
142
+ targetId: string;
143
+ targetIds: string[];
144
+ activeId: string | null;
145
+ transform: EditorTransformSnapshot;
146
+ }
139
147
  export interface PlayableLocalEditorTransformBatchPatchInput<TDocument = unknown> {
140
148
  document: TDocument;
141
149
  targetIds: string[];
@@ -145,6 +153,7 @@ export interface PlayableLocalEditorTransformBatchPatchInput<TDocument = unknown
145
153
  }
146
154
  export interface PlayableLocalEditorRenderingPropertyChangeResult {
147
155
  changed?: boolean;
156
+ dirty?: boolean;
148
157
  status?: string;
149
158
  statusTone?: string;
150
159
  statusDetails?: string;
@@ -251,6 +260,7 @@ export interface PlayableLocalEditorTransformCommandsCapability<TDocument, TPatc
251
260
  documentCapabilities?: Partial<EditorTransformDocumentCapabilities>;
252
261
  canCreateSerializedMultiPropertyPatch?(input: PlayableLocalEditorMultiPropertyCapabilityInput<TDocument>): boolean;
253
262
  createSerializedMultiPropertyPatch?(input: PlayableLocalEditorMultiPropertyPatchInput<TDocument>): PlayableLocalEditorPatchResult<TPatch> | null;
263
+ createTransformInspectorPreview?(input: PlayableLocalEditorTransformInspectorPreviewInput<TDocument>): EditorTransformSnapshot | null;
254
264
  createTransformPatch?(input: PlayableLocalEditorTransformPatchInput<TDocument>): PlayableLocalEditorPatchResult<TPatch> | null;
255
265
  createTransformBatchPatch?(input: PlayableLocalEditorTransformBatchPatchInput<TDocument>): PlayableLocalEditorPatchResult<TPatch> | null;
256
266
  createDuplicateSelectionPatch?(input: Record<string, unknown> & {
@@ -342,6 +352,7 @@ export interface PlayableLocalEditorDocumentCapability<TDocument, TPatch, TAsset
342
352
  createSerializedPropertyPatch(input: PlayableLocalEditorPropertyPatchInput<TDocument>): PlayableLocalEditorPatchResult<TPatch> | null;
343
353
  canCreateSerializedMultiPropertyPatch?(input: PlayableLocalEditorMultiPropertyCapabilityInput<TDocument>): boolean;
344
354
  createSerializedMultiPropertyPatch?(input: PlayableLocalEditorMultiPropertyPatchInput<TDocument>): PlayableLocalEditorPatchResult<TPatch> | null;
355
+ createTransformInspectorPreview?(input: PlayableLocalEditorTransformInspectorPreviewInput<TDocument>): EditorTransformSnapshot | null;
345
356
  createTransformPatch?(input: PlayableLocalEditorTransformPatchInput<TDocument>): PlayableLocalEditorPatchResult<TPatch> | null;
346
357
  createTransformBatchPatch?(input: PlayableLocalEditorTransformBatchPatchInput<TDocument>): PlayableLocalEditorPatchResult<TPatch> | null;
347
358
  createDuplicateSelectionPatch?(input: Record<string, unknown> & {
@@ -472,6 +483,7 @@ export interface PlayableLocalEditorHostManifest<TDocument, TPatch, TAsset = unk
472
483
  forgePlay?: {
473
484
  enabled?: boolean;
474
485
  window?: PlayableForgePlayWindowLike;
486
+ agentContextDelivery?: ForgePlayAgentContextDeliveryOptions;
475
487
  handleProjectAssetCommand?: (context: PlayableLocalEditorHostBridgeContext<PlayableLocalEditorHarnessApi<TDocument>>) => Promise<void> | void;
476
488
  handleAssetDrop?: (payload: Record<string, unknown>, context: Omit<PlayableLocalEditorHostBridgeContext<PlayableLocalEditorHarnessApi<TDocument>>, 'name'>) => void;
477
489
  hasUnsavedPlatformChanges?: () => boolean;