@fps-games/editor 0.2.1-beta.2 → 0.2.1-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.
- package/dist/build-info.json +41 -41
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +16 -7
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/playable-babylon-rendering.d.ts +8 -7
- package/dist/playable-babylon-rendering.d.ts.map +1 -1
- package/dist/playable-babylon-rendering.js +77 -32
- package/dist/playable-babylon-rendering.js.map +1 -1
- package/dist/playable-product-projection-preview.d.ts +2 -0
- package/dist/playable-product-projection-preview.d.ts.map +1 -1
- package/dist/playable-product-projection-preview.js +7 -4
- package/dist/playable-product-projection-preview.js.map +1 -1
- package/dist/playable-sdk.d.ts +1 -1
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js +1 -1
- package/dist/playable-sdk.js.map +1 -1
- package/dist/playable-standard-project.d.ts +0 -1
- package/dist/playable-standard-project.d.ts.map +1 -1
- package/dist/playable-standard-project.js +13 -4
- package/dist/playable-standard-project.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/environment-texture-controller.d.ts +4 -2
- package/node_modules/@fps-games/babylon-renderer/dist/environment/environment-texture-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/environment-texture-controller.js +301 -121
- package/node_modules/@fps-games/babylon-renderer/dist/environment/environment-texture-controller.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/profile.js +5 -4
- package/node_modules/@fps-games/babylon-renderer/dist/environment/profile.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/types.d.ts +4 -4
- package/node_modules/@fps-games/babylon-renderer/dist/environment/types.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/types.js +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/environment/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts +2 -0
- package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js +12 -1
- package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts +6 -3
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.js +100 -39
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/reference.d.ts +1 -3
- package/node_modules/@fps-games/babylon-renderer/dist/reference.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +11 -8
- package/node_modules/@fps-games/editor-babylon/package.json +6 -6
- package/node_modules/@fps-games/editor-browser/package.json +7 -7
- package/node_modules/@fps-games/editor-core/package.json +6 -6
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js +10 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/generated-module.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +4 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js +1 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/assets.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +53 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
- package/node_modules/@fps-games/editor-protocol/package.json +2 -2
- package/node_modules/@fps-games/editor-tooling/package.json +3 -3
- package/node_modules/@fps-games/editor-ui/package.json +1 -1
- package/node_modules/@fps-games/playable-assets/dist/identity.d.ts +1 -0
- package/node_modules/@fps-games/playable-assets/dist/identity.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-assets/dist/identity.js +1 -1
- package/node_modules/@fps-games/playable-assets/dist/identity.js.map +1 -1
- package/node_modules/@fps-games/playable-assets/dist/index.d.ts +1 -0
- package/node_modules/@fps-games/playable-assets/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-assets/dist/index.js +1 -0
- package/node_modules/@fps-games/playable-assets/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-assets/dist/resource-resolver.d.ts +46 -0
- package/node_modules/@fps-games/playable-assets/dist/resource-resolver.d.ts.map +1 -0
- package/node_modules/@fps-games/playable-assets/dist/resource-resolver.js +109 -0
- package/node_modules/@fps-games/playable-assets/dist/resource-resolver.js.map +1 -0
- package/node_modules/@fps-games/playable-assets/package.json +1 -1
- package/node_modules/@fps-games/playable-contracts/package.json +1 -1
- package/node_modules/@fps-games/playable-rendering/package.json +2 -2
- package/node_modules/@fps-games/playable-runtime/dist/runtime.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/runtime.js +5 -0
- package/node_modules/@fps-games/playable-runtime/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/types.d.ts +2 -0
- package/node_modules/@fps-games/playable-runtime/dist/types.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/types.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/package.json +12 -12
- package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
- package/node_modules/@fps-games/playable-scene/package.json +2 -2
- package/node_modules/@fps-games/plugin-api/package.json +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/reference.d.ts.map +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/reference.js +11 -4
- package/node_modules/@fps-games/plugin-assets/dist/reference.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/renderer.d.ts +8 -0
- package/node_modules/@fps-games/plugin-assets/dist/renderer.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-assets/dist/renderer.js +13 -0
- package/node_modules/@fps-games/plugin-assets/dist/renderer.js.map +1 -0
- package/node_modules/@fps-games/plugin-assets/dist/resources.d.ts +12 -0
- package/node_modules/@fps-games/plugin-assets/dist/resources.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-assets/dist/resources.js +8 -0
- package/node_modules/@fps-games/plugin-assets/dist/resources.js.map +1 -0
- package/node_modules/@fps-games/plugin-assets/dist/runtime.d.ts +2 -1
- package/node_modules/@fps-games/plugin-assets/dist/runtime.d.ts.map +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/runtime.js +3 -0
- package/node_modules/@fps-games/plugin-assets/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/package.json +32 -8
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-hierarchy/package.json +5 -5
- package/node_modules/@fps-games/plugin-host/package.json +2 -2
- package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-markers/package.json +5 -5
- package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-materials/package.json +5 -5
- package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
- package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-scene/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
- package/package.json +24 -22
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type PlayableBabylonProjectionImportContext, type PlayableBabylonProjectionImportResult, type PlayableBabylonProjectionNode, type PlayableBabylonSceneCameraPreviewRig } from './playable-babylon-facade.js';
|
|
2
2
|
import { type EditorSceneAssetLibraryItem, type EditorSceneCameraRig, type EditorSceneDocument, type EditorSceneGameObject, type EditorSceneRuntimePreviewAssetsModule } from '@fps-games/editor-playable-sdk';
|
|
3
|
+
import { type PlayableResolvedAssetResource } from '@fps-games/playable-assets';
|
|
3
4
|
export type FpsGameEditorProductBabylonModule = Record<string, any>;
|
|
4
5
|
export interface FpsGameEditorProductProjectionImportStats {
|
|
5
6
|
importModelCalls: number;
|
|
@@ -65,6 +66,7 @@ export interface FpsGameEditorProductProjectionPreview<TDocument extends EditorS
|
|
|
65
66
|
createEditorSceneInspectorTextureAssets(assets: readonly TAsset[]): Array<{
|
|
66
67
|
id: string;
|
|
67
68
|
label: string;
|
|
69
|
+
resource: PlayableResolvedAssetResource;
|
|
68
70
|
url: string;
|
|
69
71
|
meta: string;
|
|
70
72
|
usage: 'environment' | 'material';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playable-product-projection-preview.d.ts","sourceRoot":"","sources":["../src/playable-product-projection-preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,6BAA6B,EAClC,KAAK,oCAAoC,EAC1C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAaL,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qCAAqC,EAI3C,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"playable-product-projection-preview.d.ts","sourceRoot":"","sources":["../src/playable-product-projection-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createBabylonAssetContainerProjectionImporter, createBabylonPrimitiveProjectionInstancingController, createPlayableBabylonEditorGrid, } from './playable-babylon-facade.js';
|
|
2
2
|
import { EDITOR_SCENE_PREFAB_COMPOSITION_VERSION, compileEditorSceneDocumentToSceneConfig, createEditorSceneRuntimePreviewImportPlan, createEditorSceneRuntimePreviewMainCameraRig, createEditorSceneRuntimePreviewMissingAssetUrlDiagnostic, createEditorSceneRuntimePreviewNode, isEditorScenePrefabAsset, readEditorSceneRuntimePreviewAssetId, readEditorSceneRuntimePreviewAssetKind, readEditorScenePrefabRootNodeId, resolveEditorSceneRuntimePreviewAssetUrl, resolveEditorScenePrefabInstanceRelation, } from '@fps-games/editor-playable-sdk';
|
|
3
|
+
import { createPlayableAssetResourceResolver, } from '@fps-games/playable-assets';
|
|
3
4
|
export function createFpsGameEditorProductProjectionPreview(options) {
|
|
4
5
|
const stats = {
|
|
5
6
|
importModelCalls: 0,
|
|
@@ -221,17 +222,19 @@ export function createFpsGameEditorProductProjectionPreview(options) {
|
|
|
221
222
|
return url ? { kind: 'image', url, alt: asset.displayName, fit: 'contain' } : undefined;
|
|
222
223
|
},
|
|
223
224
|
createEditorSceneInspectorTextureAssets(assets) {
|
|
225
|
+
const resourceResolver = createPlayableAssetResourceResolver((options.assetsModule.ASSET_CATALOG ?? {}));
|
|
224
226
|
return assets
|
|
225
227
|
.filter(asset => asset.kind === 'texture')
|
|
226
228
|
.flatMap((asset) => {
|
|
227
|
-
const
|
|
228
|
-
if (!
|
|
229
|
+
const resolved = resourceResolver.resolve({ assetId: asset.assetId });
|
|
230
|
+
if (!resolved.ok)
|
|
229
231
|
return [];
|
|
230
|
-
const environmentTexture = isEnvironmentTextureAsset(asset, url);
|
|
232
|
+
const environmentTexture = isEnvironmentTextureAsset(asset, resolved.resource.url);
|
|
231
233
|
return [{
|
|
232
234
|
id: asset.assetId,
|
|
233
235
|
label: asset.displayName || asset.assetId,
|
|
234
|
-
|
|
236
|
+
resource: resolved.resource,
|
|
237
|
+
url: resolved.resource.url,
|
|
235
238
|
meta: environmentTexture ? `${asset.assetId} · IBL` : asset.assetId,
|
|
236
239
|
usage: environmentTexture ? 'environment' : 'material',
|
|
237
240
|
capabilities: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playable-product-projection-preview.js","sourceRoot":"","sources":["../src/playable-product-projection-preview.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createBabylonAssetContainerProjectionImporter,\n createBabylonPrimitiveProjectionInstancingController,\n createPlayableBabylonEditorGrid,\n type BabylonAssetContainerProjectionImportEvent,\n type PlayableBabylonProjectionImportContext,\n type PlayableBabylonProjectionImportResult,\n type PlayableBabylonProjectionNode,\n type PlayableBabylonSceneCameraPreviewRig,\n} from './playable-babylon-facade.js';\nimport {\n EDITOR_SCENE_PREFAB_COMPOSITION_VERSION,\n compileEditorSceneDocumentToSceneConfig,\n createEditorSceneRuntimePreviewImportPlan,\n createEditorSceneRuntimePreviewMainCameraRig,\n createEditorSceneRuntimePreviewMissingAssetUrlDiagnostic,\n createEditorSceneRuntimePreviewNode,\n isEditorScenePrefabAsset,\n readEditorSceneRuntimePreviewAssetId,\n readEditorSceneRuntimePreviewAssetKind,\n readEditorScenePrefabRootNodeId,\n resolveEditorSceneRuntimePreviewAssetUrl,\n resolveEditorScenePrefabInstanceRelation,\n type EditorSceneAssetLibraryItem,\n type EditorSceneCameraRig,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n type EditorSceneRuntimePreviewAssetsModule,\n type PlayableEditorRuntimeSceneConfig,\n type PlayableEditorRuntimeSceneNode,\n type PlayableEditorSceneCompilerDocument,\n} from '@fps-games/editor-playable-sdk';\n\nexport type FpsGameEditorProductBabylonModule = Record<string, any>;\n\nexport interface FpsGameEditorProductProjectionImportStats {\n importModelCalls: number;\n containerLoads: number;\n containerCacheHits: number;\n instantiateCalls: number;\n fallbackCount: number;\n lastCacheKey: string | null;\n lastError: string | null;\n}\n\nexport interface FpsGameEditorProductProjectionGroundDecalHooks<TGroundDecal> {\n isGroundDecalConfig(value: unknown): value is TGroundDecal;\n createDynamicTexture(\n name: string,\n scene: unknown,\n decal: TGroundDecal,\n ): { texture: any; ready: Promise<unknown> };\n readSize(decal: TGroundDecal): { width: number; depth: number };\n readRendering?(decal: TGroundDecal): {\n alphaIndex?: number;\n diffuseTextureLevel?: number;\n emissiveTextureLevel?: number;\n } | null | undefined;\n}\n\nexport interface FpsGameEditorProductProjectionPreviewOptions<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n TGameObject extends EditorSceneGameObject = EditorSceneGameObject,\n TAsset extends EditorSceneAssetLibraryItem = EditorSceneAssetLibraryItem,\n TGroundDecal = unknown,\n> {\n assetsModule: EditorSceneRuntimePreviewAssetsModule;\n defaultCamera: EditorSceneCameraRig;\n gridName?: string;\n primitiveSourceMeshNamePrefix?: string;\n statsTarget?: Record<string, unknown>;\n statsTargetKey?: string;\n groundDecal?: FpsGameEditorProductProjectionGroundDecalHooks<TGroundDecal>;\n loadBabylonSceneLoader?(): Promise<{\n SceneLoader: {\n LoadAssetContainerAsync(\n path: string,\n filename: string,\n scene: unknown,\n onProgress?: unknown,\n pluginExtension?: string,\n ): Promise<unknown>;\n };\n }>;\n resolveModelPathAndFile(url: string): Promise<{\n path: string;\n filename: string;\n isDataUrl?: boolean;\n isCompressed?: boolean;\n }>;\n}\n\nexport interface FpsGameEditorProductProjectionPreview<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n TGameObject extends EditorSceneGameObject = EditorSceneGameObject,\n TAsset extends EditorSceneAssetLibraryItem = EditorSceneAssetLibraryItem,\n> {\n createEditorGrid(BABYLON: FpsGameEditorProductBabylonModule, scene: unknown, camera?: unknown): unknown;\n createEditorPreviewBabylonModule(BABYLON: FpsGameEditorProductBabylonModule): FpsGameEditorProductBabylonModule;\n createProjectionNodes(editorScene: TDocument): PlayableBabylonProjectionNode[];\n createProjectionNode(editorScene: TDocument, gameObject: TGameObject): PlayableBabylonProjectionNode;\n getProjectionNodesForTarget(editorScene: TDocument, targetId: string): PlayableBabylonProjectionNode[];\n resolveProjectionTargetId(editorScene: TDocument, projectionNodeId: string): string | null;\n getProjectionSelectionNodeIds(editorScene: TDocument, targetId: string): string[];\n createSceneCameraPreviewRig(editorScene: TDocument): PlayableBabylonSceneCameraPreviewRig | null;\n importEditorProjectionModel(context: PlayableBabylonProjectionImportContext): Promise<PlayableBabylonProjectionImportResult | null>;\n createEditorSceneLibraryAssetPreview(asset: TAsset): { kind: 'image'; url: string; alt: string; fit: 'contain' } | undefined;\n createEditorSceneInspectorTextureAssets(assets: readonly TAsset[]): Array<{\n id: string;\n label: string;\n url: string;\n meta: string;\n usage: 'environment' | 'material';\n capabilities: { materialTexture: boolean; environmentTexture: boolean };\n }>;\n resolveEditorSceneTextureRefUrl(\n assets: readonly TAsset[],\n texture: { textureAssetId?: string | null; url?: string | null } | null | undefined,\n ): string | null;\n}\n\ntype EditorSceneRuntimePreviewImportPlan = NonNullable<ReturnType<typeof createEditorSceneRuntimePreviewImportPlan>>;\n\nexport function createFpsGameEditorProductProjectionPreview<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TAsset extends EditorSceneAssetLibraryItem,\n TGroundDecal = unknown,\n>(\n options: FpsGameEditorProductProjectionPreviewOptions<TDocument, TGameObject, TAsset, TGroundDecal>,\n): FpsGameEditorProductProjectionPreview<TDocument, TGameObject, TAsset> {\n const stats: FpsGameEditorProductProjectionImportStats = {\n importModelCalls: 0,\n containerLoads: 0,\n containerCacheHits: 0,\n instantiateCalls: 0,\n fallbackCount: 0,\n lastCacheKey: null,\n lastError: null,\n };\n const importPlanCache = new WeakMap<object, EditorSceneRuntimePreviewImportPlan>();\n const primitiveProjectionInstancing = createBabylonPrimitiveProjectionInstancingController({\n sourceMeshNamePrefix: options.primitiveSourceMeshNamePrefix ?? '__fps_editor_primitive_source',\n });\n type ProjectionSnapshot = {\n nodes: PlayableBabylonProjectionNode[];\n nodesByTargetId: Map<string, PlayableBabylonProjectionNode[]>;\n targetIdByProjectionNodeId: Map<string, string>;\n };\n const projectionSnapshots = new WeakMap<object, ProjectionSnapshot>();\n const compiledPrefabNodesByDocument = new WeakMap<object, Map<string, PlayableEditorRuntimeSceneNode[]>>();\n const publishStats = (): void => {\n const target = options.statsTarget ?? (typeof window !== 'undefined' ? window as unknown as Record<string, unknown> : null);\n if (!target) return;\n target[options.statsTargetKey ?? '__fpsGameEditorProjectionImportStats'] = { ...stats };\n };\n const resolveCachedImportPlan = (context: PlayableBabylonProjectionImportContext): EditorSceneRuntimePreviewImportPlan | null => {\n const cached = importPlanCache.get(context);\n if (cached) return cached;\n const importPlan = createEditorSceneRuntimePreviewImportPlan({\n assetsModule: options.assetsModule,\n asset: context.asset,\n nodeId: context.node.id,\n });\n if (importPlan) importPlanCache.set(context, importPlan);\n return importPlan;\n };\n const handleEvent = (event: BabylonAssetContainerProjectionImportEvent): void => {\n stats.lastCacheKey = event.cacheKey;\n if (event.type === 'container-load-start') {\n stats.containerLoads += 1;\n stats.lastError = null;\n } else if (event.type === 'container-cache-hit') {\n stats.containerCacheHits += 1;\n } else if (event.type === 'instantiate') {\n stats.instantiateCalls += 1;\n } else if (event.type === 'container-load-failure') {\n stats.fallbackCount += 1;\n stats.lastError = event.error instanceof Error ? event.error.message : String(event.error);\n }\n publishStats();\n };\n const modelImporter = createBabylonAssetContainerProjectionImporter({\n loadContainer: async (context) => {\n const importPlan = resolveCachedImportPlan(context);\n if (!importPlan) throw new Error('[LocalEditor] Missing model import plan for projection asset container');\n const loaderModule = await (options.loadBabylonSceneLoader?.() ?? loadDefaultBabylonSceneLoader());\n const pathInfo = await options.resolveModelPathAndFile(importPlan.url);\n return loaderModule.SceneLoader.LoadAssetContainerAsync(\n pathInfo.path,\n pathInfo.filename,\n context.scene,\n undefined,\n pathInfo.isDataUrl || pathInfo.isCompressed ? '.glb' : undefined,\n ) as Promise<any>;\n },\n resolveCacheKey: (context) => {\n const importPlan = resolveCachedImportPlan(context);\n const assetId = readEditorSceneRuntimePreviewAssetId(context.asset) ?? '';\n const assetRecord = context.asset as Record<string, unknown>;\n const assetGuid = typeof assetRecord.guid === 'string' ? assetRecord.guid : '';\n return importPlan\n ? `fps-editor:model:${assetId}:${assetGuid}:${importPlan.url}`\n : `fps-editor:model:${assetId}:${assetGuid}`;\n },\n onEvent: handleEvent,\n });\n const readPreviewGroundDecal = (asset: unknown): TGroundDecal | null => {\n const metadata = asset && typeof asset === 'object' && !Array.isArray(asset)\n ? (asset as { metadata?: unknown }).metadata\n : null;\n const groundDecalUi = metadata && typeof metadata === 'object' && !Array.isArray(metadata)\n ? (metadata as { groundDecalUi?: unknown }).groundDecalUi\n : null;\n return options.groundDecal?.isGroundDecalConfig(groundDecalUi) ? groundDecalUi : null;\n };\n const decorateProjectionNode = (\n editorScene: TDocument,\n gameObject: TGameObject,\n sourceNode: PlayableBabylonProjectionNode,\n ): PlayableBabylonProjectionNode => {\n const node = sourceNode;\n if (options.groundDecal?.isGroundDecalConfig((gameObject as { groundDecal?: unknown }).groundDecal)) {\n node.asset = {\n id: `ground-decal-ui:${gameObject.id}`,\n metadata: {\n assetId: `ground-decal-ui:${gameObject.id}`,\n type: 'texture',\n groundDecalUi: structuredClone((gameObject as unknown as { groundDecal: TGroundDecal }).groundDecal),\n },\n };\n node.primitive = null;\n }\n primitiveProjectionInstancing.remember(node);\n return node;\n };\n const createProjectionNodesForGameObject = (\n editorScene: TDocument,\n gameObject: TGameObject,\n ): PlayableBabylonProjectionNode[] => {\n const relation = resolveEditorScenePrefabInstanceRelation(editorScene, gameObject.id);\n const definition = relation.definition;\n const hasExplicitComposition = isEditorScenePrefabAsset(definition)\n && definition.prefab.compositionVersion === EDITOR_SCENE_PREFAB_COMPOSITION_VERSION\n && Array.isArray(definition.prefab.nodes)\n && definition.prefab.nodes.length > 0\n && !!readEditorScenePrefabRootNodeId(definition);\n if (!hasExplicitComposition) {\n return [decorateProjectionNode(\n editorScene,\n gameObject,\n createEditorSceneRuntimePreviewNode(editorScene, gameObject) as unknown as PlayableBabylonProjectionNode,\n )];\n }\n let compiledNodesByObjectId = compiledPrefabNodesByDocument.get(editorScene);\n if (!compiledNodesByObjectId) {\n compiledNodesByObjectId = new Map<string, PlayableEditorRuntimeSceneNode[]>();\n const baseSceneConfig: PlayableEditorRuntimeSceneConfig = {\n schemaVersion: 3,\n scene: {\n rootId: 'root',\n assets: [],\n nodes: [],\n materialAssets: [],\n materials: [],\n textures: [],\n },\n };\n const compiled = compileEditorSceneDocumentToSceneConfig(\n editorScene as unknown as PlayableEditorSceneCompilerDocument,\n baseSceneConfig,\n );\n for (const node of compiled.sceneConfig.scene.nodes) {\n const objectId = node.source?.objectId;\n if (!objectId) continue;\n const nodes = compiledNodesByObjectId.get(objectId) ?? [];\n nodes.push(node);\n compiledNodesByObjectId.set(objectId, nodes);\n }\n compiledPrefabNodesByDocument.set(editorScene, compiledNodesByObjectId);\n }\n return (compiledNodesByObjectId.get(gameObject.id) ?? []).map(node => decorateProjectionNode(\n editorScene,\n gameObject,\n createProjectionNodeFromCompiledRuntimeNode(editorScene, node),\n ));\n };\n const createProjectionSnapshot = (editorScene: TDocument): ProjectionSnapshot => {\n const cached = projectionSnapshots.get(editorScene);\n if (cached) return cached;\n const nodesByTargetId = new Map<string, PlayableBabylonProjectionNode[]>();\n const targetIdByProjectionNodeId = new Map<string, string>();\n const nodes = editorScene.scene.gameObjects.flatMap((gameObject) => {\n const targetId = gameObject.id;\n const targetNodes = createProjectionNodesForGameObject(editorScene, gameObject as TGameObject);\n nodesByTargetId.set(targetId, targetNodes);\n for (const node of targetNodes) targetIdByProjectionNodeId.set(node.id, targetId);\n return targetNodes;\n });\n const snapshot = { nodes, nodesByTargetId, targetIdByProjectionNodeId };\n projectionSnapshots.set(editorScene, snapshot);\n return snapshot;\n };\n const createProjectionNode = (\n editorScene: TDocument,\n gameObject: TGameObject,\n ): PlayableBabylonProjectionNode => {\n const nodes = createProjectionSnapshot(editorScene).nodesByTargetId.get(gameObject.id) ?? [];\n return nodes.find(node => node.id === gameObject.id)\n ?? nodes[0]\n ?? decorateProjectionNode(\n editorScene,\n gameObject,\n createEditorSceneRuntimePreviewNode(editorScene, gameObject) as unknown as PlayableBabylonProjectionNode,\n );\n };\n\n return {\n createEditorGrid(BABYLON, scene, camera) {\n return createPlayableBabylonEditorGrid({\n babylon: BABYLON,\n scene,\n camera,\n name: options.gridName ?? 'fps-editor-grid',\n halfLineCount: 96,\n });\n },\n createEditorPreviewBabylonModule(BABYLON) {\n return primitiveProjectionInstancing.createPreviewBabylonModule(BABYLON);\n },\n createProjectionNodes(editorScene) {\n const nodes = createProjectionSnapshot(editorScene).nodes;\n primitiveProjectionInstancing.sync(nodes);\n return nodes;\n },\n createProjectionNode,\n getProjectionNodesForTarget(editorScene, targetId) {\n return [...(createProjectionSnapshot(editorScene).nodesByTargetId.get(targetId) ?? [])];\n },\n resolveProjectionTargetId(editorScene, projectionNodeId) {\n return createProjectionSnapshot(editorScene).targetIdByProjectionNodeId.get(projectionNodeId) ?? null;\n },\n getProjectionSelectionNodeIds(editorScene, targetId) {\n return (createProjectionSnapshot(editorScene).nodesByTargetId.get(targetId) ?? []).map(node => node.id);\n },\n createSceneCameraPreviewRig(editorScene) {\n return createEditorSceneRuntimePreviewMainCameraRig(\n editorScene,\n options.defaultCamera,\n ) as PlayableBabylonSceneCameraPreviewRig | null;\n },\n async importEditorProjectionModel(context) {\n stats.importModelCalls += 1;\n publishStats();\n const groundDecalUi = readPreviewGroundDecal(context.asset);\n if (groundDecalUi && options.groundDecal) {\n return createGroundDecalProjectionResult(context, groundDecalUi, options.groundDecal);\n }\n const assetId = readEditorSceneRuntimePreviewAssetId(context.asset);\n if (!assetId) {\n stats.fallbackCount += 1;\n publishStats();\n return null;\n }\n const importPlan = resolveCachedImportPlan(context);\n if (!importPlan) {\n const kind = readEditorSceneRuntimePreviewAssetKind(context.asset) === 'texture' ? 'texture' : 'model';\n stats.fallbackCount += 1;\n publishStats();\n console.warn('[LocalEditor] Missing projection asset URL', createEditorSceneRuntimePreviewMissingAssetUrlDiagnostic(context.asset, kind));\n return null;\n }\n return await modelImporter(context) ?? null;\n },\n createEditorSceneLibraryAssetPreview(asset) {\n if (asset.kind !== 'texture') return undefined;\n const url = resolveEditorSceneRuntimePreviewAssetUrl(options.assetsModule, asset, 'texture');\n return url ? { kind: 'image', url, alt: asset.displayName, fit: 'contain' } : undefined;\n },\n createEditorSceneInspectorTextureAssets(assets) {\n return assets\n .filter(asset => asset.kind === 'texture')\n .flatMap((asset) => {\n const url = resolveEditorSceneRuntimePreviewAssetUrl(options.assetsModule, asset, 'texture');\n if (!url) return [];\n const environmentTexture = isEnvironmentTextureAsset(asset, url);\n return [{\n id: asset.assetId,\n label: asset.displayName || asset.assetId,\n url,\n meta: environmentTexture ? `${asset.assetId} · IBL` : asset.assetId,\n usage: environmentTexture ? 'environment' : 'material',\n capabilities: {\n materialTexture: !environmentTexture,\n environmentTexture,\n },\n }];\n });\n },\n resolveEditorSceneTextureRefUrl(assets, texture) {\n if (!texture || typeof texture !== 'object') return null;\n const textureAssetId = typeof texture.textureAssetId === 'string' ? texture.textureAssetId.trim() : '';\n if (textureAssetId) {\n const asset = assets.find(candidate => candidate.kind === 'texture' && candidate.assetId === textureAssetId);\n return asset ? resolveEditorSceneRuntimePreviewAssetUrl(options.assetsModule, asset, 'texture') ?? null : null;\n }\n const textureUrl = typeof texture.url === 'string' ? texture.url.trim() : '';\n return textureUrl || null;\n },\n };\n}\n\nfunction createProjectionNodeFromCompiledRuntimeNode(\n editorScene: EditorSceneDocument,\n node: PlayableEditorRuntimeSceneNode,\n): PlayableBabylonProjectionNode {\n const scale = typeof node.transform?.scale === 'number'\n ? { x: node.transform.scale, y: node.transform.scale, z: node.transform.scale }\n : node.transform?.scale;\n const components = node.transform\n ? [{\n type: 'Transform',\n position: structuredClone(node.transform.position ?? { x: 0, y: 0, z: 0 }),\n rotation: structuredClone(node.transform.rotation ?? { x: 0, y: 0, z: 0 }),\n scale: structuredClone(scale ?? { x: 1, y: 1, z: 1 }),\n }]\n : [];\n if (node.kind === 'instance') {\n components.push({ type: 'ModelRenderer', assetId: node.instance.assetId } as never);\n }\n const gameObject = {\n id: node.id,\n name: node.name ?? node.id,\n kind: node.kind === 'instance' || node.kind === 'primitive' || node.kind === 'transform'\n ? node.kind\n : 'group',\n ...(node.parentId ? { parentId: node.parentId } : {}),\n ...(node.enabled === false ? { active: false } : {}),\n ...(node.shadow ? { shadow: structuredClone(node.shadow) } : {}),\n ...(node.rendering ? { rendering: structuredClone(node.rendering) } : {}),\n ...(node.kind === 'instance' || node.kind === 'primitive' || node.kind === 'transform'\n ? node.overrides ? { overrides: structuredClone(node.overrides) } : {}\n : {}),\n ...(node.kind === 'primitive' ? { primitive: structuredClone(node.primitive) } : {}),\n ...(node.kind === 'transform' && node.camera ? { camera: structuredClone(node.camera) } : {}),\n ...(node.kind === 'transform' && node.light ? { light: structuredClone(node.light) } : {}),\n ...(node.kind === 'transform' && node.marker ? { marker: structuredClone(node.marker) } : {}),\n components,\n } as unknown as EditorSceneGameObject;\n const previewNode = createEditorSceneRuntimePreviewNode(editorScene, gameObject) as unknown as PlayableBabylonProjectionNode;\n return {\n ...previewNode,\n ...(node.shadowPlan ? { shadowPlan: structuredClone(node.shadowPlan) } : {}),\n };\n}\n\nasync function loadDefaultBabylonSceneLoader() {\n await import('@babylonjs/loaders/glTF');\n return import('@babylonjs/core/Loading/sceneLoader');\n}\n\nasync function createGroundDecalProjectionResult<TGroundDecal>(\n context: PlayableBabylonProjectionImportContext,\n decal: TGroundDecal,\n hooks: FpsGameEditorProductProjectionGroundDecalHooks<TGroundDecal>,\n): Promise<PlayableBabylonProjectionImportResult> {\n const [{ MeshBuilder }, { StandardMaterial }, { Color3 }] = await Promise.all([\n import('@babylonjs/core/Meshes/meshBuilder'),\n import('@babylonjs/core/Materials/standardMaterial'),\n import('@babylonjs/core/Maths/math.color'),\n ]);\n const size = hooks.readSize(decal);\n const rendering = hooks.readRendering?.(decal) ?? null;\n const mesh = MeshBuilder.CreateGround(`${context.node.id}.groundDecalUiProjection`, {\n width: size.width,\n height: size.depth,\n }, context.scene);\n mesh.isPickable = true;\n mesh.receiveShadows = false;\n mesh.alphaIndex = rendering?.alphaIndex ?? 100;\n const mat = new StandardMaterial(`${context.node.id}.groundDecalUiProjectionMaterial`, context.scene);\n const { texture, ready } = hooks.createDynamicTexture(`${context.node.id}.groundDecalUiProjectionTexture`, context.scene, decal);\n await ready;\n mat.diffuseTexture = texture;\n mat.useAlphaFromDiffuseTexture = true;\n mat.diffuseColor = new Color3(1, 1, 1);\n mat.emissiveColor = new Color3(1, 1, 1);\n mat.specularColor = new Color3(0, 0, 0);\n mat.backFaceCulling = false;\n mat.disableLighting = true;\n if (typeof rendering?.diffuseTextureLevel === 'number' && Number.isFinite(rendering.diffuseTextureLevel)) {\n if (mat.diffuseTexture) mat.diffuseTexture.level = rendering.diffuseTextureLevel;\n }\n if (\n typeof rendering?.emissiveTextureLevel === 'number'\n && Number.isFinite(rendering.emissiveTextureLevel)\n && rendering.emissiveTextureLevel > 0\n ) {\n mat.emissiveTexture = texture;\n if (mat.emissiveTexture) mat.emissiveTexture.level = rendering.emissiveTextureLevel;\n }\n mesh.material = mat;\n return { meshes: [mesh], transformNodes: [], animationGroups: [] };\n}\n\nfunction isEnvironmentTextureAsset(asset: EditorSceneAssetLibraryItem, resolvedUrl: string): boolean {\n const metadata = asset.metadata && typeof asset.metadata === 'object' && !Array.isArray(asset.metadata)\n ? asset.metadata as Record<string, unknown>\n : {};\n if (metadata.textureUsage === 'environment' || metadata.usage === 'environment') return true;\n const capabilities = metadata.capabilities && typeof metadata.capabilities === 'object' && !Array.isArray(metadata.capabilities)\n ? metadata.capabilities as Record<string, unknown>\n : null;\n if (capabilities?.environmentTexture === true) return true;\n if (capabilities?.environmentTexture === false) return false;\n const candidates = [\n resolvedUrl,\n asset.displayName,\n asset.assetId,\n typeof metadata.relativePath === 'string' ? metadata.relativePath : '',\n typeof metadata.originalFileName === 'string' ? metadata.originalFileName : '',\n ];\n return candidates.some(value => /\\.(env|hdr|dds|ktx|ktx2)(?:[?#].*)?$/i.test(value));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"playable-product-projection-preview.js","sourceRoot":"","sources":["../src/playable-product-projection-preview.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createBabylonAssetContainerProjectionImporter,\n createBabylonPrimitiveProjectionInstancingController,\n createPlayableBabylonEditorGrid,\n type BabylonAssetContainerProjectionImportEvent,\n type PlayableBabylonProjectionImportContext,\n type PlayableBabylonProjectionImportResult,\n type PlayableBabylonProjectionNode,\n type PlayableBabylonSceneCameraPreviewRig,\n} from './playable-babylon-facade.js';\nimport {\n EDITOR_SCENE_PREFAB_COMPOSITION_VERSION,\n compileEditorSceneDocumentToSceneConfig,\n createEditorSceneRuntimePreviewImportPlan,\n createEditorSceneRuntimePreviewMainCameraRig,\n createEditorSceneRuntimePreviewMissingAssetUrlDiagnostic,\n createEditorSceneRuntimePreviewNode,\n isEditorScenePrefabAsset,\n readEditorSceneRuntimePreviewAssetId,\n readEditorSceneRuntimePreviewAssetKind,\n readEditorScenePrefabRootNodeId,\n resolveEditorSceneRuntimePreviewAssetUrl,\n resolveEditorScenePrefabInstanceRelation,\n type EditorSceneAssetLibraryItem,\n type EditorSceneCameraRig,\n type EditorSceneDocument,\n type EditorSceneGameObject,\n type EditorSceneRuntimePreviewAssetsModule,\n type PlayableEditorRuntimeSceneConfig,\n type PlayableEditorRuntimeSceneNode,\n type PlayableEditorSceneCompilerDocument,\n} from '@fps-games/editor-playable-sdk';\nimport {\n createPlayableAssetResourceResolver,\n type PlayableGeneratedAssetCatalogEntry,\n type PlayableResolvedAssetResource,\n} from '@fps-games/playable-assets';\n\nexport type FpsGameEditorProductBabylonModule = Record<string, any>;\n\nexport interface FpsGameEditorProductProjectionImportStats {\n importModelCalls: number;\n containerLoads: number;\n containerCacheHits: number;\n instantiateCalls: number;\n fallbackCount: number;\n lastCacheKey: string | null;\n lastError: string | null;\n}\n\nexport interface FpsGameEditorProductProjectionGroundDecalHooks<TGroundDecal> {\n isGroundDecalConfig(value: unknown): value is TGroundDecal;\n createDynamicTexture(\n name: string,\n scene: unknown,\n decal: TGroundDecal,\n ): { texture: any; ready: Promise<unknown> };\n readSize(decal: TGroundDecal): { width: number; depth: number };\n readRendering?(decal: TGroundDecal): {\n alphaIndex?: number;\n diffuseTextureLevel?: number;\n emissiveTextureLevel?: number;\n } | null | undefined;\n}\n\nexport interface FpsGameEditorProductProjectionPreviewOptions<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n TGameObject extends EditorSceneGameObject = EditorSceneGameObject,\n TAsset extends EditorSceneAssetLibraryItem = EditorSceneAssetLibraryItem,\n TGroundDecal = unknown,\n> {\n assetsModule: EditorSceneRuntimePreviewAssetsModule;\n defaultCamera: EditorSceneCameraRig;\n gridName?: string;\n primitiveSourceMeshNamePrefix?: string;\n statsTarget?: Record<string, unknown>;\n statsTargetKey?: string;\n groundDecal?: FpsGameEditorProductProjectionGroundDecalHooks<TGroundDecal>;\n loadBabylonSceneLoader?(): Promise<{\n SceneLoader: {\n LoadAssetContainerAsync(\n path: string,\n filename: string,\n scene: unknown,\n onProgress?: unknown,\n pluginExtension?: string,\n ): Promise<unknown>;\n };\n }>;\n resolveModelPathAndFile(url: string): Promise<{\n path: string;\n filename: string;\n isDataUrl?: boolean;\n isCompressed?: boolean;\n }>;\n}\n\nexport interface FpsGameEditorProductProjectionPreview<\n TDocument extends EditorSceneDocument = EditorSceneDocument,\n TGameObject extends EditorSceneGameObject = EditorSceneGameObject,\n TAsset extends EditorSceneAssetLibraryItem = EditorSceneAssetLibraryItem,\n> {\n createEditorGrid(BABYLON: FpsGameEditorProductBabylonModule, scene: unknown, camera?: unknown): unknown;\n createEditorPreviewBabylonModule(BABYLON: FpsGameEditorProductBabylonModule): FpsGameEditorProductBabylonModule;\n createProjectionNodes(editorScene: TDocument): PlayableBabylonProjectionNode[];\n createProjectionNode(editorScene: TDocument, gameObject: TGameObject): PlayableBabylonProjectionNode;\n getProjectionNodesForTarget(editorScene: TDocument, targetId: string): PlayableBabylonProjectionNode[];\n resolveProjectionTargetId(editorScene: TDocument, projectionNodeId: string): string | null;\n getProjectionSelectionNodeIds(editorScene: TDocument, targetId: string): string[];\n createSceneCameraPreviewRig(editorScene: TDocument): PlayableBabylonSceneCameraPreviewRig | null;\n importEditorProjectionModel(context: PlayableBabylonProjectionImportContext): Promise<PlayableBabylonProjectionImportResult | null>;\n createEditorSceneLibraryAssetPreview(asset: TAsset): { kind: 'image'; url: string; alt: string; fit: 'contain' } | undefined;\n createEditorSceneInspectorTextureAssets(assets: readonly TAsset[]): Array<{\n id: string;\n label: string;\n resource: PlayableResolvedAssetResource;\n url: string;\n meta: string;\n usage: 'environment' | 'material';\n capabilities: { materialTexture: boolean; environmentTexture: boolean };\n }>;\n resolveEditorSceneTextureRefUrl(\n assets: readonly TAsset[],\n texture: { textureAssetId?: string | null; url?: string | null } | null | undefined,\n ): string | null;\n}\n\ntype EditorSceneRuntimePreviewImportPlan = NonNullable<ReturnType<typeof createEditorSceneRuntimePreviewImportPlan>>;\n\nexport function createFpsGameEditorProductProjectionPreview<\n TDocument extends EditorSceneDocument,\n TGameObject extends EditorSceneGameObject,\n TAsset extends EditorSceneAssetLibraryItem,\n TGroundDecal = unknown,\n>(\n options: FpsGameEditorProductProjectionPreviewOptions<TDocument, TGameObject, TAsset, TGroundDecal>,\n): FpsGameEditorProductProjectionPreview<TDocument, TGameObject, TAsset> {\n const stats: FpsGameEditorProductProjectionImportStats = {\n importModelCalls: 0,\n containerLoads: 0,\n containerCacheHits: 0,\n instantiateCalls: 0,\n fallbackCount: 0,\n lastCacheKey: null,\n lastError: null,\n };\n const importPlanCache = new WeakMap<object, EditorSceneRuntimePreviewImportPlan>();\n const primitiveProjectionInstancing = createBabylonPrimitiveProjectionInstancingController({\n sourceMeshNamePrefix: options.primitiveSourceMeshNamePrefix ?? '__fps_editor_primitive_source',\n });\n type ProjectionSnapshot = {\n nodes: PlayableBabylonProjectionNode[];\n nodesByTargetId: Map<string, PlayableBabylonProjectionNode[]>;\n targetIdByProjectionNodeId: Map<string, string>;\n };\n const projectionSnapshots = new WeakMap<object, ProjectionSnapshot>();\n const compiledPrefabNodesByDocument = new WeakMap<object, Map<string, PlayableEditorRuntimeSceneNode[]>>();\n const publishStats = (): void => {\n const target = options.statsTarget ?? (typeof window !== 'undefined' ? window as unknown as Record<string, unknown> : null);\n if (!target) return;\n target[options.statsTargetKey ?? '__fpsGameEditorProjectionImportStats'] = { ...stats };\n };\n const resolveCachedImportPlan = (context: PlayableBabylonProjectionImportContext): EditorSceneRuntimePreviewImportPlan | null => {\n const cached = importPlanCache.get(context);\n if (cached) return cached;\n const importPlan = createEditorSceneRuntimePreviewImportPlan({\n assetsModule: options.assetsModule,\n asset: context.asset,\n nodeId: context.node.id,\n });\n if (importPlan) importPlanCache.set(context, importPlan);\n return importPlan;\n };\n const handleEvent = (event: BabylonAssetContainerProjectionImportEvent): void => {\n stats.lastCacheKey = event.cacheKey;\n if (event.type === 'container-load-start') {\n stats.containerLoads += 1;\n stats.lastError = null;\n } else if (event.type === 'container-cache-hit') {\n stats.containerCacheHits += 1;\n } else if (event.type === 'instantiate') {\n stats.instantiateCalls += 1;\n } else if (event.type === 'container-load-failure') {\n stats.fallbackCount += 1;\n stats.lastError = event.error instanceof Error ? event.error.message : String(event.error);\n }\n publishStats();\n };\n const modelImporter = createBabylonAssetContainerProjectionImporter({\n loadContainer: async (context) => {\n const importPlan = resolveCachedImportPlan(context);\n if (!importPlan) throw new Error('[LocalEditor] Missing model import plan for projection asset container');\n const loaderModule = await (options.loadBabylonSceneLoader?.() ?? loadDefaultBabylonSceneLoader());\n const pathInfo = await options.resolveModelPathAndFile(importPlan.url);\n return loaderModule.SceneLoader.LoadAssetContainerAsync(\n pathInfo.path,\n pathInfo.filename,\n context.scene,\n undefined,\n pathInfo.isDataUrl || pathInfo.isCompressed ? '.glb' : undefined,\n ) as Promise<any>;\n },\n resolveCacheKey: (context) => {\n const importPlan = resolveCachedImportPlan(context);\n const assetId = readEditorSceneRuntimePreviewAssetId(context.asset) ?? '';\n const assetRecord = context.asset as Record<string, unknown>;\n const assetGuid = typeof assetRecord.guid === 'string' ? assetRecord.guid : '';\n return importPlan\n ? `fps-editor:model:${assetId}:${assetGuid}:${importPlan.url}`\n : `fps-editor:model:${assetId}:${assetGuid}`;\n },\n onEvent: handleEvent,\n });\n const readPreviewGroundDecal = (asset: unknown): TGroundDecal | null => {\n const metadata = asset && typeof asset === 'object' && !Array.isArray(asset)\n ? (asset as { metadata?: unknown }).metadata\n : null;\n const groundDecalUi = metadata && typeof metadata === 'object' && !Array.isArray(metadata)\n ? (metadata as { groundDecalUi?: unknown }).groundDecalUi\n : null;\n return options.groundDecal?.isGroundDecalConfig(groundDecalUi) ? groundDecalUi : null;\n };\n const decorateProjectionNode = (\n editorScene: TDocument,\n gameObject: TGameObject,\n sourceNode: PlayableBabylonProjectionNode,\n ): PlayableBabylonProjectionNode => {\n const node = sourceNode;\n if (options.groundDecal?.isGroundDecalConfig((gameObject as { groundDecal?: unknown }).groundDecal)) {\n node.asset = {\n id: `ground-decal-ui:${gameObject.id}`,\n metadata: {\n assetId: `ground-decal-ui:${gameObject.id}`,\n type: 'texture',\n groundDecalUi: structuredClone((gameObject as unknown as { groundDecal: TGroundDecal }).groundDecal),\n },\n };\n node.primitive = null;\n }\n primitiveProjectionInstancing.remember(node);\n return node;\n };\n const createProjectionNodesForGameObject = (\n editorScene: TDocument,\n gameObject: TGameObject,\n ): PlayableBabylonProjectionNode[] => {\n const relation = resolveEditorScenePrefabInstanceRelation(editorScene, gameObject.id);\n const definition = relation.definition;\n const hasExplicitComposition = isEditorScenePrefabAsset(definition)\n && definition.prefab.compositionVersion === EDITOR_SCENE_PREFAB_COMPOSITION_VERSION\n && Array.isArray(definition.prefab.nodes)\n && definition.prefab.nodes.length > 0\n && !!readEditorScenePrefabRootNodeId(definition);\n if (!hasExplicitComposition) {\n return [decorateProjectionNode(\n editorScene,\n gameObject,\n createEditorSceneRuntimePreviewNode(editorScene, gameObject) as unknown as PlayableBabylonProjectionNode,\n )];\n }\n let compiledNodesByObjectId = compiledPrefabNodesByDocument.get(editorScene);\n if (!compiledNodesByObjectId) {\n compiledNodesByObjectId = new Map<string, PlayableEditorRuntimeSceneNode[]>();\n const baseSceneConfig: PlayableEditorRuntimeSceneConfig = {\n schemaVersion: 3,\n scene: {\n rootId: 'root',\n assets: [],\n nodes: [],\n materialAssets: [],\n materials: [],\n textures: [],\n },\n };\n const compiled = compileEditorSceneDocumentToSceneConfig(\n editorScene as unknown as PlayableEditorSceneCompilerDocument,\n baseSceneConfig,\n );\n for (const node of compiled.sceneConfig.scene.nodes) {\n const objectId = node.source?.objectId;\n if (!objectId) continue;\n const nodes = compiledNodesByObjectId.get(objectId) ?? [];\n nodes.push(node);\n compiledNodesByObjectId.set(objectId, nodes);\n }\n compiledPrefabNodesByDocument.set(editorScene, compiledNodesByObjectId);\n }\n return (compiledNodesByObjectId.get(gameObject.id) ?? []).map(node => decorateProjectionNode(\n editorScene,\n gameObject,\n createProjectionNodeFromCompiledRuntimeNode(editorScene, node),\n ));\n };\n const createProjectionSnapshot = (editorScene: TDocument): ProjectionSnapshot => {\n const cached = projectionSnapshots.get(editorScene);\n if (cached) return cached;\n const nodesByTargetId = new Map<string, PlayableBabylonProjectionNode[]>();\n const targetIdByProjectionNodeId = new Map<string, string>();\n const nodes = editorScene.scene.gameObjects.flatMap((gameObject) => {\n const targetId = gameObject.id;\n const targetNodes = createProjectionNodesForGameObject(editorScene, gameObject as TGameObject);\n nodesByTargetId.set(targetId, targetNodes);\n for (const node of targetNodes) targetIdByProjectionNodeId.set(node.id, targetId);\n return targetNodes;\n });\n const snapshot = { nodes, nodesByTargetId, targetIdByProjectionNodeId };\n projectionSnapshots.set(editorScene, snapshot);\n return snapshot;\n };\n const createProjectionNode = (\n editorScene: TDocument,\n gameObject: TGameObject,\n ): PlayableBabylonProjectionNode => {\n const nodes = createProjectionSnapshot(editorScene).nodesByTargetId.get(gameObject.id) ?? [];\n return nodes.find(node => node.id === gameObject.id)\n ?? nodes[0]\n ?? decorateProjectionNode(\n editorScene,\n gameObject,\n createEditorSceneRuntimePreviewNode(editorScene, gameObject) as unknown as PlayableBabylonProjectionNode,\n );\n };\n\n return {\n createEditorGrid(BABYLON, scene, camera) {\n return createPlayableBabylonEditorGrid({\n babylon: BABYLON,\n scene,\n camera,\n name: options.gridName ?? 'fps-editor-grid',\n halfLineCount: 96,\n });\n },\n createEditorPreviewBabylonModule(BABYLON) {\n return primitiveProjectionInstancing.createPreviewBabylonModule(BABYLON);\n },\n createProjectionNodes(editorScene) {\n const nodes = createProjectionSnapshot(editorScene).nodes;\n primitiveProjectionInstancing.sync(nodes);\n return nodes;\n },\n createProjectionNode,\n getProjectionNodesForTarget(editorScene, targetId) {\n return [...(createProjectionSnapshot(editorScene).nodesByTargetId.get(targetId) ?? [])];\n },\n resolveProjectionTargetId(editorScene, projectionNodeId) {\n return createProjectionSnapshot(editorScene).targetIdByProjectionNodeId.get(projectionNodeId) ?? null;\n },\n getProjectionSelectionNodeIds(editorScene, targetId) {\n return (createProjectionSnapshot(editorScene).nodesByTargetId.get(targetId) ?? []).map(node => node.id);\n },\n createSceneCameraPreviewRig(editorScene) {\n return createEditorSceneRuntimePreviewMainCameraRig(\n editorScene,\n options.defaultCamera,\n ) as PlayableBabylonSceneCameraPreviewRig | null;\n },\n async importEditorProjectionModel(context) {\n stats.importModelCalls += 1;\n publishStats();\n const groundDecalUi = readPreviewGroundDecal(context.asset);\n if (groundDecalUi && options.groundDecal) {\n return createGroundDecalProjectionResult(context, groundDecalUi, options.groundDecal);\n }\n const assetId = readEditorSceneRuntimePreviewAssetId(context.asset);\n if (!assetId) {\n stats.fallbackCount += 1;\n publishStats();\n return null;\n }\n const importPlan = resolveCachedImportPlan(context);\n if (!importPlan) {\n const kind = readEditorSceneRuntimePreviewAssetKind(context.asset) === 'texture' ? 'texture' : 'model';\n stats.fallbackCount += 1;\n publishStats();\n console.warn('[LocalEditor] Missing projection asset URL', createEditorSceneRuntimePreviewMissingAssetUrlDiagnostic(context.asset, kind));\n return null;\n }\n return await modelImporter(context) ?? null;\n },\n createEditorSceneLibraryAssetPreview(asset) {\n if (asset.kind !== 'texture') return undefined;\n const url = resolveEditorSceneRuntimePreviewAssetUrl(options.assetsModule, asset, 'texture');\n return url ? { kind: 'image', url, alt: asset.displayName, fit: 'contain' } : undefined;\n },\n createEditorSceneInspectorTextureAssets(assets) {\n const resourceResolver = createPlayableAssetResourceResolver(\n (options.assetsModule.ASSET_CATALOG ?? {}) as Readonly<Record<string, PlayableGeneratedAssetCatalogEntry>>,\n );\n return assets\n .filter(asset => asset.kind === 'texture')\n .flatMap((asset) => {\n const resolved = resourceResolver.resolve({ assetId: asset.assetId });\n if (!resolved.ok) return [];\n const environmentTexture = isEnvironmentTextureAsset(asset, resolved.resource.url);\n return [{\n id: asset.assetId,\n label: asset.displayName || asset.assetId,\n resource: resolved.resource,\n url: resolved.resource.url,\n meta: environmentTexture ? `${asset.assetId} · IBL` : asset.assetId,\n usage: environmentTexture ? 'environment' : 'material',\n capabilities: {\n materialTexture: !environmentTexture,\n environmentTexture,\n },\n }];\n });\n },\n resolveEditorSceneTextureRefUrl(assets, texture) {\n if (!texture || typeof texture !== 'object') return null;\n const textureAssetId = typeof texture.textureAssetId === 'string' ? texture.textureAssetId.trim() : '';\n if (textureAssetId) {\n const asset = assets.find(candidate => candidate.kind === 'texture' && candidate.assetId === textureAssetId);\n return asset ? resolveEditorSceneRuntimePreviewAssetUrl(options.assetsModule, asset, 'texture') ?? null : null;\n }\n const textureUrl = typeof texture.url === 'string' ? texture.url.trim() : '';\n return textureUrl || null;\n },\n };\n}\n\nfunction createProjectionNodeFromCompiledRuntimeNode(\n editorScene: EditorSceneDocument,\n node: PlayableEditorRuntimeSceneNode,\n): PlayableBabylonProjectionNode {\n const scale = typeof node.transform?.scale === 'number'\n ? { x: node.transform.scale, y: node.transform.scale, z: node.transform.scale }\n : node.transform?.scale;\n const components = node.transform\n ? [{\n type: 'Transform',\n position: structuredClone(node.transform.position ?? { x: 0, y: 0, z: 0 }),\n rotation: structuredClone(node.transform.rotation ?? { x: 0, y: 0, z: 0 }),\n scale: structuredClone(scale ?? { x: 1, y: 1, z: 1 }),\n }]\n : [];\n if (node.kind === 'instance') {\n components.push({ type: 'ModelRenderer', assetId: node.instance.assetId } as never);\n }\n const gameObject = {\n id: node.id,\n name: node.name ?? node.id,\n kind: node.kind === 'instance' || node.kind === 'primitive' || node.kind === 'transform'\n ? node.kind\n : 'group',\n ...(node.parentId ? { parentId: node.parentId } : {}),\n ...(node.enabled === false ? { active: false } : {}),\n ...(node.shadow ? { shadow: structuredClone(node.shadow) } : {}),\n ...(node.rendering ? { rendering: structuredClone(node.rendering) } : {}),\n ...(node.kind === 'instance' || node.kind === 'primitive' || node.kind === 'transform'\n ? node.overrides ? { overrides: structuredClone(node.overrides) } : {}\n : {}),\n ...(node.kind === 'primitive' ? { primitive: structuredClone(node.primitive) } : {}),\n ...(node.kind === 'transform' && node.camera ? { camera: structuredClone(node.camera) } : {}),\n ...(node.kind === 'transform' && node.light ? { light: structuredClone(node.light) } : {}),\n ...(node.kind === 'transform' && node.marker ? { marker: structuredClone(node.marker) } : {}),\n components,\n } as unknown as EditorSceneGameObject;\n const previewNode = createEditorSceneRuntimePreviewNode(editorScene, gameObject) as unknown as PlayableBabylonProjectionNode;\n return {\n ...previewNode,\n ...(node.shadowPlan ? { shadowPlan: structuredClone(node.shadowPlan) } : {}),\n };\n}\n\nasync function loadDefaultBabylonSceneLoader() {\n await import('@babylonjs/loaders/glTF');\n return import('@babylonjs/core/Loading/sceneLoader');\n}\n\nasync function createGroundDecalProjectionResult<TGroundDecal>(\n context: PlayableBabylonProjectionImportContext,\n decal: TGroundDecal,\n hooks: FpsGameEditorProductProjectionGroundDecalHooks<TGroundDecal>,\n): Promise<PlayableBabylonProjectionImportResult> {\n const [{ MeshBuilder }, { StandardMaterial }, { Color3 }] = await Promise.all([\n import('@babylonjs/core/Meshes/meshBuilder'),\n import('@babylonjs/core/Materials/standardMaterial'),\n import('@babylonjs/core/Maths/math.color'),\n ]);\n const size = hooks.readSize(decal);\n const rendering = hooks.readRendering?.(decal) ?? null;\n const mesh = MeshBuilder.CreateGround(`${context.node.id}.groundDecalUiProjection`, {\n width: size.width,\n height: size.depth,\n }, context.scene);\n mesh.isPickable = true;\n mesh.receiveShadows = false;\n mesh.alphaIndex = rendering?.alphaIndex ?? 100;\n const mat = new StandardMaterial(`${context.node.id}.groundDecalUiProjectionMaterial`, context.scene);\n const { texture, ready } = hooks.createDynamicTexture(`${context.node.id}.groundDecalUiProjectionTexture`, context.scene, decal);\n await ready;\n mat.diffuseTexture = texture;\n mat.useAlphaFromDiffuseTexture = true;\n mat.diffuseColor = new Color3(1, 1, 1);\n mat.emissiveColor = new Color3(1, 1, 1);\n mat.specularColor = new Color3(0, 0, 0);\n mat.backFaceCulling = false;\n mat.disableLighting = true;\n if (typeof rendering?.diffuseTextureLevel === 'number' && Number.isFinite(rendering.diffuseTextureLevel)) {\n if (mat.diffuseTexture) mat.diffuseTexture.level = rendering.diffuseTextureLevel;\n }\n if (\n typeof rendering?.emissiveTextureLevel === 'number'\n && Number.isFinite(rendering.emissiveTextureLevel)\n && rendering.emissiveTextureLevel > 0\n ) {\n mat.emissiveTexture = texture;\n if (mat.emissiveTexture) mat.emissiveTexture.level = rendering.emissiveTextureLevel;\n }\n mesh.material = mat;\n return { meshes: [mesh], transformNodes: [], animationGroups: [] };\n}\n\nfunction isEnvironmentTextureAsset(asset: EditorSceneAssetLibraryItem, resolvedUrl: string): boolean {\n const metadata = asset.metadata && typeof asset.metadata === 'object' && !Array.isArray(asset.metadata)\n ? asset.metadata as Record<string, unknown>\n : {};\n if (metadata.textureUsage === 'environment' || metadata.usage === 'environment') return true;\n const capabilities = metadata.capabilities && typeof metadata.capabilities === 'object' && !Array.isArray(metadata.capabilities)\n ? metadata.capabilities as Record<string, unknown>\n : null;\n if (capabilities?.environmentTexture === true) return true;\n if (capabilities?.environmentTexture === false) return false;\n const candidates = [\n resolvedUrl,\n asset.displayName,\n asset.assetId,\n typeof metadata.relativePath === 'string' ? metadata.relativePath : '',\n typeof metadata.originalFileName === 'string' ? metadata.originalFileName : '',\n ];\n return candidates.some(value => /\\.(env|hdr|dds|ktx|ktx2)(?:[?#].*)?$/i.test(value));\n}\n"]}
|
package/dist/playable-sdk.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type { MaterialOwnerCandidate, MaterialOwnerCandidateSummary, MaterialOwn
|
|
|
6
6
|
export { mountEditorRuntimeCameraDebugPanel, mountEditorRuntimeDebugPanelShell, mountEditorRuntimeLightingDebugPanel, } from '@fps-games/editor-browser/runtime-debug';
|
|
7
7
|
export type { EditorRuntimeCameraDebugPanel, EditorRuntimeCameraDebugPanelOptions, EditorRuntimeCameraDebugPanInput, EditorRuntimeCameraDebugScreenPoint, EditorRuntimeCameraDebugViewportRect, EditorRuntimeDebugPanelLanguage, EditorRuntimeDebugPanelMode, EditorRuntimeDebugPanelPlacement, EditorRuntimeDebugPanelShell, EditorRuntimeDebugPanelShellOptions, EditorRuntimeDebugPanelStatusOptions, EditorRuntimeLightingDebugPanel, EditorRuntimeLightingDebugPanelOptions, } from '@fps-games/editor-browser/runtime-debug';
|
|
8
8
|
export { createPlayableBabylonEditorGrid, createBabylonAssetContainerProjectionImporter, createBabylonPrimitiveProjectionInstancingController, applyArtistMaterialProfileToRuntimeMaterial, applyMaterialValueToRuntimeMaterial, applyMaterialValueToRuntimeNode, createMaterialSlotOwnerPathMatchKey, resolveMaterialOwnerNode, resolveMaterialSlotOwnerNodes, isMaterialSlotOwnerPathMatch, normalizeMaterialSlotOwnerPath, resolveMaterialRuntimeKind, applyOutlineValueToRuntimeNode, resolveOutlineOwnerNode, resolveOutlineTarget, applyBabylonDefaultOutline, createBabylonEnvironmentTextureController, createBabylonDefaultPostProcessPipelineController, createBlobShadowSystem, createDynamicShadowSystem, createStaticProjectedShadowBakeHashes, createStaticProjectedShadowProfileHash, createStaticProjectedShadowArtifactSystem, createPlayableBabylonOutlineInspectorSection, createPlayableBabylonOutlineInspectorSeedPatchValue, isPlayableBabylonOutlineInspectorPatchPath, PLAYABLE_BABYLON_DEFAULT_OUTLINE_OVERRIDE, applyPlayableBabylonOutlineOverrideToRuntimeNode, applyPlayableBabylonOutlineOverrideToRuntimeTarget, createPlanarShadowSystem, normalizeBabylonEnvironmentTextureProfile, normalizeBabylonDefaultPostProcessProfile, normalizeBabylonDefaultPostProcessVolumeStack, resolveBabylonDefaultPostProcessVolumeStack, } from './playable-babylon-facade.js';
|
|
9
|
-
export { createPlayableBabylonRenderingCapability, createPlayableBabylonRenderingCapabilityFacade, createPlayableBabylonRenderingAlphaIndexMigrationPatch, createPlayableBabylonWorldRendering, createPlayableBabylonRenderingPanelState, createPlayableBabylonEnvironmentTextureProfile, createPlayableBabylonRenderingDiagnostics, createPlayableBabylonRuntimeRenderingControllers, createPlayableBabylonPlanarShadowPolicy, resolvePlayableBabylonPlanarShadowPolicy, createPlayableBabylonPlanarShadowPolicyInput, createPlayableBabylonPlanarShadowPreviewOptions, createPlayableBabylonPlanarShadowOptions, createPlayableBabylonPlanarShadowSystem, createPlayableBabylonBlobShadowOptions, createPlayableBabylonBlobShadowSystem, createPlayableBabylonStaticProjectedShadowOptions, createPlayableBabylonStaticProjectedShadowArtifactSystem,
|
|
9
|
+
export { createPlayableBabylonRenderingCapability, createPlayableBabylonRenderingCapabilityFacade, createPlayableBabylonRenderingAlphaIndexMigrationPatch, createPlayableBabylonWorldRendering, createPlayableBabylonRenderingPanelState, createPlayableBabylonEnvironmentTextureProfile, createPlayableBabylonRenderingDiagnostics, createPlayableBabylonRuntimeRenderingControllers, createPlayableBabylonPlanarShadowPolicy, resolvePlayableBabylonPlanarShadowPolicy, createPlayableBabylonPlanarShadowPolicyInput, createPlayableBabylonPlanarShadowPreviewOptions, createPlayableBabylonPlanarShadowOptions, createPlayableBabylonPlanarShadowSystem, createPlayableBabylonBlobShadowOptions, createPlayableBabylonBlobShadowSystem, createPlayableBabylonStaticProjectedShadowOptions, createPlayableBabylonStaticProjectedShadowArtifactSystem, resolvePlayableBabylonRenderingEnvironmentTextureResource, resolvePlayableBabylonRenderingEnvironmentTextureDiagnostic, isPlayableBabylonRenderingEnvironmentTextureAsset, isPlayableBabylonRenderingEnvironmentTextureResource, } from './playable-babylon-rendering.js';
|
|
10
10
|
export type { PlayableBabylonProjectionImportContext, PlayableBabylonProjectionImportResult, PlayableBabylonProjectionNode, PlayableBabylonSceneCameraPreviewRig, BabylonAssetContainerProjectionContainer, BabylonAssetContainerProjectionImportEvent, BabylonAssetContainerProjectionImporterOptions, BabylonAssetContainerProjectionInstantiatedEntries, BabylonPrimitiveProjectionInstancingController, BabylonPrimitiveProjectionInstancingControllerOptions, BabylonPrimitiveProjectionMaterialKind, BabylonPrimitiveProjectionNodeLike, BabylonPrimitiveProjectionShape, CanonicalMaterialChange, CanonicalOutlineChange, BabylonDefaultOutlineOptions, BabylonRendererOutlineStrategy, BabylonEnvironmentTextureController, BabylonEnvironmentTextureProfile, PlayableBabylonOutlineInspectorLanguage, PlayableBabylonOutlineInspectorSectionInput, PlayableBabylonOutlineInspectorSeedPatchInput, PlayableBabylonOutlineOverrideConfig, PlayableBabylonOutlineStrategy, PlayableBabylonOutlineRuntimeApplyResult, PlayableBabylonOutlineRuntimeOverride, BlobShadowOptions, BlobShadowSystem, DynamicShadowDiagnostics, DynamicShadowOptions, DynamicShadowParams, DynamicShadowSystem, PlanarShadowOptions, PlanarShadowSystem, StaticProjectedShadowArtifact, StaticProjectedShadowArtifactDiagnostic, StaticProjectedShadowArtifactHashInput, StaticProjectedShadowArtifactOptions, StaticProjectedShadowArtifactSystem, StaticProjectedShadowOptions, BabylonDefaultPostProcessPipelineController, BabylonDefaultPostProcessProfile, BabylonDefaultPostProcessResolveInput, BabylonDefaultPostProcessResolveResult, BabylonDefaultPostProcessResolvedVolume, BabylonDefaultPostProcessSamples, BabylonDefaultPostProcessVolume, BabylonDefaultPostProcessVolumeStack, BabylonDefaultToneMappingType, PostProcessVolumeShape, } from './playable-babylon-facade.js';
|
|
11
11
|
export type { PlayableBabylonRenderingCapabilityOptions, PlayableBabylonRenderingCapabilityFacade, PlayableBabylonRenderingCapabilityFacadeOptions, PlayableBabylonRenderingAlphaIndexMigrationPatchInput, PlayableBabylonRenderingContext, PlayableBabylonRenderingDocumentInput, PlayableBabylonRenderingDiagnostics, PlayableBabylonRenderingEnvironmentTextureDiagnostic, PlayableBabylonRenderingEnvironmentTextureDiagnosticStatus, PlayableBabylonRuntimeRenderingControllerOptions, PlayableBabylonRuntimeRenderingControllers, PlayableBabylonPlanarShadowPolicy, PlayableBabylonPlanarShadowPolicyInput, PlayableBabylonBlobShadowPolicyInput, PlayableBabylonStaticProjectedShadowPolicyInput, PlayableBabylonResolvedPlanarShadowPolicy, PlayableBabylonRenderingSetConfigInput, PlayableBabylonRenderingShadowPreviewOptions, PlayableBabylonRenderingStatusTone, PlayableBabylonRenderingValueResolver, PlayableBabylonWorldRendering, } from './playable-babylon-rendering.js';
|
|
12
12
|
export { SPATIAL_MARKER_GRAPH_SCHEMA_VERSION } from '@fps-games/editor-protocol';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playable-sdk.d.ts","sourceRoot":"","sources":["../src/playable-sdk.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACrC,8BAA8B,EAC9B,+BAA+B,EAC/B,kCAAkC,EAClC,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,iCAAiC,EACjC,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,4CAA4C,EAC5C,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,wCAAwC,EACxC,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,qCAAqC,EACrC,oCAAoC,EACpC,uBAAuB,EACvB,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,GACrC,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,6BAA6B,EAC7B,oCAAoC,EACpC,gCAAgC,EAChC,mCAAmC,EACnC,oCAAoC,EACpC,+BAA+B,EAC/B,2BAA2B,EAC3B,gCAAgC,EAChC,4BAA4B,EAC5B,mCAAmC,EACnC,oCAAoC,EACpC,+BAA+B,EAC/B,sCAAsC,GACvC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,+BAA+B,EAC/B,6CAA6C,EAC7C,oDAAoD,EACpD,2CAA2C,EAC3C,mCAAmC,EACnC,+BAA+B,EAC/B,mCAAmC,EACnC,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,yCAAyC,EACzC,iDAAiD,EACjD,sBAAsB,EACtB,yBAAyB,EACzB,qCAAqC,EACrC,sCAAsC,EACtC,yCAAyC,EACzC,4CAA4C,EAC5C,mDAAmD,EACnD,0CAA0C,EAC1C,yCAAyC,EACzC,gDAAgD,EAChD,kDAAkD,EAClD,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,6CAA6C,EAC7C,2CAA2C,GAC5C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wCAAwC,EACxC,8CAA8C,EAC9C,sDAAsD,EACtD,mCAAmC,EACnC,wCAAwC,EACxC,8CAA8C,EAC9C,yCAAyC,EACzC,gDAAgD,EAChD,uCAAuC,EACvC,wCAAwC,EACxC,4CAA4C,EAC5C,+CAA+C,EAC/C,wCAAwC,EACxC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,iDAAiD,EACjD,wDAAwD,EACxD,
|
|
1
|
+
{"version":3,"file":"playable-sdk.d.ts","sourceRoot":"","sources":["../src/playable-sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/playable-sdk.js
CHANGED
|
@@ -3,7 +3,7 @@ export { applyBabylonRenderingToMesh, applyBabylonRenderingToNodeTree, collectBa
|
|
|
3
3
|
export { isMaterialOwnerResolutionPointerVerified, resolveMaterialOwner, } from '@fps-games/playable-contracts';
|
|
4
4
|
export { mountEditorRuntimeCameraDebugPanel, mountEditorRuntimeDebugPanelShell, mountEditorRuntimeLightingDebugPanel, } from '@fps-games/editor-browser/runtime-debug';
|
|
5
5
|
export { createPlayableBabylonEditorGrid, createBabylonAssetContainerProjectionImporter, createBabylonPrimitiveProjectionInstancingController, applyArtistMaterialProfileToRuntimeMaterial, applyMaterialValueToRuntimeMaterial, applyMaterialValueToRuntimeNode, createMaterialSlotOwnerPathMatchKey, resolveMaterialOwnerNode, resolveMaterialSlotOwnerNodes, isMaterialSlotOwnerPathMatch, normalizeMaterialSlotOwnerPath, resolveMaterialRuntimeKind, applyOutlineValueToRuntimeNode, resolveOutlineOwnerNode, resolveOutlineTarget, applyBabylonDefaultOutline, createBabylonEnvironmentTextureController, createBabylonDefaultPostProcessPipelineController, createBlobShadowSystem, createDynamicShadowSystem, createStaticProjectedShadowBakeHashes, createStaticProjectedShadowProfileHash, createStaticProjectedShadowArtifactSystem, createPlayableBabylonOutlineInspectorSection, createPlayableBabylonOutlineInspectorSeedPatchValue, isPlayableBabylonOutlineInspectorPatchPath, PLAYABLE_BABYLON_DEFAULT_OUTLINE_OVERRIDE, applyPlayableBabylonOutlineOverrideToRuntimeNode, applyPlayableBabylonOutlineOverrideToRuntimeTarget, createPlanarShadowSystem, normalizeBabylonEnvironmentTextureProfile, normalizeBabylonDefaultPostProcessProfile, normalizeBabylonDefaultPostProcessVolumeStack, resolveBabylonDefaultPostProcessVolumeStack, } from './playable-babylon-facade.js';
|
|
6
|
-
export { createPlayableBabylonRenderingCapability, createPlayableBabylonRenderingCapabilityFacade, createPlayableBabylonRenderingAlphaIndexMigrationPatch, createPlayableBabylonWorldRendering, createPlayableBabylonRenderingPanelState, createPlayableBabylonEnvironmentTextureProfile, createPlayableBabylonRenderingDiagnostics, createPlayableBabylonRuntimeRenderingControllers, createPlayableBabylonPlanarShadowPolicy, resolvePlayableBabylonPlanarShadowPolicy, createPlayableBabylonPlanarShadowPolicyInput, createPlayableBabylonPlanarShadowPreviewOptions, createPlayableBabylonPlanarShadowOptions, createPlayableBabylonPlanarShadowSystem, createPlayableBabylonBlobShadowOptions, createPlayableBabylonBlobShadowSystem, createPlayableBabylonStaticProjectedShadowOptions, createPlayableBabylonStaticProjectedShadowArtifactSystem,
|
|
6
|
+
export { createPlayableBabylonRenderingCapability, createPlayableBabylonRenderingCapabilityFacade, createPlayableBabylonRenderingAlphaIndexMigrationPatch, createPlayableBabylonWorldRendering, createPlayableBabylonRenderingPanelState, createPlayableBabylonEnvironmentTextureProfile, createPlayableBabylonRenderingDiagnostics, createPlayableBabylonRuntimeRenderingControllers, createPlayableBabylonPlanarShadowPolicy, resolvePlayableBabylonPlanarShadowPolicy, createPlayableBabylonPlanarShadowPolicyInput, createPlayableBabylonPlanarShadowPreviewOptions, createPlayableBabylonPlanarShadowOptions, createPlayableBabylonPlanarShadowSystem, createPlayableBabylonBlobShadowOptions, createPlayableBabylonBlobShadowSystem, createPlayableBabylonStaticProjectedShadowOptions, createPlayableBabylonStaticProjectedShadowArtifactSystem, resolvePlayableBabylonRenderingEnvironmentTextureResource, resolvePlayableBabylonRenderingEnvironmentTextureDiagnostic, isPlayableBabylonRenderingEnvironmentTextureAsset, isPlayableBabylonRenderingEnvironmentTextureResource, } from './playable-babylon-rendering.js';
|
|
7
7
|
export { SPATIAL_MARKER_GRAPH_SCHEMA_VERSION } from '@fps-games/editor-protocol';
|
|
8
8
|
export { createFpsGameEditorLocalEditorHost, createFpsGameEditorLocalEditorHostManifest, createPlayableLocalEditorHost, formatPlayableLocalEditorHostCompatibilityReport, inspectPlayableLocalEditorHostManifest, PLAYABLE_LOCAL_EDITOR_HOST_MANIFEST_VERSION, PLAYABLE_LOCAL_EDITOR_HOST_REQUIRED_CONTRACT, } from './playable-local-editor-host.js';
|
|
9
9
|
export { mountFpsGameEditorProductLocalEditor, mountFpsGameEditorProductLocalEditorFromEnvironmentModule, } from './playable-product-local-editor.js';
|
package/dist/playable-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playable-sdk.js","sourceRoot":"","sources":["../src/playable-sdk.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACrC,8BAA8B,EAC9B,+BAA+B,EAC/B,kCAAkC,EAClC,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AAYrC,OAAO,EACL,wCAAwC,EACxC,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAavC,OAAO,EACL,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,GACrC,MAAM,yCAAyC,CAAC;AAgBjD,OAAO,EACL,+BAA+B,EAC/B,6CAA6C,EAC7C,oDAAoD,EACpD,2CAA2C,EAC3C,mCAAmC,EACnC,+BAA+B,EAC/B,mCAAmC,EACnC,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,yCAAyC,EACzC,iDAAiD,EACjD,sBAAsB,EACtB,yBAAyB,EACzB,qCAAqC,EACrC,sCAAsC,EACtC,yCAAyC,EACzC,4CAA4C,EAC5C,mDAAmD,EACnD,0CAA0C,EAC1C,yCAAyC,EACzC,gDAAgD,EAChD,kDAAkD,EAClD,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,6CAA6C,EAC7C,2CAA2C,GAC5C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wCAAwC,EACxC,8CAA8C,EAC9C,sDAAsD,EACtD,mCAAmC,EACnC,wCAAwC,EACxC,8CAA8C,EAC9C,yCAAyC,EACzC,gDAAgD,EAChD,uCAAuC,EACvC,wCAAwC,EACxC,4CAA4C,EAC5C,+CAA+C,EAC/C,wCAAwC,EACxC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,iDAAiD,EACjD,wDAAwD,EACxD,oDAAoD,EACpD,2DAA2D,EAC3D,iDAAiD,EACjD,+CAA+C,GAChD,MAAM,iCAAiC,CAAC;AA4EzC,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AAkBjF,OAAO,EACL,kCAAkC,EAClC,0CAA0C,EAC1C,6BAA6B,EAC7B,gDAAgD,EAChD,sCAAsC,EACtC,2CAA2C,EAC3C,4CAA4C,GAC7C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,oCAAoC,EACpC,yDAAyD,GAC1D,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EACL,kCAAkC,GACnC,MAAM,kCAAkC,CAAC;AAc1C,OAAO,EACL,sCAAsC,EACtC,8CAA8C,EAC9C,0CAA0C,GAC3C,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,2CAA2C,GAC5C,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,0CAA0C,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EACL,yCAAyC,EACzC,0DAA0D,EAC1D,iCAAiC,GAClC,MAAM,gCAAgC,CAAC","sourcesContent":["export * from '@fps-games/editor-playable-sdk';\nexport {\n applyBabylonRenderingToMesh,\n applyBabylonRenderingToNodeTree,\n collectBabylonMaterialOwnerCandidates,\n collectRenderableBabylonMeshes,\n isBabylonRuntimeDropSurfaceMesh,\n normalizeBabylonPointerCoordinates,\n readBabylonRuntimeDropPosition,\n resolveBabylonRuntimeDropPosition,\n} from '@fps-games/babylon-renderer';\nexport type {\n BabylonRuntimeDropInput,\n BabylonRuntimeDropPosition,\n BabylonRuntimeDropPositionOptions,\n BabylonRenderableMesh,\n BabylonRenderableNode,\n BabylonMaterialOwnerTarget,\n CollectBabylonMaterialOwnerCandidatesOptions,\n BabylonRenderingRestore,\n BabylonRenderingSettings,\n} from '@fps-games/babylon-renderer';\nexport {\n isMaterialOwnerResolutionPointerVerified,\n resolveMaterialOwner,\n} from '@fps-games/playable-contracts';\nexport type {\n MaterialOwnerCandidate,\n MaterialOwnerCandidateSummary,\n MaterialOwnerDescriptor,\n MaterialOwnerMatchKind,\n MaterialOwnerResolvedIdentity,\n MaterialOwnerResolvedIdentityStrategy,\n MaterialOwnerResolvedPointerIdentity,\n MaterialOwnerResolution,\n MaterialOwnerResolutionDiagnostic,\n ResolveMaterialOwnerOptions,\n} from '@fps-games/playable-contracts';\nexport {\n mountEditorRuntimeCameraDebugPanel,\n mountEditorRuntimeDebugPanelShell,\n mountEditorRuntimeLightingDebugPanel,\n} from '@fps-games/editor-browser/runtime-debug';\nexport type {\n EditorRuntimeCameraDebugPanel,\n EditorRuntimeCameraDebugPanelOptions,\n EditorRuntimeCameraDebugPanInput,\n EditorRuntimeCameraDebugScreenPoint,\n EditorRuntimeCameraDebugViewportRect,\n EditorRuntimeDebugPanelLanguage,\n EditorRuntimeDebugPanelMode,\n EditorRuntimeDebugPanelPlacement,\n EditorRuntimeDebugPanelShell,\n EditorRuntimeDebugPanelShellOptions,\n EditorRuntimeDebugPanelStatusOptions,\n EditorRuntimeLightingDebugPanel,\n EditorRuntimeLightingDebugPanelOptions,\n} from '@fps-games/editor-browser/runtime-debug';\nexport {\n createPlayableBabylonEditorGrid,\n createBabylonAssetContainerProjectionImporter,\n createBabylonPrimitiveProjectionInstancingController,\n applyArtistMaterialProfileToRuntimeMaterial,\n applyMaterialValueToRuntimeMaterial,\n applyMaterialValueToRuntimeNode,\n createMaterialSlotOwnerPathMatchKey,\n resolveMaterialOwnerNode,\n resolveMaterialSlotOwnerNodes,\n isMaterialSlotOwnerPathMatch,\n normalizeMaterialSlotOwnerPath,\n resolveMaterialRuntimeKind,\n applyOutlineValueToRuntimeNode,\n resolveOutlineOwnerNode,\n resolveOutlineTarget,\n applyBabylonDefaultOutline,\n createBabylonEnvironmentTextureController,\n createBabylonDefaultPostProcessPipelineController,\n createBlobShadowSystem,\n createDynamicShadowSystem,\n createStaticProjectedShadowBakeHashes,\n createStaticProjectedShadowProfileHash,\n createStaticProjectedShadowArtifactSystem,\n createPlayableBabylonOutlineInspectorSection,\n createPlayableBabylonOutlineInspectorSeedPatchValue,\n isPlayableBabylonOutlineInspectorPatchPath,\n PLAYABLE_BABYLON_DEFAULT_OUTLINE_OVERRIDE,\n applyPlayableBabylonOutlineOverrideToRuntimeNode,\n applyPlayableBabylonOutlineOverrideToRuntimeTarget,\n createPlanarShadowSystem,\n normalizeBabylonEnvironmentTextureProfile,\n normalizeBabylonDefaultPostProcessProfile,\n normalizeBabylonDefaultPostProcessVolumeStack,\n resolveBabylonDefaultPostProcessVolumeStack,\n} from './playable-babylon-facade.js';\nexport {\n createPlayableBabylonRenderingCapability,\n createPlayableBabylonRenderingCapabilityFacade,\n createPlayableBabylonRenderingAlphaIndexMigrationPatch,\n createPlayableBabylonWorldRendering,\n createPlayableBabylonRenderingPanelState,\n createPlayableBabylonEnvironmentTextureProfile,\n createPlayableBabylonRenderingDiagnostics,\n createPlayableBabylonRuntimeRenderingControllers,\n createPlayableBabylonPlanarShadowPolicy,\n resolvePlayableBabylonPlanarShadowPolicy,\n createPlayableBabylonPlanarShadowPolicyInput,\n createPlayableBabylonPlanarShadowPreviewOptions,\n createPlayableBabylonPlanarShadowOptions,\n createPlayableBabylonPlanarShadowSystem,\n createPlayableBabylonBlobShadowOptions,\n createPlayableBabylonBlobShadowSystem,\n createPlayableBabylonStaticProjectedShadowOptions,\n createPlayableBabylonStaticProjectedShadowArtifactSystem,\n resolvePlayableBabylonRenderingEnvironmentTextureUrl,\n resolvePlayableBabylonRenderingEnvironmentTextureDiagnostic,\n isPlayableBabylonRenderingEnvironmentTextureAsset,\n isPlayableBabylonRenderingEnvironmentTextureUrl,\n} from './playable-babylon-rendering.js';\nexport type {\n PlayableBabylonProjectionImportContext,\n PlayableBabylonProjectionImportResult,\n PlayableBabylonProjectionNode,\n PlayableBabylonSceneCameraPreviewRig,\n BabylonAssetContainerProjectionContainer,\n BabylonAssetContainerProjectionImportEvent,\n BabylonAssetContainerProjectionImporterOptions,\n BabylonAssetContainerProjectionInstantiatedEntries,\n BabylonPrimitiveProjectionInstancingController,\n BabylonPrimitiveProjectionInstancingControllerOptions,\n BabylonPrimitiveProjectionMaterialKind,\n BabylonPrimitiveProjectionNodeLike,\n BabylonPrimitiveProjectionShape,\n CanonicalMaterialChange,\n CanonicalOutlineChange,\n BabylonDefaultOutlineOptions,\n BabylonRendererOutlineStrategy,\n BabylonEnvironmentTextureController,\n BabylonEnvironmentTextureProfile,\n PlayableBabylonOutlineInspectorLanguage,\n PlayableBabylonOutlineInspectorSectionInput,\n PlayableBabylonOutlineInspectorSeedPatchInput,\n PlayableBabylonOutlineOverrideConfig,\n PlayableBabylonOutlineStrategy,\n PlayableBabylonOutlineRuntimeApplyResult,\n PlayableBabylonOutlineRuntimeOverride,\n BlobShadowOptions,\n BlobShadowSystem,\n DynamicShadowDiagnostics,\n DynamicShadowOptions,\n DynamicShadowParams,\n DynamicShadowSystem,\n PlanarShadowOptions,\n PlanarShadowSystem,\n StaticProjectedShadowArtifact,\n StaticProjectedShadowArtifactDiagnostic,\n StaticProjectedShadowArtifactHashInput,\n StaticProjectedShadowArtifactOptions,\n StaticProjectedShadowArtifactSystem,\n StaticProjectedShadowOptions,\n BabylonDefaultPostProcessPipelineController,\n BabylonDefaultPostProcessProfile,\n BabylonDefaultPostProcessResolveInput,\n BabylonDefaultPostProcessResolveResult,\n BabylonDefaultPostProcessResolvedVolume,\n BabylonDefaultPostProcessSamples,\n BabylonDefaultPostProcessVolume,\n BabylonDefaultPostProcessVolumeStack,\n BabylonDefaultToneMappingType,\n PostProcessVolumeShape,\n} from './playable-babylon-facade.js';\nexport type {\n PlayableBabylonRenderingCapabilityOptions,\n PlayableBabylonRenderingCapabilityFacade,\n PlayableBabylonRenderingCapabilityFacadeOptions,\n PlayableBabylonRenderingAlphaIndexMigrationPatchInput,\n PlayableBabylonRenderingContext,\n PlayableBabylonRenderingDocumentInput,\n PlayableBabylonRenderingDiagnostics,\n PlayableBabylonRenderingEnvironmentTextureDiagnostic,\n PlayableBabylonRenderingEnvironmentTextureDiagnosticStatus,\n PlayableBabylonRuntimeRenderingControllerOptions,\n PlayableBabylonRuntimeRenderingControllers,\n PlayableBabylonPlanarShadowPolicy,\n PlayableBabylonPlanarShadowPolicyInput,\n PlayableBabylonBlobShadowPolicyInput,\n PlayableBabylonStaticProjectedShadowPolicyInput,\n PlayableBabylonResolvedPlanarShadowPolicy,\n PlayableBabylonRenderingSetConfigInput,\n PlayableBabylonRenderingShadowPreviewOptions,\n PlayableBabylonRenderingStatusTone,\n PlayableBabylonRenderingValueResolver,\n PlayableBabylonWorldRendering,\n} from './playable-babylon-rendering.js';\nexport { SPATIAL_MARKER_GRAPH_SCHEMA_VERSION } from '@fps-games/editor-protocol';\nexport type {\n AgentReadableSpatialFacts,\n ResolvedSpatialMarkerGraph,\n ResolvedSpatialMarkerNode,\n SpatialMarkerBounds,\n SpatialMarkerGeometry,\n SpatialMarkerGraph,\n SpatialMarkerJsonObject,\n SpatialMarkerLocalFrame,\n SpatialMarkerNode,\n SpatialMarkerTargetRef,\n SpatialMarkerTypeDefinition,\n SpatialMarkerVec3,\n SpatialRelation,\n SpatialRelationEndpoint,\n SpatialRelationTypeDefinition,\n} from '@fps-games/editor-protocol';\nexport {\n createFpsGameEditorLocalEditorHost,\n createFpsGameEditorLocalEditorHostManifest,\n createPlayableLocalEditorHost,\n formatPlayableLocalEditorHostCompatibilityReport,\n inspectPlayableLocalEditorHostManifest,\n PLAYABLE_LOCAL_EDITOR_HOST_MANIFEST_VERSION,\n PLAYABLE_LOCAL_EDITOR_HOST_REQUIRED_CONTRACT,\n} from './playable-local-editor-host.js';\nexport {\n mountFpsGameEditorProductLocalEditor,\n mountFpsGameEditorProductLocalEditorFromEnvironmentModule,\n} from './playable-product-local-editor.js';\nexport type {\n FpsGameEditorProductLocalEditorEnvironmentModuleOptions,\n} from './playable-product-local-editor.js';\nexport {\n mountFpsGameEditorLocalEditorEntry,\n} from './playable-local-editor-entry.js';\nexport type {\n FpsGameEditorLocalEditorEntry,\n FpsGameEditorLocalEditorEntryContent,\n FpsGameEditorLocalEditorEntryDiagnostics,\n FpsGameEditorLocalEditorEntryModeSwitcher,\n FpsGameEditorLocalEditorEntryMountOptions,\n FpsGameEditorLocalEditorEntryOptions,\n FpsGameEditorLocalEditorEntryViewState,\n} from './playable-local-editor-entry.js';\nexport type {\n FpsGameEditorProjectModeContext,\n FpsGameEditorProjectModeTransitions,\n} from './playable-project-mode.js';\nexport {\n createFpsGameEditorProductHostAssembly,\n createFpsGameEditorPlayableProjectHostAssembly,\n createFpsGameEditorProductSceneHostOptions,\n} from './playable-product-scene-capabilities.js';\nexport {\n createFpsGameEditorProductProjectionPreview,\n} from './playable-product-projection-preview.js';\nexport { createFpsGameEditorProductRenderingRuntime } from './playable-product-rendering.js';\nexport {\n createFpsGameEditorStandardProjectRuntime,\n mountFpsGameEditorStandardLocalEditorFromEnvironmentModule,\n mountFpsGameEditorStandardProject,\n} from './playable-standard-project.js';\nexport type {\n FpsGameEditorStandardLocalEditorEnvironmentModuleOptions,\n FpsGameEditorStandardProjectMountOptions,\n} from './playable-standard-project.js';\nexport type { FpsGameEditorProductRenderingRuntimeOptions } from './playable-product-rendering.js';\nexport type { ShadowMapExperimentConfig } from '@fps-games/playable-rendering/runtime';\nexport type {\n FpsGameEditorProductBabylonModule,\n FpsGameEditorProductProjectionGroundDecalHooks,\n FpsGameEditorProductProjectionImportStats,\n FpsGameEditorProductProjectionPreview,\n FpsGameEditorProductProjectionPreviewOptions,\n} from './playable-product-projection-preview.js';\nexport type {\n FpsGameEditorLocalEditorHostOptions,\n FpsGameEditorLocalEditorHostResult,\n PlayableLocalEditorAuthoringHostLike,\n PlayableLocalEditorAuthoringSourceDriverLike,\n PlayableLocalEditorAssetCreationOptions,\n PlayableLocalEditorAssetCreationResult,\n PlayableLocalEditorAssetReloadResult,\n PlayableLocalEditorAgentContextCapability,\n PlayableLocalEditorAgentContextObjectInput,\n PlayableLocalEditorAgentContextObjectSetInput,\n PlayableLocalEditorAgentContextRegionBindingInput,\n PlayableLocalEditorAssetActionsCapability,\n PlayableLocalEditorAssetBrowserCapability,\n PlayableLocalEditorDocumentLifecycleCapability,\n PlayableLocalEditorHostCompatibilityDiagnostic,\n PlayableLocalEditorHostCompatibilityReport,\n PlayableLocalEditorHostCompatibilitySeverity,\n PlayableLocalEditorHost,\n PlayableLocalEditorHostCapabilities,\n PlayableLocalEditorHostManifest,\n PlayableLocalEditorHostManifestMetadata,\n PlayableLocalEditorDocumentCapability,\n PlayableLocalEditorGridContext,\n PlayableLocalEditorGridFactory,\n PlayableLocalEditorHarnessApi,\n PlayableLocalEditorHistoryOperation,\n PlayableLocalEditorHistoryOperationOptions,\n PlayableLocalEditorHistoryOperationResult,\n PlayableLocalEditorHistoryProjectionResult,\n PlayableLocalEditorHistoryStateResult,\n PlayableLocalEditorHierarchyActionsCapability,\n PlayableLocalEditorMarkerGraphCapability,\n PlayableLocalEditorMarkerGraphCommand,\n PlayableLocalEditorMultiPropertyCapabilityInput,\n PlayableLocalEditorMultiPropertyPatchInput,\n PlayableLocalEditorPatchResult,\n PlayableLocalEditorPersistenceCapability,\n PlayableLocalEditorPropertyPatchInput,\n PlayableLocalEditorOperationOrigin,\n PlayableLocalEditorPrefabStageCapability,\n PlayableLocalEditorPrefabStageDescriptor,\n PlayableLocalEditorPrefabStageInput,\n PlayableLocalEditorProjectionImpact,\n PlayableLocalEditorProjectionWaitPolicy,\n PlayableLocalEditorRenderingCapability,\n PlayableLocalEditorRenderingPropertyChangeResult,\n PlayableLocalEditorRuntimeInspectorContext,\n PlayableLocalEditorSceneGraphCapability,\n PlayableLocalEditorSelectionCapability,\n PlayableLocalEditorTransformBatchPatchInput,\n PlayableLocalEditorTransformCommandsCapability,\n PlayableLocalEditorTransformInspectorPreviewInput,\n PlayableLocalEditorTransformPatchInput,\n PlayableLocalEditorWorldCapability,\n PlayableLocalEditorWorldOptions,\n PlayableLocalEditorWorldPreviewCapability,\n PlayableLocalEditorInspectorCapability,\n} from './playable-local-editor-host.js';\nexport type {\n FpsGameEditorProductLocalEditorContext,\n FpsGameEditorProductLocalEditorHostOptions,\n FpsGameEditorProductLocalEditorModeSwitcher,\n FpsGameEditorProductLocalEditorOptions,\n FpsGameEditorProductProjectModeTransitions,\n FpsGameEditorProductWindowLike,\n} from './playable-product-local-editor.js';\nexport type {\n FpsGameEditorProductHostAssembly,\n FpsGameEditorProductHostAssemblyInput,\n FpsGameEditorPlayableProjectHostAssemblyOptions,\n FpsGameEditorProductHostRuntimeOptions,\n FpsGameEditorProductSceneDocumentAdapter,\n FpsGameEditorProductSceneHostOptions,\n FpsGameEditorProductSceneHostOptionsInput,\n} from './playable-product-scene-capabilities.js';\n"]}
|
|
1
|
+
{"version":3,"file":"playable-sdk.js","sourceRoot":"","sources":["../src/playable-sdk.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACrC,8BAA8B,EAC9B,+BAA+B,EAC/B,kCAAkC,EAClC,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AAYrC,OAAO,EACL,wCAAwC,EACxC,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAavC,OAAO,EACL,kCAAkC,EAClC,iCAAiC,EACjC,oCAAoC,GACrC,MAAM,yCAAyC,CAAC;AAgBjD,OAAO,EACL,+BAA+B,EAC/B,6CAA6C,EAC7C,oDAAoD,EACpD,2CAA2C,EAC3C,mCAAmC,EACnC,+BAA+B,EAC/B,mCAAmC,EACnC,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,yCAAyC,EACzC,iDAAiD,EACjD,sBAAsB,EACtB,yBAAyB,EACzB,qCAAqC,EACrC,sCAAsC,EACtC,yCAAyC,EACzC,4CAA4C,EAC5C,mDAAmD,EACnD,0CAA0C,EAC1C,yCAAyC,EACzC,gDAAgD,EAChD,kDAAkD,EAClD,wBAAwB,EACxB,yCAAyC,EACzC,yCAAyC,EACzC,6CAA6C,EAC7C,2CAA2C,GAC5C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wCAAwC,EACxC,8CAA8C,EAC9C,sDAAsD,EACtD,mCAAmC,EACnC,wCAAwC,EACxC,8CAA8C,EAC9C,yCAAyC,EACzC,gDAAgD,EAChD,uCAAuC,EACvC,wCAAwC,EACxC,4CAA4C,EAC5C,+CAA+C,EAC/C,wCAAwC,EACxC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,iDAAiD,EACjD,wDAAwD,EACxD,yDAAyD,EACzD,2DAA2D,EAC3D,iDAAiD,EACjD,oDAAoD,GACrD,MAAM,iCAAiC,CAAC;AA4EzC,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AAkBjF,OAAO,EACL,kCAAkC,EAClC,0CAA0C,EAC1C,6BAA6B,EAC7B,gDAAgD,EAChD,sCAAsC,EACtC,2CAA2C,EAC3C,4CAA4C,GAC7C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,oCAAoC,EACpC,yDAAyD,GAC1D,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EACL,kCAAkC,GACnC,MAAM,kCAAkC,CAAC;AAc1C,OAAO,EACL,sCAAsC,EACtC,8CAA8C,EAC9C,0CAA0C,GAC3C,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,2CAA2C,GAC5C,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,0CAA0C,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EACL,yCAAyC,EACzC,0DAA0D,EAC1D,iCAAiC,GAClC,MAAM,gCAAgC,CAAC","sourcesContent":["export * from '@fps-games/editor-playable-sdk';\nexport {\n applyBabylonRenderingToMesh,\n applyBabylonRenderingToNodeTree,\n collectBabylonMaterialOwnerCandidates,\n collectRenderableBabylonMeshes,\n isBabylonRuntimeDropSurfaceMesh,\n normalizeBabylonPointerCoordinates,\n readBabylonRuntimeDropPosition,\n resolveBabylonRuntimeDropPosition,\n} from '@fps-games/babylon-renderer';\nexport type {\n BabylonRuntimeDropInput,\n BabylonRuntimeDropPosition,\n BabylonRuntimeDropPositionOptions,\n BabylonRenderableMesh,\n BabylonRenderableNode,\n BabylonMaterialOwnerTarget,\n CollectBabylonMaterialOwnerCandidatesOptions,\n BabylonRenderingRestore,\n BabylonRenderingSettings,\n} from '@fps-games/babylon-renderer';\nexport {\n isMaterialOwnerResolutionPointerVerified,\n resolveMaterialOwner,\n} from '@fps-games/playable-contracts';\nexport type {\n MaterialOwnerCandidate,\n MaterialOwnerCandidateSummary,\n MaterialOwnerDescriptor,\n MaterialOwnerMatchKind,\n MaterialOwnerResolvedIdentity,\n MaterialOwnerResolvedIdentityStrategy,\n MaterialOwnerResolvedPointerIdentity,\n MaterialOwnerResolution,\n MaterialOwnerResolutionDiagnostic,\n ResolveMaterialOwnerOptions,\n} from '@fps-games/playable-contracts';\nexport {\n mountEditorRuntimeCameraDebugPanel,\n mountEditorRuntimeDebugPanelShell,\n mountEditorRuntimeLightingDebugPanel,\n} from '@fps-games/editor-browser/runtime-debug';\nexport type {\n EditorRuntimeCameraDebugPanel,\n EditorRuntimeCameraDebugPanelOptions,\n EditorRuntimeCameraDebugPanInput,\n EditorRuntimeCameraDebugScreenPoint,\n EditorRuntimeCameraDebugViewportRect,\n EditorRuntimeDebugPanelLanguage,\n EditorRuntimeDebugPanelMode,\n EditorRuntimeDebugPanelPlacement,\n EditorRuntimeDebugPanelShell,\n EditorRuntimeDebugPanelShellOptions,\n EditorRuntimeDebugPanelStatusOptions,\n EditorRuntimeLightingDebugPanel,\n EditorRuntimeLightingDebugPanelOptions,\n} from '@fps-games/editor-browser/runtime-debug';\nexport {\n createPlayableBabylonEditorGrid,\n createBabylonAssetContainerProjectionImporter,\n createBabylonPrimitiveProjectionInstancingController,\n applyArtistMaterialProfileToRuntimeMaterial,\n applyMaterialValueToRuntimeMaterial,\n applyMaterialValueToRuntimeNode,\n createMaterialSlotOwnerPathMatchKey,\n resolveMaterialOwnerNode,\n resolveMaterialSlotOwnerNodes,\n isMaterialSlotOwnerPathMatch,\n normalizeMaterialSlotOwnerPath,\n resolveMaterialRuntimeKind,\n applyOutlineValueToRuntimeNode,\n resolveOutlineOwnerNode,\n resolveOutlineTarget,\n applyBabylonDefaultOutline,\n createBabylonEnvironmentTextureController,\n createBabylonDefaultPostProcessPipelineController,\n createBlobShadowSystem,\n createDynamicShadowSystem,\n createStaticProjectedShadowBakeHashes,\n createStaticProjectedShadowProfileHash,\n createStaticProjectedShadowArtifactSystem,\n createPlayableBabylonOutlineInspectorSection,\n createPlayableBabylonOutlineInspectorSeedPatchValue,\n isPlayableBabylonOutlineInspectorPatchPath,\n PLAYABLE_BABYLON_DEFAULT_OUTLINE_OVERRIDE,\n applyPlayableBabylonOutlineOverrideToRuntimeNode,\n applyPlayableBabylonOutlineOverrideToRuntimeTarget,\n createPlanarShadowSystem,\n normalizeBabylonEnvironmentTextureProfile,\n normalizeBabylonDefaultPostProcessProfile,\n normalizeBabylonDefaultPostProcessVolumeStack,\n resolveBabylonDefaultPostProcessVolumeStack,\n} from './playable-babylon-facade.js';\nexport {\n createPlayableBabylonRenderingCapability,\n createPlayableBabylonRenderingCapabilityFacade,\n createPlayableBabylonRenderingAlphaIndexMigrationPatch,\n createPlayableBabylonWorldRendering,\n createPlayableBabylonRenderingPanelState,\n createPlayableBabylonEnvironmentTextureProfile,\n createPlayableBabylonRenderingDiagnostics,\n createPlayableBabylonRuntimeRenderingControllers,\n createPlayableBabylonPlanarShadowPolicy,\n resolvePlayableBabylonPlanarShadowPolicy,\n createPlayableBabylonPlanarShadowPolicyInput,\n createPlayableBabylonPlanarShadowPreviewOptions,\n createPlayableBabylonPlanarShadowOptions,\n createPlayableBabylonPlanarShadowSystem,\n createPlayableBabylonBlobShadowOptions,\n createPlayableBabylonBlobShadowSystem,\n createPlayableBabylonStaticProjectedShadowOptions,\n createPlayableBabylonStaticProjectedShadowArtifactSystem,\n resolvePlayableBabylonRenderingEnvironmentTextureResource,\n resolvePlayableBabylonRenderingEnvironmentTextureDiagnostic,\n isPlayableBabylonRenderingEnvironmentTextureAsset,\n isPlayableBabylonRenderingEnvironmentTextureResource,\n} from './playable-babylon-rendering.js';\nexport type {\n PlayableBabylonProjectionImportContext,\n PlayableBabylonProjectionImportResult,\n PlayableBabylonProjectionNode,\n PlayableBabylonSceneCameraPreviewRig,\n BabylonAssetContainerProjectionContainer,\n BabylonAssetContainerProjectionImportEvent,\n BabylonAssetContainerProjectionImporterOptions,\n BabylonAssetContainerProjectionInstantiatedEntries,\n BabylonPrimitiveProjectionInstancingController,\n BabylonPrimitiveProjectionInstancingControllerOptions,\n BabylonPrimitiveProjectionMaterialKind,\n BabylonPrimitiveProjectionNodeLike,\n BabylonPrimitiveProjectionShape,\n CanonicalMaterialChange,\n CanonicalOutlineChange,\n BabylonDefaultOutlineOptions,\n BabylonRendererOutlineStrategy,\n BabylonEnvironmentTextureController,\n BabylonEnvironmentTextureProfile,\n PlayableBabylonOutlineInspectorLanguage,\n PlayableBabylonOutlineInspectorSectionInput,\n PlayableBabylonOutlineInspectorSeedPatchInput,\n PlayableBabylonOutlineOverrideConfig,\n PlayableBabylonOutlineStrategy,\n PlayableBabylonOutlineRuntimeApplyResult,\n PlayableBabylonOutlineRuntimeOverride,\n BlobShadowOptions,\n BlobShadowSystem,\n DynamicShadowDiagnostics,\n DynamicShadowOptions,\n DynamicShadowParams,\n DynamicShadowSystem,\n PlanarShadowOptions,\n PlanarShadowSystem,\n StaticProjectedShadowArtifact,\n StaticProjectedShadowArtifactDiagnostic,\n StaticProjectedShadowArtifactHashInput,\n StaticProjectedShadowArtifactOptions,\n StaticProjectedShadowArtifactSystem,\n StaticProjectedShadowOptions,\n BabylonDefaultPostProcessPipelineController,\n BabylonDefaultPostProcessProfile,\n BabylonDefaultPostProcessResolveInput,\n BabylonDefaultPostProcessResolveResult,\n BabylonDefaultPostProcessResolvedVolume,\n BabylonDefaultPostProcessSamples,\n BabylonDefaultPostProcessVolume,\n BabylonDefaultPostProcessVolumeStack,\n BabylonDefaultToneMappingType,\n PostProcessVolumeShape,\n} from './playable-babylon-facade.js';\nexport type {\n PlayableBabylonRenderingCapabilityOptions,\n PlayableBabylonRenderingCapabilityFacade,\n PlayableBabylonRenderingCapabilityFacadeOptions,\n PlayableBabylonRenderingAlphaIndexMigrationPatchInput,\n PlayableBabylonRenderingContext,\n PlayableBabylonRenderingDocumentInput,\n PlayableBabylonRenderingDiagnostics,\n PlayableBabylonRenderingEnvironmentTextureDiagnostic,\n PlayableBabylonRenderingEnvironmentTextureDiagnosticStatus,\n PlayableBabylonRuntimeRenderingControllerOptions,\n PlayableBabylonRuntimeRenderingControllers,\n PlayableBabylonPlanarShadowPolicy,\n PlayableBabylonPlanarShadowPolicyInput,\n PlayableBabylonBlobShadowPolicyInput,\n PlayableBabylonStaticProjectedShadowPolicyInput,\n PlayableBabylonResolvedPlanarShadowPolicy,\n PlayableBabylonRenderingSetConfigInput,\n PlayableBabylonRenderingShadowPreviewOptions,\n PlayableBabylonRenderingStatusTone,\n PlayableBabylonRenderingValueResolver,\n PlayableBabylonWorldRendering,\n} from './playable-babylon-rendering.js';\nexport { SPATIAL_MARKER_GRAPH_SCHEMA_VERSION } from '@fps-games/editor-protocol';\nexport type {\n AgentReadableSpatialFacts,\n ResolvedSpatialMarkerGraph,\n ResolvedSpatialMarkerNode,\n SpatialMarkerBounds,\n SpatialMarkerGeometry,\n SpatialMarkerGraph,\n SpatialMarkerJsonObject,\n SpatialMarkerLocalFrame,\n SpatialMarkerNode,\n SpatialMarkerTargetRef,\n SpatialMarkerTypeDefinition,\n SpatialMarkerVec3,\n SpatialRelation,\n SpatialRelationEndpoint,\n SpatialRelationTypeDefinition,\n} from '@fps-games/editor-protocol';\nexport {\n createFpsGameEditorLocalEditorHost,\n createFpsGameEditorLocalEditorHostManifest,\n createPlayableLocalEditorHost,\n formatPlayableLocalEditorHostCompatibilityReport,\n inspectPlayableLocalEditorHostManifest,\n PLAYABLE_LOCAL_EDITOR_HOST_MANIFEST_VERSION,\n PLAYABLE_LOCAL_EDITOR_HOST_REQUIRED_CONTRACT,\n} from './playable-local-editor-host.js';\nexport {\n mountFpsGameEditorProductLocalEditor,\n mountFpsGameEditorProductLocalEditorFromEnvironmentModule,\n} from './playable-product-local-editor.js';\nexport type {\n FpsGameEditorProductLocalEditorEnvironmentModuleOptions,\n} from './playable-product-local-editor.js';\nexport {\n mountFpsGameEditorLocalEditorEntry,\n} from './playable-local-editor-entry.js';\nexport type {\n FpsGameEditorLocalEditorEntry,\n FpsGameEditorLocalEditorEntryContent,\n FpsGameEditorLocalEditorEntryDiagnostics,\n FpsGameEditorLocalEditorEntryModeSwitcher,\n FpsGameEditorLocalEditorEntryMountOptions,\n FpsGameEditorLocalEditorEntryOptions,\n FpsGameEditorLocalEditorEntryViewState,\n} from './playable-local-editor-entry.js';\nexport type {\n FpsGameEditorProjectModeContext,\n FpsGameEditorProjectModeTransitions,\n} from './playable-project-mode.js';\nexport {\n createFpsGameEditorProductHostAssembly,\n createFpsGameEditorPlayableProjectHostAssembly,\n createFpsGameEditorProductSceneHostOptions,\n} from './playable-product-scene-capabilities.js';\nexport {\n createFpsGameEditorProductProjectionPreview,\n} from './playable-product-projection-preview.js';\nexport { createFpsGameEditorProductRenderingRuntime } from './playable-product-rendering.js';\nexport {\n createFpsGameEditorStandardProjectRuntime,\n mountFpsGameEditorStandardLocalEditorFromEnvironmentModule,\n mountFpsGameEditorStandardProject,\n} from './playable-standard-project.js';\nexport type {\n FpsGameEditorStandardLocalEditorEnvironmentModuleOptions,\n FpsGameEditorStandardProjectMountOptions,\n} from './playable-standard-project.js';\nexport type { FpsGameEditorProductRenderingRuntimeOptions } from './playable-product-rendering.js';\nexport type { ShadowMapExperimentConfig } from '@fps-games/playable-rendering/runtime';\nexport type {\n FpsGameEditorProductBabylonModule,\n FpsGameEditorProductProjectionGroundDecalHooks,\n FpsGameEditorProductProjectionImportStats,\n FpsGameEditorProductProjectionPreview,\n FpsGameEditorProductProjectionPreviewOptions,\n} from './playable-product-projection-preview.js';\nexport type {\n FpsGameEditorLocalEditorHostOptions,\n FpsGameEditorLocalEditorHostResult,\n PlayableLocalEditorAuthoringHostLike,\n PlayableLocalEditorAuthoringSourceDriverLike,\n PlayableLocalEditorAssetCreationOptions,\n PlayableLocalEditorAssetCreationResult,\n PlayableLocalEditorAssetReloadResult,\n PlayableLocalEditorAgentContextCapability,\n PlayableLocalEditorAgentContextObjectInput,\n PlayableLocalEditorAgentContextObjectSetInput,\n PlayableLocalEditorAgentContextRegionBindingInput,\n PlayableLocalEditorAssetActionsCapability,\n PlayableLocalEditorAssetBrowserCapability,\n PlayableLocalEditorDocumentLifecycleCapability,\n PlayableLocalEditorHostCompatibilityDiagnostic,\n PlayableLocalEditorHostCompatibilityReport,\n PlayableLocalEditorHostCompatibilitySeverity,\n PlayableLocalEditorHost,\n PlayableLocalEditorHostCapabilities,\n PlayableLocalEditorHostManifest,\n PlayableLocalEditorHostManifestMetadata,\n PlayableLocalEditorDocumentCapability,\n PlayableLocalEditorGridContext,\n PlayableLocalEditorGridFactory,\n PlayableLocalEditorHarnessApi,\n PlayableLocalEditorHistoryOperation,\n PlayableLocalEditorHistoryOperationOptions,\n PlayableLocalEditorHistoryOperationResult,\n PlayableLocalEditorHistoryProjectionResult,\n PlayableLocalEditorHistoryStateResult,\n PlayableLocalEditorHierarchyActionsCapability,\n PlayableLocalEditorMarkerGraphCapability,\n PlayableLocalEditorMarkerGraphCommand,\n PlayableLocalEditorMultiPropertyCapabilityInput,\n PlayableLocalEditorMultiPropertyPatchInput,\n PlayableLocalEditorPatchResult,\n PlayableLocalEditorPersistenceCapability,\n PlayableLocalEditorPropertyPatchInput,\n PlayableLocalEditorOperationOrigin,\n PlayableLocalEditorPrefabStageCapability,\n PlayableLocalEditorPrefabStageDescriptor,\n PlayableLocalEditorPrefabStageInput,\n PlayableLocalEditorProjectionImpact,\n PlayableLocalEditorProjectionWaitPolicy,\n PlayableLocalEditorRenderingCapability,\n PlayableLocalEditorRenderingPropertyChangeResult,\n PlayableLocalEditorRuntimeInspectorContext,\n PlayableLocalEditorSceneGraphCapability,\n PlayableLocalEditorSelectionCapability,\n PlayableLocalEditorTransformBatchPatchInput,\n PlayableLocalEditorTransformCommandsCapability,\n PlayableLocalEditorTransformInspectorPreviewInput,\n PlayableLocalEditorTransformPatchInput,\n PlayableLocalEditorWorldCapability,\n PlayableLocalEditorWorldOptions,\n PlayableLocalEditorWorldPreviewCapability,\n PlayableLocalEditorInspectorCapability,\n} from './playable-local-editor-host.js';\nexport type {\n FpsGameEditorProductLocalEditorContext,\n FpsGameEditorProductLocalEditorHostOptions,\n FpsGameEditorProductLocalEditorModeSwitcher,\n FpsGameEditorProductLocalEditorOptions,\n FpsGameEditorProductProjectModeTransitions,\n FpsGameEditorProductWindowLike,\n} from './playable-product-local-editor.js';\nexport type {\n FpsGameEditorProductHostAssembly,\n FpsGameEditorProductHostAssemblyInput,\n FpsGameEditorPlayableProjectHostAssemblyOptions,\n FpsGameEditorProductHostRuntimeOptions,\n FpsGameEditorProductSceneDocumentAdapter,\n FpsGameEditorProductSceneHostOptions,\n FpsGameEditorProductSceneHostOptionsInput,\n} from './playable-product-scene-capabilities.js';\n"]}
|
|
@@ -26,7 +26,6 @@ export declare function createFpsGameEditorStandardProjectRuntime(project: FpsGa
|
|
|
26
26
|
};
|
|
27
27
|
assetsModule: {
|
|
28
28
|
ASSET_CATALOG: Record<string, unknown>;
|
|
29
|
-
resolveAssetUrl(assetId: string): string | null;
|
|
30
29
|
};
|
|
31
30
|
hostAssembly: import("./playable-product-scene-capabilities.js").FpsGameEditorProductHostAssembly<any, any, any>;
|
|
32
31
|
projection: import("./playable-product-projection-preview.js").FpsGameEditorProductProjectionPreview<any, any, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playable-standard-project.d.ts","sourceRoot":"","sources":["../src/playable-standard-project.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"playable-standard-project.d.ts","sourceRoot":"","sources":["../src/playable-standard-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC/B,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EAGL,KAAK,uDAAuD,EAC5D,KAAK,2CAA2C,EAChD,KAAK,0CAA0C,EAChD,MAAM,oCAAoC,CAAC;AAG5C,MAAM,WAAW,wCAAwC;IACvD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,wDACf,SAAQ,wCAAwC;IAChD,WAAW,EAAE,0CAA0C,CAAC;IACxD,YAAY,EAAE,uDAAuD,CACnE,mBAAmB,EACnB,GAAG,EACH,2BAA2B,CAC5B,CAAC,cAAc,CAAC,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;CAC5C;AAED,kHAAkH;AAClH,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,8BAA8B,EACvC,YAAY,EAAE,yBAAyB,EACvC,OAAO,GAAE,wCAA6C;;;;;;;;qCAcrB,GAAG;;yBAIU,iBAAiB,GAAG,IAAI;;;;;;;;;;;;;gBAkJiwF,CAAC;;;;EA7Iz0F;AAsGD,wBAAgB,0DAA0D,CACxE,OAAO,EAAE,8BAA8B,EACvC,OAAO,EAAE,wDAAwD,GAChE,OAAO,CAAC,2CAA2C,CAAC,mBAAmB,CAAC,CAAC,CAY3E;AAED,kHAAkH;AAClH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,8BAA8B,EACvC,YAAY,EAAE,yBAAyB,EACvC,OAAO,GAAE,wCAA6C,GACrD,2CAA2C,CAAC,mBAAmB,CAAC,CAGlE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createFpsGameEditorAdapter, createFpsGameEditorStandardSceneAssembly, enrichEditorSceneDocumentAssets, loadEditorAssetLibrary, loadEditorProjectFile, loadEditorProjectFiles, loadSceneMainSource, resolveEditorProjectMediaSource, resolveEditorSceneAssetLibraryItemRelativePath, saveSceneMainSource, } from '@fps-games/editor-playable-sdk';
|
|
1
|
+
import { createFpsGameEditorAdapter, createFpsGameEditorStandardSceneAssembly, enrichEditorSceneDocumentAssets, loadEditorAssetLibrary, loadEditorProjectFile, loadEditorProjectFiles, loadSceneMainSource, getPlayableAssetFormat, resolveEditorProjectMediaSource, resolveEditorSceneAssetLibraryItemRelativePath, saveSceneMainSource, } from '@fps-games/editor-playable-sdk';
|
|
2
2
|
import { createBabylonEditorPreviewEngine } from './internal/babylon-preview-engine.js';
|
|
3
3
|
import { createFpsGameEditorProductHostAssembly, prepareFpsGameEditorStandardDocument, } from './playable-product-scene-capabilities.js';
|
|
4
4
|
import { mountFpsGameEditorProductLocalEditor, mountFpsGameEditorProductLocalEditorFromEnvironmentModule, } from './playable-product-local-editor.js';
|
|
@@ -43,7 +43,6 @@ function createFpsGameEditorStandardLocalEditorAssembly(project, options) {
|
|
|
43
43
|
const assetCatalog = {};
|
|
44
44
|
const assetsModule = {
|
|
45
45
|
ASSET_CATALOG: assetCatalog,
|
|
46
|
-
resolveAssetUrl(assetId) { return assetCatalog[assetId]?.url ?? null; },
|
|
47
46
|
};
|
|
48
47
|
let assets = [];
|
|
49
48
|
const projection = createFpsGameEditorProductProjectionPreview({
|
|
@@ -72,8 +71,18 @@ function createFpsGameEditorStandardLocalEditorAssembly(project, options) {
|
|
|
72
71
|
assets = nextAssets;
|
|
73
72
|
for (const key of Object.keys(assetCatalog))
|
|
74
73
|
delete assetCatalog[key];
|
|
75
|
-
for (const asset of assets)
|
|
76
|
-
|
|
74
|
+
for (const asset of assets) {
|
|
75
|
+
const relativePath = resolveEditorSceneAssetLibraryItemRelativePath(asset);
|
|
76
|
+
const format = getPlayableAssetFormat(relativePath);
|
|
77
|
+
if (!format)
|
|
78
|
+
throw new Error(`Asset format is required for generated catalog resource: ${asset.assetId}`);
|
|
79
|
+
assetCatalog[asset.assetId] = {
|
|
80
|
+
...asset,
|
|
81
|
+
url: resolveStandardProjectAssetUrl(project, asset),
|
|
82
|
+
format,
|
|
83
|
+
relativePath,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
77
86
|
return prepareFpsGameEditorStandardDocument({
|
|
78
87
|
document,
|
|
79
88
|
assets,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playable-standard-project.js","sourceRoot":"","sources":["../src/playable-standard-project.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createFpsGameEditorAdapter,\n createFpsGameEditorStandardSceneAssembly,\n enrichEditorSceneDocumentAssets,\n loadEditorAssetLibrary,\n loadEditorProjectFile,\n loadEditorProjectFiles,\n loadSceneMainSource,\n resolveEditorProjectMediaSource,\n resolveEditorSceneAssetLibraryItemRelativePath,\n saveSceneMainSource,\n type EditorSceneAssetLibraryItem,\n type EditorSceneDocument,\n type FpsGameEditorProjectDefinition,\n type FpsGameEditorRuntimeHooks,\n} from '@fps-games/editor-playable-sdk';\nimport { createBabylonEditorPreviewEngine } from './internal/babylon-preview-engine.js';\nimport {\n createFpsGameEditorProductHostAssembly,\n prepareFpsGameEditorStandardDocument,\n} from './playable-product-scene-capabilities.js';\nimport {\n mountFpsGameEditorProductLocalEditor,\n mountFpsGameEditorProductLocalEditorFromEnvironmentModule,\n type FpsGameEditorProductLocalEditorEnvironmentModuleOptions,\n type FpsGameEditorProductLocalEditorModeSwitcher,\n type FpsGameEditorProductProjectModeTransitions,\n} from './playable-product-local-editor.js';\nimport { createFpsGameEditorProductProjectionPreview } from './playable-product-projection-preview.js';\n\nexport interface FpsGameEditorStandardProjectMountOptions {\n root?: HTMLElement;\n window?: Window;\n agentBridgeSessionMetadata?: Record<string, unknown>;\n}\n\nexport interface FpsGameEditorStandardLocalEditorEnvironmentModuleOptions\n extends FpsGameEditorStandardProjectMountOptions {\n projectMode: FpsGameEditorProductProjectModeTransitions;\n pluginModule: FpsGameEditorProductLocalEditorEnvironmentModuleOptions<\n EditorSceneDocument,\n any,\n EditorSceneAssetLibraryItem\n >['pluginModule'];\n getCanvas?: () => HTMLCanvasElement | null;\n}\n\n/** @deprecated Projects own Runtime lifecycle. Use mountFpsGameEditorStandardLocalEditorFromEnvironmentModule. */\nexport function createFpsGameEditorStandardProjectRuntime(\n project: FpsGameEditorProjectDefinition,\n runtimeHooks: FpsGameEditorRuntimeHooks,\n options: FpsGameEditorStandardProjectMountOptions = {},\n) {\n const adapter = createFpsGameEditorAdapter(project, runtimeHooks);\n const assembly = createFpsGameEditorStandardLocalEditorAssembly(project, options);\n return {\n adapter,\n ...assembly,\n createMountOptions() {\n const runtimeWindow = options.window ?? window;\n return {\n project, root: options.root, window: runtimeWindow,\n agentBridgeSessionMetadata: options.agentBridgeSessionMetadata,\n projectMode: {\n enterEditorMode: () => adapter.disposeGameWorld(),\n enterPlayMode: (context: any) => typeof runtimeHooks.restartGame === 'function'\n ? adapter.restartGame(context)\n : runtimeWindow.location.reload(),\n },\n getCanvas: () => adapter.getCanvas() as HTMLCanvasElement | null,\n hostAssembly: assembly.hostAssembly,\n };\n },\n };\n}\n\nfunction createFpsGameEditorStandardLocalEditorAssembly(\n project: FpsGameEditorProjectDefinition,\n options: FpsGameEditorStandardProjectMountOptions,\n) {\n const scene = createFpsGameEditorStandardSceneAssembly<any, any, any, any, any>({\n features: project.features,\n markerTypes: [],\n relationTypes: [],\n getRenderingProfile: () => ({ shadows: { defaultMode: 'none' } } as any),\n createPatch: {\n gameObjectField: (targetId, path, value) => ({ kind: 'game-object.field', targetId, path, value }),\n gameObjectFieldBatch: fields => ({ kind: 'game-object.field-batch', fields }),\n materialAssetField: (materialAssetId, path, value) => ({ kind: 'scene.material-asset.field', materialAssetId, path, value }),\n markerGraph: command => ({ kind: 'scene.marker-graph', command }),\n },\n });\n const assetCatalog: Record<string, unknown> = {};\n const assetsModule = {\n ASSET_CATALOG: assetCatalog,\n resolveAssetUrl(assetId: string) { return (assetCatalog[assetId] as { url?: string } | undefined)?.url ?? null; },\n };\n let assets: EditorSceneAssetLibraryItem[] = [];\n const projection = createFpsGameEditorProductProjectionPreview<any, any, any>({\n assetsModule,\n defaultCamera: scene.defaults.camera,\n async resolveModelPathAndFile(value) {\n const url = new URL(value, (options.window ?? window).location.href);\n const slash = url.href.lastIndexOf('/');\n return { path: url.href.slice(0, slash + 1), filename: url.href.slice(slash + 1) };\n },\n });\n const hostAssembly = createFpsGameEditorProductHostAssembly<any, any, any, any, any>({\n scene,\n document: {\n getProjectionNodes: projection.createProjectionNodes,\n getProjectionNode: (document: EditorSceneDocument, id: string) => {\n const object = document.scene.gameObjects.find(entry => entry.id === id);\n return object ? projection.createProjectionNode(document, object) : null;\n },\n getProjectionNodesForTarget: projection.getProjectionNodesForTarget,\n resolveProjectionTargetId: projection.resolveProjectionTargetId,\n getProjectionSelectionNodeIds: projection.getProjectionSelectionNodeIds,\n createPatchFromAsset: (asset: EditorSceneAssetLibraryItem, input: any) => ({ label: `Add ${input?.name || asset.displayName}`, patch: { kind: 'game-object.create-from-asset', assetItem: asset, ...(input?.name ? { name: input.name } : {}), ...(input?.placement ? { placement: input.placement } : {}) } }),\n },\n lifecycle: { prepareDocument: (document, nextAssets) => {\n assets = nextAssets as EditorSceneAssetLibraryItem[];\n for (const key of Object.keys(assetCatalog)) delete assetCatalog[key];\n for (const asset of assets as EditorSceneAssetLibraryItem[]) assetCatalog[asset.assetId] = { ...asset, url: resolveStandardProjectAssetUrl(project, asset) };\n return prepareFpsGameEditorStandardDocument({\n document,\n assets,\n hydrateDocumentAssets: enrichEditorSceneDocumentAssets,\n ensureEnvironmentDefaults: scene.ensureEnvironmentDefaults,\n normalizeHierarchyDocument: scene.normalizeHierarchyDocument,\n });\n } },\n getInspectorContext: () => ({\n textureAssets: projection.createEditorSceneInspectorTextureAssets(assets),\n }),\n runtime: {\n lifecycle: { loadingContent: {\n enter: { title: 'Entering editor', description: 'Loading the editable scene.' },\n saveScene: { title: 'Saving scene', description: 'Writing authored scene data.' },\n saveAndRunGame: { title: 'Saving scene', description: 'Returning to the game.' },\n discardAndRunGame: { title: 'Discarding changes', description: 'Returning to the game.' },\n assetImport: { title: 'Importing asset', description: 'Updating the project asset library.' },\n } },\n persistenceAdapter: {\n loadAuthoringSource: async () => { const loaded = await loadSceneMainSource(); return { source: loaded.source, document: loaded.document, assets: loaded.assets, summary: loaded.summary }; },\n loadAssets: loadEditorAssetLibrary,\n loadProjectFiles: loadEditorProjectFiles,\n loadProjectFile: loadEditorProjectFile,\n resolveProjectMedia: resolveEditorProjectMediaSource,\n },\n worldAdapter: {\n loadPreviewEngine: () => import('@babylonjs/core'),\n createPreviewEngine: createBabylonEditorPreviewEngine,\n importPreviewAsset: projection.importEditorProjectionModel,\n resolveMaterialTextureUrl: (texture: any) => projection.resolveEditorSceneTextureRefUrl(assets, texture),\n resolveAssetId: (asset: EditorSceneAssetLibraryItem) => asset.assetId,\n toBrowserAssetItem: (asset: EditorSceneAssetLibraryItem) => ({ id: asset.assetId, label: asset.displayName, kind: asset.kind, relativePath: resolveEditorSceneAssetLibraryItemRelativePath(asset), origin: asset.origin, contentHash: typeof asset.metadata?.contentHash === 'string' ? asset.metadata.contentHash : undefined, placeable: asset.placeable, preview: projection.createEditorSceneLibraryAssetPreview(asset) }),\n },\n createGrid: projection.createEditorGrid,\n authoring: { drivers: [{ sourceType: 'scene', load: loadSceneMainSource, save: saveSceneMainSource } as any] },\n },\n });\n return {\n assetsModule, hostAssembly, projection, scene,\n };\n}\n\nexport function mountFpsGameEditorStandardLocalEditorFromEnvironmentModule(\n project: FpsGameEditorProjectDefinition,\n options: FpsGameEditorStandardLocalEditorEnvironmentModuleOptions,\n): Promise<FpsGameEditorProductLocalEditorModeSwitcher<EditorSceneDocument>> {\n const assembly = createFpsGameEditorStandardLocalEditorAssembly(project, options);\n return mountFpsGameEditorProductLocalEditorFromEnvironmentModule({\n project,\n root: options.root,\n window: options.window,\n agentBridgeSessionMetadata: options.agentBridgeSessionMetadata,\n projectMode: options.projectMode,\n pluginModule: options.pluginModule,\n getCanvas: options.getCanvas,\n hostAssembly: assembly.hostAssembly,\n });\n}\n\n/** @deprecated Projects own Runtime lifecycle. Use mountFpsGameEditorStandardLocalEditorFromEnvironmentModule. */\nexport function mountFpsGameEditorStandardProject(\n project: FpsGameEditorProjectDefinition,\n runtimeHooks: FpsGameEditorRuntimeHooks,\n options: FpsGameEditorStandardProjectMountOptions = {},\n): FpsGameEditorProductLocalEditorModeSwitcher<EditorSceneDocument> {\n const runtime = createFpsGameEditorStandardProjectRuntime(project, runtimeHooks, options);\n return mountFpsGameEditorProductLocalEditor(runtime.createMountOptions());\n}\n\nfunction resolveStandardProjectAssetUrl(project: FpsGameEditorProjectDefinition, asset: EditorSceneAssetLibraryItem): string | null {\n const metadata = (asset.metadata ?? {}) as Record<string, unknown>;\n const external = (asset.external ?? {}) as Record<string, unknown>;\n const raw = [metadata.url, metadata.assetUrl, metadata.relativePath, external.assetUrl, external.assetPath]\n .find(value => typeof value === 'string' && value.trim()) as string | undefined;\n if (!raw) return null;\n if (/^(https?:|data:|blob:|\\/)/i.test(raw)) return raw;\n const normalized = raw.replace(/\\\\/g, '/');\n const importedMarker = normalized.lastIndexOf('/imported/');\n const relative = importedMarker >= 0 ? normalized.slice(importedMarker + '/imported/'.length) : normalized.replace(/^\\.\\.\\//, '');\n return `${project.assets.publicBase.replace(/\\/$/, '')}/${relative.replace(/^\\//, '')}`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"playable-standard-project.js","sourceRoot":"","sources":["../src/playable-standard-project.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createFpsGameEditorAdapter,\n createFpsGameEditorStandardSceneAssembly,\n enrichEditorSceneDocumentAssets,\n loadEditorAssetLibrary,\n loadEditorProjectFile,\n loadEditorProjectFiles,\n loadSceneMainSource,\n getPlayableAssetFormat,\n resolveEditorProjectMediaSource,\n resolveEditorSceneAssetLibraryItemRelativePath,\n saveSceneMainSource,\n type EditorSceneAssetLibraryItem,\n type EditorSceneDocument,\n type FpsGameEditorProjectDefinition,\n type FpsGameEditorRuntimeHooks,\n} from '@fps-games/editor-playable-sdk';\nimport { createBabylonEditorPreviewEngine } from './internal/babylon-preview-engine.js';\nimport {\n createFpsGameEditorProductHostAssembly,\n prepareFpsGameEditorStandardDocument,\n} from './playable-product-scene-capabilities.js';\nimport {\n mountFpsGameEditorProductLocalEditor,\n mountFpsGameEditorProductLocalEditorFromEnvironmentModule,\n type FpsGameEditorProductLocalEditorEnvironmentModuleOptions,\n type FpsGameEditorProductLocalEditorModeSwitcher,\n type FpsGameEditorProductProjectModeTransitions,\n} from './playable-product-local-editor.js';\nimport { createFpsGameEditorProductProjectionPreview } from './playable-product-projection-preview.js';\n\nexport interface FpsGameEditorStandardProjectMountOptions {\n root?: HTMLElement;\n window?: Window;\n agentBridgeSessionMetadata?: Record<string, unknown>;\n}\n\nexport interface FpsGameEditorStandardLocalEditorEnvironmentModuleOptions\n extends FpsGameEditorStandardProjectMountOptions {\n projectMode: FpsGameEditorProductProjectModeTransitions;\n pluginModule: FpsGameEditorProductLocalEditorEnvironmentModuleOptions<\n EditorSceneDocument,\n any,\n EditorSceneAssetLibraryItem\n >['pluginModule'];\n getCanvas?: () => HTMLCanvasElement | null;\n}\n\n/** @deprecated Projects own Runtime lifecycle. Use mountFpsGameEditorStandardLocalEditorFromEnvironmentModule. */\nexport function createFpsGameEditorStandardProjectRuntime(\n project: FpsGameEditorProjectDefinition,\n runtimeHooks: FpsGameEditorRuntimeHooks,\n options: FpsGameEditorStandardProjectMountOptions = {},\n) {\n const adapter = createFpsGameEditorAdapter(project, runtimeHooks);\n const assembly = createFpsGameEditorStandardLocalEditorAssembly(project, options);\n return {\n adapter,\n ...assembly,\n createMountOptions() {\n const runtimeWindow = options.window ?? window;\n return {\n project, root: options.root, window: runtimeWindow,\n agentBridgeSessionMetadata: options.agentBridgeSessionMetadata,\n projectMode: {\n enterEditorMode: () => adapter.disposeGameWorld(),\n enterPlayMode: (context: any) => typeof runtimeHooks.restartGame === 'function'\n ? adapter.restartGame(context)\n : runtimeWindow.location.reload(),\n },\n getCanvas: () => adapter.getCanvas() as HTMLCanvasElement | null,\n hostAssembly: assembly.hostAssembly,\n };\n },\n };\n}\n\nfunction createFpsGameEditorStandardLocalEditorAssembly(\n project: FpsGameEditorProjectDefinition,\n options: FpsGameEditorStandardProjectMountOptions,\n) {\n const scene = createFpsGameEditorStandardSceneAssembly<any, any, any, any, any>({\n features: project.features,\n markerTypes: [],\n relationTypes: [],\n getRenderingProfile: () => ({ shadows: { defaultMode: 'none' } } as any),\n createPatch: {\n gameObjectField: (targetId, path, value) => ({ kind: 'game-object.field', targetId, path, value }),\n gameObjectFieldBatch: fields => ({ kind: 'game-object.field-batch', fields }),\n materialAssetField: (materialAssetId, path, value) => ({ kind: 'scene.material-asset.field', materialAssetId, path, value }),\n markerGraph: command => ({ kind: 'scene.marker-graph', command }),\n },\n });\n const assetCatalog: Record<string, unknown> = {};\n const assetsModule = {\n ASSET_CATALOG: assetCatalog,\n };\n let assets: EditorSceneAssetLibraryItem[] = [];\n const projection = createFpsGameEditorProductProjectionPreview<any, any, any>({\n assetsModule,\n defaultCamera: scene.defaults.camera,\n async resolveModelPathAndFile(value) {\n const url = new URL(value, (options.window ?? window).location.href);\n const slash = url.href.lastIndexOf('/');\n return { path: url.href.slice(0, slash + 1), filename: url.href.slice(slash + 1) };\n },\n });\n const hostAssembly = createFpsGameEditorProductHostAssembly<any, any, any, any, any>({\n scene,\n document: {\n getProjectionNodes: projection.createProjectionNodes,\n getProjectionNode: (document: EditorSceneDocument, id: string) => {\n const object = document.scene.gameObjects.find(entry => entry.id === id);\n return object ? projection.createProjectionNode(document, object) : null;\n },\n getProjectionNodesForTarget: projection.getProjectionNodesForTarget,\n resolveProjectionTargetId: projection.resolveProjectionTargetId,\n getProjectionSelectionNodeIds: projection.getProjectionSelectionNodeIds,\n createPatchFromAsset: (asset: EditorSceneAssetLibraryItem, input: any) => ({ label: `Add ${input?.name || asset.displayName}`, patch: { kind: 'game-object.create-from-asset', assetItem: asset, ...(input?.name ? { name: input.name } : {}), ...(input?.placement ? { placement: input.placement } : {}) } }),\n },\n lifecycle: { prepareDocument: (document, nextAssets) => {\n assets = nextAssets as EditorSceneAssetLibraryItem[];\n for (const key of Object.keys(assetCatalog)) delete assetCatalog[key];\n for (const asset of assets as EditorSceneAssetLibraryItem[]) {\n const relativePath = resolveEditorSceneAssetLibraryItemRelativePath(asset);\n const format = getPlayableAssetFormat(relativePath);\n if (!format) throw new Error(`Asset format is required for generated catalog resource: ${asset.assetId}`);\n assetCatalog[asset.assetId] = {\n ...asset,\n url: resolveStandardProjectAssetUrl(project, asset),\n format,\n relativePath,\n };\n }\n return prepareFpsGameEditorStandardDocument({\n document,\n assets,\n hydrateDocumentAssets: enrichEditorSceneDocumentAssets,\n ensureEnvironmentDefaults: scene.ensureEnvironmentDefaults,\n normalizeHierarchyDocument: scene.normalizeHierarchyDocument,\n });\n } },\n getInspectorContext: () => ({\n textureAssets: projection.createEditorSceneInspectorTextureAssets(assets),\n }),\n runtime: {\n lifecycle: { loadingContent: {\n enter: { title: 'Entering editor', description: 'Loading the editable scene.' },\n saveScene: { title: 'Saving scene', description: 'Writing authored scene data.' },\n saveAndRunGame: { title: 'Saving scene', description: 'Returning to the game.' },\n discardAndRunGame: { title: 'Discarding changes', description: 'Returning to the game.' },\n assetImport: { title: 'Importing asset', description: 'Updating the project asset library.' },\n } },\n persistenceAdapter: {\n loadAuthoringSource: async () => { const loaded = await loadSceneMainSource(); return { source: loaded.source, document: loaded.document, assets: loaded.assets, summary: loaded.summary }; },\n loadAssets: loadEditorAssetLibrary,\n loadProjectFiles: loadEditorProjectFiles,\n loadProjectFile: loadEditorProjectFile,\n resolveProjectMedia: resolveEditorProjectMediaSource,\n },\n worldAdapter: {\n loadPreviewEngine: () => import('@babylonjs/core'),\n createPreviewEngine: createBabylonEditorPreviewEngine,\n importPreviewAsset: projection.importEditorProjectionModel,\n resolveMaterialTextureUrl: (texture: any) => projection.resolveEditorSceneTextureRefUrl(assets, texture),\n resolveAssetId: (asset: EditorSceneAssetLibraryItem) => asset.assetId,\n toBrowserAssetItem: (asset: EditorSceneAssetLibraryItem) => ({ id: asset.assetId, label: asset.displayName, kind: asset.kind, relativePath: resolveEditorSceneAssetLibraryItemRelativePath(asset), origin: asset.origin, contentHash: typeof asset.metadata?.contentHash === 'string' ? asset.metadata.contentHash : undefined, placeable: asset.placeable, preview: projection.createEditorSceneLibraryAssetPreview(asset) }),\n },\n createGrid: projection.createEditorGrid,\n authoring: { drivers: [{ sourceType: 'scene', load: loadSceneMainSource, save: saveSceneMainSource } as any] },\n },\n });\n return {\n assetsModule, hostAssembly, projection, scene,\n };\n}\n\nexport function mountFpsGameEditorStandardLocalEditorFromEnvironmentModule(\n project: FpsGameEditorProjectDefinition,\n options: FpsGameEditorStandardLocalEditorEnvironmentModuleOptions,\n): Promise<FpsGameEditorProductLocalEditorModeSwitcher<EditorSceneDocument>> {\n const assembly = createFpsGameEditorStandardLocalEditorAssembly(project, options);\n return mountFpsGameEditorProductLocalEditorFromEnvironmentModule({\n project,\n root: options.root,\n window: options.window,\n agentBridgeSessionMetadata: options.agentBridgeSessionMetadata,\n projectMode: options.projectMode,\n pluginModule: options.pluginModule,\n getCanvas: options.getCanvas,\n hostAssembly: assembly.hostAssembly,\n });\n}\n\n/** @deprecated Projects own Runtime lifecycle. Use mountFpsGameEditorStandardLocalEditorFromEnvironmentModule. */\nexport function mountFpsGameEditorStandardProject(\n project: FpsGameEditorProjectDefinition,\n runtimeHooks: FpsGameEditorRuntimeHooks,\n options: FpsGameEditorStandardProjectMountOptions = {},\n): FpsGameEditorProductLocalEditorModeSwitcher<EditorSceneDocument> {\n const runtime = createFpsGameEditorStandardProjectRuntime(project, runtimeHooks, options);\n return mountFpsGameEditorProductLocalEditor(runtime.createMountOptions());\n}\n\nfunction resolveStandardProjectAssetUrl(project: FpsGameEditorProjectDefinition, asset: EditorSceneAssetLibraryItem): string | null {\n const metadata = (asset.metadata ?? {}) as Record<string, unknown>;\n const external = (asset.external ?? {}) as Record<string, unknown>;\n const raw = [metadata.url, metadata.assetUrl, metadata.relativePath, external.assetUrl, external.assetPath]\n .find(value => typeof value === 'string' && value.trim()) as string | undefined;\n if (!raw) return null;\n if (/^(https?:|data:|blob:|\\/)/i.test(raw)) return raw;\n const normalized = raw.replace(/\\\\/g, '/');\n const importedMarker = normalized.lastIndexOf('/imported/');\n const relative = importedMarker >= 0 ? normalized.slice(importedMarker + '/imported/'.length) : normalized.replace(/^\\.\\.\\//, '');\n return `${project.assets.publicBase.replace(/\\/$/, '')}/${relative.replace(/^\\//, '')}`;\n}\n"]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Scene } from '@babylonjs/core/scene.js';
|
|
2
|
-
import { type BabylonEnvironmentTextureController, type BabylonEnvironmentTextureControllerOptions
|
|
3
|
-
export
|
|
2
|
+
import { type BabylonEnvironmentTextureController, type BabylonEnvironmentTextureControllerOptions } from './types.js';
|
|
3
|
+
export type BabylonEnvironmentTextureControllerCleanup = () => readonly unknown[];
|
|
4
|
+
export declare function readBabylonEnvironmentTextureControllerCleanup(error: unknown): BabylonEnvironmentTextureControllerCleanup | null;
|
|
5
|
+
export declare function createBabylonEnvironmentTextureController(scene: Scene, options?: BabylonEnvironmentTextureControllerOptions): BabylonEnvironmentTextureController;
|
|
4
6
|
//# sourceMappingURL=environment-texture-controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-texture-controller.d.ts","sourceRoot":"","sources":["../../src/environment/environment-texture-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"environment-texture-controller.d.ts","sourceRoot":"","sources":["../../src/environment/environment-texture-controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,0CAA0C,EAIhD,MAAM,YAAY,CAAC;AAQpB,MAAM,MAAM,0CAA0C,GAAG,MAAM,SAAS,OAAO,EAAE,CAAC;AAElF,wBAAgB,8CAA8C,CAC5D,KAAK,EAAE,OAAO,GACb,0CAA0C,GAAG,IAAI,CAOnD;AAED,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,0CAA+C,GACvD,mCAAmC,CAKrC"}
|