@iwsdk/core 0.5.3 → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -1
- package/dist/asset/asset-manager.d.ts.map +1 -1
- package/dist/asset/asset-manager.js +3 -2
- package/dist/asset/asset-manager.js.map +1 -1
- package/dist/asset/cache-manager.js.map +1 -1
- package/dist/asset/loaders/audio-loader.js.map +1 -1
- package/dist/asset/loaders/cached-asset-load.js.map +1 -1
- package/dist/asset/loaders/gltf-loader.js.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
- package/dist/asset/loaders/texture-loader.js.map +1 -1
- package/dist/asset/loaders/uikitml-loader.js.map +1 -1
- package/dist/audio/audio-pool.js.map +1 -1
- package/dist/audio/audio-system.js.map +1 -1
- package/dist/audio/audio-utils.js.map +1 -1
- package/dist/audio/audio.js.map +1 -1
- package/dist/camera/camera-source.js.map +1 -1
- package/dist/camera/camera-system.d.ts +7 -3
- package/dist/camera/camera-system.d.ts.map +1 -1
- package/dist/camera/camera-system.js +81 -50
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/camera/camera-utils.d.ts +5 -0
- package/dist/camera/camera-utils.d.ts.map +1 -1
- package/dist/camera/camera-utils.js +8 -1
- package/dist/camera/camera-utils.js.map +1 -1
- package/dist/camera/types.js.map +1 -1
- package/dist/depth/depth-occludable.js.map +1 -1
- package/dist/depth/depth-sensing-system.d.ts +3 -0
- package/dist/depth/depth-sensing-system.d.ts.map +1 -1
- package/dist/depth/depth-sensing-system.js +55 -1
- package/dist/depth/depth-sensing-system.js.map +1 -1
- package/dist/depth/depth-textures.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
- package/dist/ecs/builtin-components.js.map +1 -1
- package/dist/ecs/component-editor-metadata.js.map +1 -1
- package/dist/ecs/component-manifest.js.map +1 -1
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/system.js.map +1 -1
- package/dist/ecs/world.d.ts +2 -0
- package/dist/ecs/world.d.ts.map +1 -1
- package/dist/ecs/world.js +4 -0
- package/dist/ecs/world.js.map +1 -1
- package/dist/environment/dome-gradient.js.map +1 -1
- package/dist/environment/dome-texture.js.map +1 -1
- package/dist/environment/environment-system.js.map +1 -1
- package/dist/environment/gradient-environment.js.map +1 -1
- package/dist/environment/ibl-gradient.js.map +1 -1
- package/dist/environment/ibl-texture.js.map +1 -1
- package/dist/environment/scene-ar-environment.js.map +1 -1
- package/dist/environment-raycast/environment-raycast.js.map +1 -1
- package/dist/environment-raycast/raycast-target.js.map +1 -1
- package/dist/grab/distance-grabbable.d.ts +5 -0
- package/dist/grab/distance-grabbable.d.ts.map +1 -1
- package/dist/grab/distance-grabbable.js +5 -0
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-helpers.js.map +1 -1
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/grab-warnings.js.map +1 -1
- package/dist/grab/grabbed.js.map +1 -1
- package/dist/grab/handles.d.ts +6 -0
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +46 -12
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/index.js.map +1 -1
- package/dist/grab/one-hand-grabbable.d.ts +5 -0
- package/dist/grab/one-hand-grabbable.d.ts.map +1 -1
- package/dist/grab/one-hand-grabbable.js +5 -0
- package/dist/grab/one-hand-grabbable.js.map +1 -1
- package/dist/grab/pointer-events-patch.js.map +1 -1
- package/dist/grab/two-hands-grabbable.d.ts +5 -0
- package/dist/grab/two-hands-grabbable.d.ts.map +1 -1
- package/dist/grab/two-hands-grabbable.js +5 -0
- package/dist/grab/two-hands-grabbable.js.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/init/browser-camera.js.map +1 -1
- package/dist/init/index.d.ts +2 -2
- package/dist/init/index.d.ts.map +1 -1
- package/dist/init/player-camera.js.map +1 -1
- package/dist/init/session-grant.d.ts +34 -0
- package/dist/init/session-grant.d.ts.map +1 -0
- package/dist/init/session-grant.js +89 -0
- package/dist/init/session-grant.js.map +1 -0
- package/dist/init/world-initializer.d.ts +87 -4
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +45 -41
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +19 -0
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +136 -41
- package/dist/init/xr.js.map +1 -1
- package/dist/input/canvas-pointer-system.d.ts +2 -0
- package/dist/input/canvas-pointer-system.d.ts.map +1 -1
- package/dist/input/canvas-pointer-system.js +33 -13
- package/dist/input/canvas-pointer-system.js.map +1 -1
- package/dist/input/input-actions.js.map +1 -1
- package/dist/input/input-manager.js.map +1 -1
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +5 -2
- package/dist/input/input-system.js.map +1 -1
- package/dist/input/state-tags.js.map +1 -1
- package/dist/input/stateful-browser-gamepad.js.map +1 -1
- package/dist/input/stateful-keyboard.js.map +1 -1
- package/dist/layers/xr-cylinder-layer.d.ts +2 -1
- package/dist/layers/xr-cylinder-layer.d.ts.map +1 -1
- package/dist/layers/xr-cylinder-layer.js +2 -1
- package/dist/layers/xr-cylinder-layer.js.map +1 -1
- package/dist/layers/xr-layer-init.d.ts +19 -0
- package/dist/layers/xr-layer-init.d.ts.map +1 -0
- package/dist/layers/xr-layer-init.js +20 -0
- package/dist/layers/xr-layer-init.js.map +1 -0
- package/dist/layers/xr-layer-state.js.map +1 -1
- package/dist/layers/xr-layer-system.d.ts +41 -1
- package/dist/layers/xr-layer-system.d.ts.map +1 -1
- package/dist/layers/xr-layer-system.js +506 -132
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/layers/xr-layer-transform.d.ts +18 -0
- package/dist/layers/xr-layer-transform.d.ts.map +1 -0
- package/dist/layers/xr-layer-transform.js +115 -0
- package/dist/layers/xr-layer-transform.js.map +1 -0
- package/dist/layers/xr-quad-layer.d.ts +2 -1
- package/dist/layers/xr-quad-layer.d.ts.map +1 -1
- package/dist/layers/xr-quad-layer.js +2 -1
- package/dist/layers/xr-quad-layer.js.map +1 -1
- package/dist/level/level-component-applier.d.ts +2 -0
- package/dist/level/level-component-applier.d.ts.map +1 -1
- package/dist/level/level-component-applier.js +24 -5
- package/dist/level/level-component-applier.js.map +1 -1
- package/dist/level/level-player-rig.js.map +1 -1
- package/dist/level/level-root.js.map +1 -1
- package/dist/level/level-scene-environment.js.map +1 -1
- package/dist/level/level-scene-json-importer.js.map +1 -1
- package/dist/level/level-scene-material.js.map +1 -1
- package/dist/level/level-scene-object.js.map +1 -1
- package/dist/level/level-scene-primitive.js.map +1 -1
- package/dist/level/level-system.js.map +1 -1
- package/dist/level/level-tag.js.map +1 -1
- package/dist/lighting/light-binding.js.map +1 -1
- package/dist/lighting/light-components.js.map +1 -1
- package/dist/lighting/light-system.js.map +1 -1
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
- package/dist/locomotion/locomotion-environment.js.map +1 -1
- package/dist/locomotion/locomotion-input-provider.js.map +1 -1
- package/dist/locomotion/locomotion.js.map +1 -1
- package/dist/locomotion/materials/line.js.map +1 -1
- package/dist/locomotion/slide.js.map +1 -1
- package/dist/locomotion/teleport.js.map +1 -1
- package/dist/locomotion/turn.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.d.ts +4 -1
- package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
- package/dist/mcp/ecs-debug-tools.js +113 -10
- package/dist/mcp/ecs-debug-tools.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/mcp-runtime.d.ts +2 -0
- package/dist/mcp/mcp-runtime.d.ts.map +1 -1
- package/dist/mcp/mcp-runtime.js +41 -0
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/scene-tools.js.map +1 -1
- package/dist/mcp/ui-debug-tools.d.ts +56 -0
- package/dist/mcp/ui-debug-tools.d.ts.map +1 -0
- package/dist/mcp/ui-debug-tools.js +412 -0
- package/dist/mcp/ui-debug-tools.js.map +1 -0
- package/dist/physics/index.js +1 -1
- package/dist/physics/physics-runtime.d.ts +22 -0
- package/dist/physics/physics-runtime.d.ts.map +1 -0
- package/dist/physics/physics-runtime.js +423 -0
- package/dist/physics/physics-runtime.js.map +1 -0
- package/dist/physics/physics-system.d.ts +84 -108
- package/dist/physics/physics-system.d.ts.map +1 -1
- package/dist/physics/physics-system.js +686 -555
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physics-transport.d.ts +20 -0
- package/dist/physics/physics-transport.d.ts.map +1 -0
- package/dist/physics/physics-transport.js +111 -0
- package/dist/physics/physics-transport.js.map +1 -0
- package/dist/physics/physics-worker-protocol.d.ts +144 -0
- package/dist/physics/physics-worker-protocol.d.ts.map +1 -0
- package/dist/physics/physics-worker-protocol.js +41 -0
- package/dist/physics/physics-worker-protocol.js.map +1 -0
- package/dist/physics/physics-worker-utils.d.ts +8 -0
- package/dist/physics/physics-worker-utils.d.ts.map +1 -0
- package/dist/physics/physics-worker-utils.js +12 -0
- package/dist/physics/physics-worker-utils.js.map +1 -0
- package/dist/physics/physics-worker.d.ts +8 -0
- package/dist/physics/physics-worker.d.ts.map +1 -0
- package/dist/physics/physics-worker.js +66 -0
- package/dist/physics/physics-worker.js.map +1 -0
- package/dist/physics/physicsBody.js.map +1 -1
- package/dist/physics/physicsManipulation.js.map +1 -1
- package/dist/physics/physicsShape.js.map +1 -1
- package/dist/physics/utils.js.map +1 -1
- package/dist/project/normalize.js +7 -1
- package/dist/project/normalize.js.map +1 -1
- package/dist/project/paths.js.map +1 -1
- package/dist/project/types.d.ts +7 -1
- package/dist/project/types.d.ts.map +1 -1
- package/dist/project/types.js.map +1 -1
- package/dist/project/validation.js +36 -2
- package/dist/project/validation.js.map +1 -1
- package/dist/runtime/three.js.map +1 -1
- package/dist/scene-understanding/anchor.js.map +1 -1
- package/dist/scene-understanding/mesh.js.map +1 -1
- package/dist/scene-understanding/plane.js.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.d.ts +42 -6
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js +391 -106
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/schemas/iwsdk-project.v1.schema.json +20 -1
- package/dist/transform/synced-euler.js.map +1 -1
- package/dist/transform/synced-quaternion.js.map +1 -1
- package/dist/transform/synced-vector3.js.map +1 -1
- package/dist/transform/transform-component.js.map +1 -1
- package/dist/transform/transform-utils.js.map +1 -1
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/document.js.map +1 -1
- package/dist/ui/follow-component.js.map +1 -1
- package/dist/ui/follow.d.ts.map +1 -1
- package/dist/ui/follow.js +0 -1
- package/dist/ui/follow.js.map +1 -1
- package/dist/ui/panel-components.js.map +1 -1
- package/dist/ui/screenspace-component.js.map +1 -1
- package/dist/ui/screenspace.js.map +1 -1
- package/dist/ui/ui.js.map +1 -1
- package/dist/ui/uikitml-asset.js.map +1 -1
- package/dist/ui/uikitml.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/visibility/visibility-component.js.map +1 -1
- package/dist/visibility/visibility.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-scene-json-importer.js","sources":["../../src/level/level-scene-json-importer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"level-scene-json-importer.js","sources":["../../src/level/level-scene-json-importer.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n assertValidSceneDocument,\n hashRuntimeSceneDocument,\n type JsonObject,\n type SceneDocument,\n type SceneCompositionDependency,\n type SceneEntityReference,\n type SceneNode,\n type SceneNodeContent,\n type SceneNodeFramingRole,\n type Sha256,\n} from '@iwsdk/scene-composition';\nimport type { Entity } from '../ecs/entity.js';\nimport type { World } from '../ecs/world.js';\nimport { Object3D } from '../runtime/index.js';\nimport {\n LEVEL_COMPONENT_PREFIX,\n LevelComponentApplier,\n} from './level-component-applier.js';\nimport { getScenePlayerTargetEntity } from './level-player-rig.js';\nimport {\n disposeLoweredSceneNodes,\n lowerSceneDocumentObjects,\n resolveSceneDocumentForLowering,\n type SceneLoweredNode,\n type SceneLoweredVirtualNode,\n} from './level-scene-object.js';\n\nexport interface SceneJSONImportedNode {\n assetId?: string;\n componentTypes: string[];\n contentType?: SceneNodeContent['type'];\n entity: Entity;\n framingRole: SceneNodeFramingRole;\n instanceIndex?: number;\n metadata?: JsonObject;\n node: SceneNode;\n nodeId: string;\n object: Object3D;\n parentNodeId?: string;\n runtimeHash: Sha256;\n sourceNodeId: string;\n}\n\nexport interface SceneJSONLoadResult {\n dependencies: SceneCompositionDependency[];\n document: SceneDocument;\n nodes: Map<string, SceneJSONImportedNode>;\n playerAttachments: Entity[];\n rootEntities: Entity[];\n runtimeHash: Sha256;\n}\n\nexport interface SceneJSONImportOptions {}\n\ninterface PendingSceneComponents {\n components: Record<string, unknown>;\n entity: Entity;\n nodeId: string;\n}\n\n/**\n * Loads native IWSDK scene JSON documents into a level root.\n *\n * @category Scene\n */\nexport class SceneJSONImporter {\n static canLoadUrl(url: string): boolean {\n const pathname = parsePathname(url);\n return (\n pathname.endsWith('.iwsdk.scene.json') || pathname.endsWith('.scene.json')\n );\n }\n\n static async load(\n world: World,\n url: string,\n parentEntity: Entity,\n _options: SceneJSONImportOptions = {},\n ): Promise<SceneJSONLoadResult> {\n if (!this.canLoadUrl(url)) {\n throw new Error(\n `Unsupported level URL \"${url}\". Expected a native .iwsdk.scene.json or .scene.json document.`,\n );\n }\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Failed to load IWSDK scene \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n\n return this.loadDocument(\n world,\n await response.json(),\n parentEntity,\n response.url || url,\n _options,\n );\n }\n\n static async loadDocument(\n world: World,\n document: SceneDocument,\n parentEntity: Entity,\n documentUrl?: string,\n _options: SceneJSONImportOptions = {},\n ): Promise<SceneJSONLoadResult> {\n const sourceDocument = structuredClone(document);\n const authoringAssets = world.assets?.catalog?.();\n const validationOptions = {\n componentCatalog: world.componentCatalog,\n ...(authoringAssets == null\n ? {}\n : { knownAssetIds: authoringAssets.map((asset) => asset.id) }),\n // Authoring review completeness is not part of the runtime projection.\n // Draft scenes that the editor can render must remain runtime-loadable.\n validateAuthoringWorkflow: false,\n validateComponentLinks: false,\n };\n assertValidSceneDocument(sourceDocument, validationOptions);\n if ((sourceDocument.imports?.length ?? 0) > 0) {\n throw new Error(\n 'Scene imports are supported only by IWSDK authoring tools. Flatten this document before loading it at runtime with \"iwsdk scene flatten --input-json \\'{\\\"path\\\":\\\"public/scenes/source.iwsdk.scene.json\\\"}\\'\".',\n );\n }\n const runtimeHash = hashRuntimeSceneDocument(sourceDocument);\n const resolvedDocument = resolveSceneDocumentForLowering(sourceDocument);\n assertValidSceneDocument(resolvedDocument, validationOptions);\n const result: SceneJSONLoadResult = {\n dependencies: [],\n document: resolvedDocument,\n nodes: new Map(),\n playerAttachments: [],\n rootEntities: [],\n runtimeHash,\n };\n\n let roots: SceneLoweredNode[] = [];\n const createdEntities: Entity[] = [];\n const pendingComponents: PendingSceneComponents[] = [];\n try {\n roots = await lowerSceneDocumentObjects(resolvedDocument, {\n loadAsset: (assetId) => world.assets.instantiate(assetId),\n resolveAssetBounds: (assetId) => world.assets.bounds(assetId),\n runtimeHash,\n });\n for (const root of roots) {\n const playerTarget = root.node.parent?.target;\n const rootParent =\n playerTarget == null\n ? parentEntity\n : getScenePlayerTargetEntity(world, playerTarget);\n if (playerTarget != null) {\n root.object.userData.iwsdkSceneAuthoredVisible = root.object.visible;\n root.object.visible = false;\n }\n const entity = this.createEntityForLoweredNode(\n world,\n root,\n rootParent,\n documentUrl,\n result,\n createdEntities,\n pendingComponents,\n );\n result.rootEntities.push(entity);\n if (playerTarget != null) {\n result.playerAttachments.push(entity);\n }\n }\n const resolveEntityReference = createSceneEntityReferenceResolver(\n world,\n parentEntity,\n result.nodes,\n );\n if (resolvedDocument.components != null) {\n LevelComponentApplier.applyComponents(\n parentEntity,\n resolvedDocument.components,\n world,\n {\n nodeId: '$root',\n resolveEntityReference,\n strict: true,\n },\n );\n }\n for (const pending of pendingComponents) {\n LevelComponentApplier.applyComponents(\n pending.entity,\n pending.components,\n world,\n {\n nodeId: pending.nodeId,\n resolveEntityReference,\n strict: true,\n },\n );\n }\n const parentObject = parentEntity.object3D ?? world.getActiveRoot();\n parentObject.userData.iwsdkSceneRuntimeHash = runtimeHash;\n parentObject.userData.iwsdkSceneDocumentMetadata = cloneJson(\n resolvedDocument.metadata,\n );\n parentObject.userData.iwsdkSceneRootComponents = cloneJson(\n resolvedDocument.components,\n );\n parentObject.userData.iwsdkSceneEnvironment = cloneJson(\n resolvedDocument.environment,\n );\n } catch (error) {\n for (const entity of createdEntities.reverse()) {\n entity.destroy();\n }\n for (const root of roots) {\n root.object.removeFromParent();\n }\n disposeLoweredSceneNodes(...roots);\n throw error;\n }\n return result;\n }\n\n private static createEntityForLoweredNode(\n world: World,\n lowered: SceneLoweredNode,\n parentEntity: Entity,\n documentUrl: string | undefined,\n result: SceneJSONLoadResult,\n createdEntities: Entity[],\n pendingComponents: PendingSceneComponents[],\n ): Entity {\n const parentObject = parentEntity.object3D ?? world.getActiveRoot();\n if (lowered.object.parent !== parentObject) {\n parentObject.add(lowered.object);\n }\n lowered.object.traverse((object) => {\n object.userData.iwsdkSceneDocumentUrl = documentUrl;\n object.userData.iwsdkSceneRuntimeHash = result.runtimeHash;\n object.userData.iwsdkSceneLevelId = world.activeLevelId;\n });\n\n const entity = world.createTransformEntity(lowered.object, parentEntity);\n createdEntities.push(entity);\n const components = withoutIntrinsicVisibility(lowered.node.components);\n if (components != null) {\n pendingComponents.push({\n components,\n entity,\n nodeId: lowered.id,\n });\n }\n addImportedNode(result, lowered, entity);\n for (const virtual of lowered.virtualNodes) {\n addVirtualImportedNode(result, virtual, entity);\n }\n for (const child of lowered.children) {\n this.createEntityForLoweredNode(\n world,\n child,\n entity,\n documentUrl,\n result,\n createdEntities,\n pendingComponents,\n );\n }\n return entity;\n }\n}\n\nfunction withoutIntrinsicVisibility(\n components: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (components == null) {\n return undefined;\n }\n const result = Object.fromEntries(\n Object.entries(components).filter(\n ([name]) =>\n name !== 'Visibility' && name !== `${LEVEL_COMPONENT_PREFIX}Visibility`,\n ),\n );\n return Object.keys(result).length === 0 ? undefined : result;\n}\n\n/** Resolve stable scene JSON entity references after all scene entities exist. */\nexport function createSceneEntityReferenceResolver(\n world: World,\n levelRoot: Entity,\n nodes: ReadonlyMap<string, { entity: Entity }>,\n): (reference: unknown) => Entity | undefined {\n return (reference) => {\n if (!isSceneEntityReference(reference)) {\n return undefined;\n }\n if (reference.type === 'node') {\n return nodes.get(reference.id)?.entity;\n }\n if (reference.type === 'player-space') {\n return getScenePlayerTargetEntity(world, reference.target);\n }\n return levelRoot;\n };\n}\n\nfunction isSceneEntityReference(value: unknown): value is SceneEntityReference {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const reference = value as Record<string, unknown>;\n return (\n (reference.type === 'node' && typeof reference.id === 'string') ||\n (reference.type === 'player-space' &&\n typeof reference.target === 'string') ||\n reference.type === 'level-root'\n );\n}\n\n/** Reveal player-space attachments after their replacement level commits. */\nexport function activateScenePlayerAttachments(\n result: SceneJSONLoadResult | undefined,\n): void {\n for (const entity of result?.playerAttachments ?? []) {\n const object = entity.object3D;\n if (object == null) {\n continue;\n }\n object.visible = object.userData.iwsdkSceneAuthoredVisible !== false;\n delete object.userData.iwsdkSceneAuthoredVisible;\n }\n}\n\nfunction addImportedNode(\n result: SceneJSONLoadResult,\n lowered: SceneLoweredNode,\n entity: Entity,\n): void {\n assertUniqueRuntimeNodeId(result, lowered.id);\n const content = lowered.node.content;\n result.nodes.set(lowered.id, {\n assetId: content?.type === 'asset' ? content.asset : undefined,\n componentTypes: Object.keys(lowered.node.components ?? {}),\n contentType: content?.type,\n entity,\n framingRole:\n lowered.object.userData.iwsdkSceneFramingRole === 'support'\n ? 'support'\n : 'content',\n metadata: cloneJson(lowered.node.metadata),\n node: lowered.node,\n nodeId: lowered.id,\n object: lowered.object,\n parentNodeId: lowered.parentNodeId,\n runtimeHash: result.runtimeHash,\n sourceNodeId: lowered.sourceNodeId,\n });\n}\n\nfunction addVirtualImportedNode(\n result: SceneJSONLoadResult,\n lowered: SceneLoweredVirtualNode,\n entity: Entity,\n): void {\n assertUniqueRuntimeNodeId(result, lowered.id);\n const content = lowered.node.content;\n result.nodes.set(lowered.id, {\n componentTypes: [],\n contentType: content?.type,\n entity,\n framingRole:\n lowered.object.userData.iwsdkSceneFramingRole === 'support'\n ? 'support'\n : 'content',\n instanceIndex: lowered.instanceIndex,\n metadata: cloneJson(lowered.node.metadata),\n node: lowered.node,\n nodeId: lowered.id,\n object: lowered.object,\n parentNodeId: lowered.parentNodeId,\n runtimeHash: result.runtimeHash,\n sourceNodeId: lowered.sourceNodeId,\n });\n}\n\nfunction assertUniqueRuntimeNodeId(\n result: SceneJSONLoadResult,\n nodeId: string,\n): void {\n if (result.nodes.has(nodeId)) {\n throw new Error(`Duplicate lowered scene node id \"${nodeId}\"`);\n }\n}\n\nfunction parsePathname(url: string): string {\n try {\n return new URL(url, 'https://iwsdk.local').pathname.toLowerCase();\n } catch {\n return url.split(/[?#]/, 1)[0].toLowerCase();\n }\n}\n\nfunction cloneJson<T>(value: T): T {\n if (value === undefined) {\n return value;\n }\n return JSON.parse(JSON.stringify(value)) as T;\n}\n"],"names":[],"mappings":";;;;;AAAA;;;;;AAKG;AA+DH;;;;AAIG;MACU,iBAAiB,CAAA;IAC5B,OAAO,UAAU,CAAC,GAAW,EAAA;AAC3B,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC;AACnC,QAAA,QACE,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;IAE9E;AAEA,IAAA,aAAa,IAAI,CACf,KAAY,EACZ,GAAW,EACX,YAAoB,EACpB,QAAA,GAAmC,EAAE,EAAA;QAErC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CACb,0BAA0B,GAAG,CAAA,+DAAA,CAAiE,CAC/F;QACH;AACA,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,4BAAA,EAA+B,GAAG,CAAA,GAAA,EAAM,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAA,CAAE,CACjF;QACH;QAEA,OAAO,IAAI,CAAC,YAAY,CACtB,KAAK,EACL,MAAM,QAAQ,CAAC,IAAI,EAAE,EACrB,YAAY,EACZ,QAAQ,CAAC,GAAG,IAAI,GAAG,EACnB,QAAQ,CACT;IACH;AAEA,IAAA,aAAa,YAAY,CACvB,KAAY,EACZ,QAAuB,EACvB,YAAoB,EACpB,WAAoB,EACpB,WAAmC,EAAE,EAAA;;AAErC,QAAA,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC;QAChD,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAI;AACjD,QAAA,MAAM,iBAAiB,GAAG;YACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,IAAI,eAAe,IAAI;AACrB,kBAAE;AACF,kBAAE,EAAE,aAAa,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;;;AAGhE,YAAA,yBAAyB,EAAE,KAAK;AAChC,YAAA,sBAAsB,EAAE,KAAK;SAC9B;AACD,QAAA,wBAAwB,CAAC,cAAc,EAAE,iBAAiB,CAAC;AAC3D,QAAA,IAAI,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,cAAc,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,EAAE;AAC7C,YAAA,MAAM,IAAI,KAAK,CACb,iNAAiN,CAClN;QACH;AACA,QAAA,MAAM,WAAW,GAAG,wBAAwB,CAAC,cAAc,CAAC;AAC5D,QAAA,MAAM,gBAAgB,GAAG,+BAA+B,CAAC,cAAc,CAAC;AACxE,QAAA,wBAAwB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;AAC7D,QAAA,MAAM,MAAM,GAAwB;AAClC,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,IAAI,GAAG,EAAE;AAChB,YAAA,iBAAiB,EAAE,EAAE;AACrB,YAAA,YAAY,EAAE,EAAE;YAChB,WAAW;SACZ;QAED,IAAI,KAAK,GAAuB,EAAE;QAClC,MAAM,eAAe,GAAa,EAAE;QACpC,MAAM,iBAAiB,GAA6B,EAAE;AACtD,QAAA,IAAI;AACF,YAAA,KAAK,GAAG,MAAM,yBAAyB,CAAC,gBAAgB,EAAE;AACxD,gBAAA,SAAS,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AACzD,gBAAA,kBAAkB,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC7D,WAAW;AACZ,aAAA,CAAC;AACF,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM;AAC7C,gBAAA,MAAM,UAAU,GACd,YAAY,IAAI;AACd,sBAAE;AACF,sBAAE,0BAA0B,CAAC,KAAK,EAAE,YAAY,CAAC;AACrD,gBAAA,IAAI,YAAY,IAAI,IAAI,EAAE;AACxB,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AACpE,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK;gBAC7B;gBACA,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAC5C,KAAK,EACL,IAAI,EACJ,UAAU,EACV,WAAW,EACX,MAAM,EACN,eAAe,EACf,iBAAiB,CAClB;AACD,gBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,gBAAA,IAAI,YAAY,IAAI,IAAI,EAAE;AACxB,oBAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;gBACvC;YACF;AACA,YAAA,MAAM,sBAAsB,GAAG,kCAAkC,CAC/D,KAAK,EACL,YAAY,EACZ,MAAM,CAAC,KAAK,CACb;AACD,YAAA,IAAI,gBAAgB,CAAC,UAAU,IAAI,IAAI,EAAE;gBACvC,qBAAqB,CAAC,eAAe,CACnC,YAAY,EACZ,gBAAgB,CAAC,UAAU,EAC3B,KAAK,EACL;AACE,oBAAA,MAAM,EAAE,OAAO;oBACf,sBAAsB;AACtB,oBAAA,MAAM,EAAE,IAAI;AACb,iBAAA,CACF;YACH;AACA,YAAA,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE;AACvC,gBAAA,qBAAqB,CAAC,eAAe,CACnC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,UAAU,EAClB,KAAK,EACL;oBACE,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,sBAAsB;AACtB,oBAAA,MAAM,EAAE,IAAI;AACb,iBAAA,CACF;YACH;YACA,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,YAAY,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC,aAAa,EAAE;AACnE,YAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,GAAG,WAAW;YACzD,YAAY,CAAC,QAAQ,CAAC,0BAA0B,GAAG,SAAS,CAC1D,gBAAgB,CAAC,QAAQ,CAC1B;YACD,YAAY,CAAC,QAAQ,CAAC,wBAAwB,GAAG,SAAS,CACxD,gBAAgB,CAAC,UAAU,CAC5B;YACD,YAAY,CAAC,QAAQ,CAAC,qBAAqB,GAAG,SAAS,CACrD,gBAAgB,CAAC,WAAW,CAC7B;QACH;QAAE,OAAO,KAAK,EAAE;YACd,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE;gBAC9C,MAAM,CAAC,OAAO,EAAE;YAClB;AACA,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC;AACA,YAAA,wBAAwB,CAAC,GAAG,KAAK,CAAC;AAClC,YAAA,MAAM,KAAK;QACb;AACA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,OAAO,0BAA0B,CACvC,KAAY,EACZ,OAAyB,EACzB,YAAoB,EACpB,WAA+B,EAC/B,MAA2B,EAC3B,eAAyB,EACzB,iBAA2C,EAAA;;QAE3C,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,YAAY,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK,CAAC,aAAa,EAAE;QACnE,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE;AAC1C,YAAA,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC;QACA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAI;AACjC,YAAA,MAAM,CAAC,QAAQ,CAAC,qBAAqB,GAAG,WAAW;YACnD,MAAM,CAAC,QAAQ,CAAC,qBAAqB,GAAG,MAAM,CAAC,WAAW;YAC1D,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,aAAa;AACzD,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;AACxE,QAAA,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5B,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AACtE,QAAA,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,iBAAiB,CAAC,IAAI,CAAC;gBACrB,UAAU;gBACV,MAAM;gBACN,MAAM,EAAE,OAAO,CAAC,EAAE;AACnB,aAAA,CAAC;QACJ;AACA,QAAA,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AACxC,QAAA,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE;AAC1C,YAAA,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QACjD;AACA,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,0BAA0B,CAC7B,KAAK,EACL,KAAK,EACL,MAAM,EACN,WAAW,EACX,MAAM,EACN,eAAe,EACf,iBAAiB,CAClB;QACH;AACA,QAAA,OAAO,MAAM;IACf;AACD;AAED,SAAS,0BAA0B,CACjC,UAA+C,EAAA;AAE/C,IAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAC/B,CAAC,CAAC,IAAI,CAAC,KACL,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,CAAA,EAAG,sBAAsB,CAAA,UAAA,CAAY,CAC1E,CACF;AACD,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,MAAM;AAC9D;AAEA;SACgB,kCAAkC,CAChD,KAAY,EACZ,SAAiB,EACjB,KAA8C,EAAA;IAE9C,OAAO,CAAC,SAAS,KAAI;;AACnB,QAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE;AACtC,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;YAC7B,OAAO,CAAA,EAAA,GAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM;QACxC;AACA,QAAA,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE;YACrC,OAAO,0BAA0B,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;QAC5D;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;AACH;AAEA,SAAS,sBAAsB,CAAC,KAAc,EAAA;AAC5C,IAAA,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtE,QAAA,OAAO,KAAK;IACd;IACA,MAAM,SAAS,GAAG,KAAgC;AAClD,IAAA,QACE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ;AAC9D,SAAC,SAAS,CAAC,IAAI,KAAK,cAAc;AAChC,YAAA,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC;AACvC,QAAA,SAAS,CAAC,IAAI,KAAK,YAAY;AAEnC;AAEA;AACM,SAAU,8BAA8B,CAC5C,MAAuC,EAAA;;AAEvC,IAAA,KAAK,MAAM,MAAM,IAAI,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAE;AACpD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;AAC9B,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB;QACF;QACA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,yBAAyB,KAAK,KAAK;AACpE,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,yBAAyB;IAClD;AACF;AAEA,SAAS,eAAe,CACtB,MAA2B,EAC3B,OAAyB,EACzB,MAAc,EAAA;;AAEd,IAAA,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;AAC7C,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;QAC3B,OAAO,EAAE,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,IAAI,MAAK,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS;AAC9D,QAAA,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAC1D,QAAA,WAAW,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,IAAI;QAC1B,MAAM;QACN,WAAW,EACT,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,KAAK;AAChD,cAAE;AACF,cAAE,SAAS;QACf,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,OAAO,CAAC,YAAY;AACnC,KAAA,CAAC;AACJ;AAEA,SAAS,sBAAsB,CAC7B,MAA2B,EAC3B,OAAgC,EAChC,MAAc,EAAA;AAEd,IAAA,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;AAC7C,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO;IACpC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;AAC3B,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,WAAW,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,IAAI;QAC1B,MAAM;QACN,WAAW,EACT,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,KAAK;AAChD,cAAE;AACF,cAAE,SAAS;QACf,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,OAAO,CAAC,YAAY;AACnC,KAAA,CAAC;AACJ;AAEA,SAAS,yBAAyB,CAChC,MAA2B,EAC3B,MAAc,EAAA;IAEd,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAA,CAAA,CAAG,CAAC;IAChE;AACF;AAEA,SAAS,aAAa,CAAC,GAAW,EAAA;AAChC,IAAA,IAAI;AACF,QAAA,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;IACnE;AAAE,IAAA,OAAA,EAAA,EAAM;AACN,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IAC9C;AACF;AAEA,SAAS,SAAS,CAAI,KAAQ,EAAA;AAC5B,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;IACA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAM;AAC/C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-scene-material.js","sources":["../../src/level/level-scene-material.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"level-scene-material.js","sources":["../../src/level/level-scene-material.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n generateSceneProceduralTexture,\n type SceneMaterial,\n type SceneMaterialTextures,\n type SceneProceduralTextureDescriptor,\n type SceneProceduralTextureChannel,\n} from '@iwsdk/scene-composition';\nimport {\n BackSide,\n ClampToEdgeWrapping,\n DataTexture,\n DoubleSide,\n FrontSide,\n LinearFilter,\n LinearMipmapLinearFilter,\n Material,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n MirroredRepeatWrapping,\n NoColorSpace,\n RepeatWrapping,\n RGBAFormat,\n SRGBColorSpace,\n Texture,\n UnsignedByteType,\n Vector2,\n} from '../runtime/index.js';\n\nconst MATERIAL_TEXTURE_PROPERTIES = [\n 'map',\n 'emissiveMap',\n 'roughnessMap',\n 'metalnessMap',\n 'aoMap',\n 'alphaMap',\n 'normalMap',\n 'bumpMap',\n] as const;\n\n/** One immutable Three.js material instance per declared resource ID. */\nexport class SceneMaterialPool {\n private readonly materials = new Map<string, Material>();\n private readonly roots = new Set<object>();\n private disposed = false;\n\n get(spec: SceneMaterial): Material {\n if (this.disposed) {\n throw new Error(\n 'Cannot resolve a material from a disposed scene material pool',\n );\n }\n const existing = this.materials.get(spec.id);\n if (existing != null) {\n return existing;\n }\n const material = createSceneMaterial(spec);\n material.userData.iwsdkSceneMaterialPooled = true;\n this.materials.set(spec.id, material);\n return material;\n }\n\n retain(root: object): void {\n if (!this.disposed) {\n this.roots.add(root);\n }\n }\n\n release(root: object): void {\n this.roots.delete(root);\n if (this.roots.size === 0) {\n this.dispose();\n }\n }\n\n dispose(): void {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n const textures = new Set<Texture>();\n for (const material of this.materials.values()) {\n collectSceneMaterialTextures(material, textures);\n material.dispose();\n }\n for (const texture of textures) {\n texture.dispose();\n }\n this.materials.clear();\n this.roots.clear();\n }\n}\n\n/** Build a Three.js built-in material from a closed scene material resource. */\nexport function createSceneMaterial(spec: SceneMaterial): Material {\n const opacity = spec.opacity ?? 1;\n const textures = 'textures' in spec ? spec.textures : undefined;\n const generated = createMaterialTextures(spec.id, textures);\n const common = {\n ...(generated.alpha == null ? {} : { alphaMap: generated.alpha }),\n color: spec.baseColor ?? (generated.albedo == null ? '#8aa0ad' : '#ffffff'),\n ...(generated.albedo == null ? {} : { map: generated.albedo }),\n opacity,\n side: resolveMaterialSide(spec.side),\n transparent: opacity < 1 || generated.alpha != null,\n };\n let material: Material;\n if (spec.model === 'basic') {\n material = new MeshBasicMaterial(common);\n } else {\n const pbr = {\n ...common,\n ...(generated.ambientOcclusion == null\n ? {}\n : { aoMap: generated.ambientOcclusion }),\n ...(generated.bump == null\n ? {}\n : { bumpMap: generated.bump, bumpScale: textures?.bump?.scale ?? 1 }),\n emissive:\n spec.emissive ?? (generated.emissive == null ? '#000000' : '#ffffff'),\n emissiveIntensity: spec.emissiveIntensity ?? 1,\n ...(generated.emissive == null\n ? {}\n : { emissiveMap: generated.emissive }),\n flatShading: spec.flatShading ?? false,\n metalness: spec.metalness ?? (generated.metalness == null ? 0 : 1),\n ...(generated.metalness == null\n ? {}\n : { metalnessMap: generated.metalness }),\n ...(generated.normal == null\n ? {}\n : {\n normalMap: generated.normal,\n normalScale: new Vector2(...(textures?.normal?.scale ?? [1, 1])),\n }),\n roughness: spec.roughness ?? (generated.roughness == null ? 0.7 : 1),\n ...(generated.roughness == null\n ? {}\n : { roughnessMap: generated.roughness }),\n };\n material =\n spec.model === 'physical'\n ? new MeshPhysicalMaterial({\n ...pbr,\n anisotropy: spec.anisotropy ?? 0,\n anisotropyRotation:\n ((spec.anisotropyRotationDeg ?? 0) * Math.PI) / 180,\n attenuationColor: spec.attenuationColor ?? '#ffffff',\n attenuationDistance: spec.attenuationDistance ?? Infinity,\n clearcoat: spec.clearcoat ?? 0,\n clearcoatRoughness: spec.clearcoatRoughness ?? 0,\n envMapIntensity: spec.envMapIntensity ?? 1,\n ior: spec.ior ?? 1.5,\n sheen: spec.sheen ?? 0,\n sheenColor: spec.sheenColor ?? '#000000',\n sheenRoughness: spec.sheenRoughness ?? 1,\n specularColor: spec.specularColor ?? '#ffffff',\n specularIntensity: spec.specularIntensity ?? 1,\n thickness: spec.thickness ?? 0,\n transmission: spec.transmission ?? 0,\n })\n : new MeshStandardMaterial(pbr);\n }\n material.name = spec.id;\n material.userData.iwsdkSceneMaterialId = spec.id;\n material.userData.iwsdkSceneMaterialModel = spec.model;\n return material;\n}\n\nexport function disposeStandaloneSceneMaterial(material: Material): void {\n if (material.userData.iwsdkSceneMaterialPooled === true) {\n return;\n }\n const textures = new Set<Texture>();\n collectSceneMaterialTextures(material, textures);\n material.dispose();\n for (const texture of textures) {\n texture.dispose();\n }\n}\n\nfunction createMaterialTextures(\n materialId: string,\n textures: SceneMaterialTextures | undefined,\n): Partial<Record<SceneProceduralTextureChannel, DataTexture>> {\n const result: Partial<Record<SceneProceduralTextureChannel, DataTexture>> =\n {};\n if (textures == null) {\n return result;\n }\n for (const [channel, descriptor] of Object.entries(textures) as [\n SceneProceduralTextureChannel,\n SceneProceduralTextureDescriptor | undefined,\n ][]) {\n if (descriptor == null) {\n continue;\n }\n result[channel] = createProceduralDataTexture(\n materialId,\n channel,\n descriptor,\n );\n }\n return result;\n}\n\nfunction createProceduralDataTexture(\n materialId: string,\n channel: SceneProceduralTextureChannel,\n descriptor: SceneProceduralTextureDescriptor,\n): DataTexture {\n const generated = generateSceneProceduralTexture(channel, descriptor);\n const texture = new DataTexture(\n generated.data,\n generated.width,\n generated.height,\n RGBAFormat,\n UnsignedByteType,\n );\n texture.name = `${materialId}:${channel}`;\n texture.colorSpace =\n channel === 'albedo' || channel === 'emissive'\n ? SRGBColorSpace\n : NoColorSpace;\n texture.flipY = false;\n texture.generateMipmaps = true;\n texture.magFilter = LinearFilter;\n texture.minFilter = LinearMipmapLinearFilter;\n const sampler = descriptor.sampler;\n texture.wrapS = resolveTextureWrap(sampler?.wrapU);\n texture.wrapT = resolveTextureWrap(sampler?.wrapV);\n texture.repeat.set(...(sampler?.repeat ?? [1, 1]));\n texture.offset.set(...(sampler?.offset ?? [0, 0]));\n texture.center.set(0.5, 0.5);\n texture.rotation = ((sampler?.rotationDeg ?? 0) * Math.PI) / 180;\n texture.anisotropy = sampler?.anisotropy ?? 1;\n texture.userData.iwsdkSceneProceduralTexture = {\n algorithm: descriptor.algorithm,\n channel,\n dataHash: generated.dataHash,\n height: generated.height,\n recipeHash: generated.recipeHash,\n width: generated.width,\n };\n texture.needsUpdate = true;\n return texture;\n}\n\nfunction collectSceneMaterialTextures(\n material: Material,\n textures: Set<Texture>,\n): void {\n const candidate = material as Material & Record<string, unknown>;\n for (const property of MATERIAL_TEXTURE_PROPERTIES) {\n const texture = candidate[property];\n if (texture instanceof Texture) {\n textures.add(texture);\n }\n }\n}\n\nfunction resolveTextureWrap(wrap: string | undefined) {\n switch (wrap) {\n case 'clamp':\n return ClampToEdgeWrapping;\n case 'mirror':\n return MirroredRepeatWrapping;\n default:\n return RepeatWrapping;\n }\n}\n\nfunction resolveMaterialSide(side: SceneMaterial['side']) {\n switch (side) {\n case 'back':\n return BackSide;\n case 'double':\n return DoubleSide;\n default:\n return FrontSide;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-scene-object.js","sources":["../../src/level/level-scene-object.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"level-scene-object.js","sources":["../../src/level/level-scene-object.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n deriveSceneInstanceNodeId,\n deriveScenePatternInstanceNamespace,\n deriveScenePatternNodeId,\n generateScenePatternTransforms,\n getSceneNodeCollisionRadius,\n MAX_SCENE_PATTERN_INSTANCES,\n resolveSceneAuthoringTransforms,\n resolveScenePrefabRoot,\n SceneAssetBoundsResolver,\n SceneAssetContent,\n type SceneDocument,\n SceneNode,\n SceneNodeFramingRole,\n ScenePrefabNodeOverride,\n SceneScale,\n SceneTransform,\n Sha256,\n Vec3,\n} from '@iwsdk/scene-composition';\nimport {\n InstancedMesh,\n Matrix4,\n Mesh,\n Object3D,\n Quaternion,\n Vector3,\n} from '../runtime/index.js';\nimport { disposeScenePrimitiveObject } from './level-scene-primitive.js';\n\nexport {\n deriveSceneInstanceNodeId,\n deriveScenePatternNodeId,\n generateScenePatternTransforms,\n MAX_SCENE_PATTERN_INSTANCES,\n} from '@iwsdk/scene-composition';\n\nexport type SceneAssetLoader = (assetId: string) => Promise<Object3D>;\n\nexport interface SceneObjectLoweringOptions {\n loadAsset?: SceneAssetLoader;\n resolveAssetBounds?: SceneAssetBoundsResolver;\n maxPatternInstances?: number;\n runtimeHash?: Sha256;\n useInstancing?: boolean;\n}\n\nexport interface SceneLoweredVirtualNode {\n id: string;\n instanceIndex: number;\n node: SceneNode;\n object: InstancedMesh;\n parentNodeId: string;\n sourceNodeId: string;\n}\n\nexport interface SceneLoweredNode {\n children: SceneLoweredNode[];\n id: string;\n node: SceneNode;\n object: Object3D;\n parentNodeId?: string;\n sourceNodeId: string;\n virtualNodes: SceneLoweredVirtualNode[];\n}\n\ninterface LoweringContext {\n createdObjects: Set<Object3D>;\n document: SceneDocument;\n expandedNodeCount: number;\n loadAsset?: SceneAssetLoader;\n maxPatternInstances: number;\n resolveAssetBounds?: SceneAssetBoundsResolver;\n runtimeHash?: Sha256;\n useInstancing: boolean;\n}\n\ninterface LowerNodeOptions {\n derived: boolean;\n framingRole?: SceneNodeFramingRole;\n namespace?: string;\n overrides?: Record<string, ScenePrefabNodeOverride>;\n overridesApplied?: boolean;\n parentNodeId?: string;\n prefixMatrix?: Matrix4;\n prefabStack: string[];\n}\n\n/** Lower one authored node, including prefab and pattern content, to Object3D. */\nexport async function lowerSceneNodeObject(\n document: SceneDocument,\n node: SceneNode,\n options: SceneObjectLoweringOptions = {},\n): Promise<SceneLoweredNode> {\n const resolvedDocument = resolveSceneDocumentForLowering(document);\n const resolvedNode =\n findSceneNode(resolvedDocument.nodes, node.id) ??\n resolveSceneNodeConstraints(document, node);\n const context = createLoweringContext(resolvedDocument, options);\n try {\n const lowered = await lowerNode(context, resolvedNode, {\n derived: false,\n prefabStack: [],\n });\n return lowered;\n } catch (error) {\n disposeSceneObjectResources(...context.createdObjects);\n throw error;\n }\n}\n\n/** Lower all top-level nodes while sharing one deterministic expansion budget. */\nexport async function lowerSceneDocumentObjects(\n document: SceneDocument,\n options: SceneObjectLoweringOptions = {},\n): Promise<SceneLoweredNode[]> {\n const resolvedDocument = resolveSceneDocumentForLowering(document);\n const context = createLoweringContext(resolvedDocument, options);\n const roots: SceneLoweredNode[] = [];\n try {\n for (const node of resolvedDocument.nodes) {\n roots.push(\n await lowerNode(context, node, { derived: false, prefabStack: [] }),\n );\n }\n return roots;\n } catch (error) {\n disposeSceneObjectResources(...context.createdObjects);\n throw error;\n }\n}\n\n/** Resolve document-scoped constraints exactly as the shared object lowerer does. */\nexport function resolveSceneDocumentForLowering(\n document: SceneDocument,\n): SceneDocument {\n return resolveSceneAuthoringTransforms(document);\n}\n\n/** Create only a node's direct render content, without its transform or children. */\nexport async function createSceneContentObject(\n document: SceneDocument,\n node: SceneNode,\n options: SceneObjectLoweringOptions = {},\n): Promise<Object3D> {\n const context = createLoweringContext(document, options);\n try {\n const object = await createDirectContentObject(context, node);\n return object;\n } catch (error) {\n throw error;\n }\n}\n\n/** Apply a scene transform to an Object3D using Three.js' XYZ Euler convention. */\nexport function applySceneTransform(\n object: Object3D,\n transform: SceneTransform | undefined,\n): void {\n if (transform?.position != null) {\n object.position.set(...transform.position);\n }\n if (transform?.rotationDeg != null) {\n object.rotation.set(\n degreesToRadians(transform.rotationDeg[0]),\n degreesToRadians(transform.rotationDeg[1]),\n degreesToRadians(transform.rotationDeg[2]),\n );\n }\n if (transform?.scale != null) {\n object.scale.set(...scaleToVec3(transform.scale));\n }\n object.updateMatrix();\n object.updateMatrixWorld(true);\n}\n\n/** Release lowering-owned instance state without disposing shared asset resources. */\nexport function disposeSceneObjectResources(...roots: Object3D[]): void {\n for (const root of roots) {\n root.traverse((object) => {\n const disposeAsset = object.userData.iwsdkDisposeAsset;\n if (typeof disposeAsset === 'function') {\n object.userData.iwsdkDisposeAsset = null;\n disposeAsset();\n }\n if (object instanceof InstancedMesh) {\n object.dispose();\n }\n disposeScenePrimitiveObject(object);\n });\n }\n}\n\n/** Dispose all resources owned by one or more returned lowering trees. */\nexport function disposeLoweredSceneNodes(...nodes: SceneLoweredNode[]): void {\n disposeSceneObjectResources(...nodes.map((node) => node.object));\n}\n\nfunction createLoweringContext(\n document: SceneDocument,\n options: SceneObjectLoweringOptions,\n): LoweringContext {\n return {\n createdObjects: new Set(),\n document,\n expandedNodeCount: 0,\n loadAsset: options.loadAsset,\n maxPatternInstances:\n options.maxPatternInstances ?? MAX_SCENE_PATTERN_INSTANCES,\n resolveAssetBounds: options.resolveAssetBounds,\n runtimeHash: options.runtimeHash,\n useInstancing: options.useInstancing ?? true,\n };\n}\n\nasync function lowerNode(\n context: LoweringContext,\n sourceNode: SceneNode,\n options: LowerNodeOptions,\n): Promise<SceneLoweredNode> {\n if (options.derived) {\n claimExpandedNodes(context, 1);\n }\n const id =\n options.namespace == null\n ? sourceNode.id\n : deriveSceneInstanceNodeId(options.namespace, sourceNode.id);\n const override = options.overrides?.[sourceNode.id];\n const node = options.overridesApplied\n ? applyDerivedNodeId(sourceNode, id)\n : applyPrefabOverride(sourceNode, id, override);\n const inheritedFramingRole = node.framingRole ?? options.framingRole;\n const object = await createDirectContentObject(context, node);\n context.createdObjects.add(object);\n object.name = node.name ?? id;\n object.visible = override?.visible ?? sceneNodeVisible(node);\n applyLoweredTransform(object, node.transform, options.prefixMatrix);\n markSceneObject(\n object,\n node,\n sourceNode.id,\n context.runtimeHash,\n inheritedFramingRole ?? 'content',\n );\n\n const lowered: SceneLoweredNode = {\n children: [],\n id,\n node,\n object,\n parentNodeId: options.parentNodeId,\n sourceNodeId: sourceNode.id,\n virtualNodes: [],\n };\n\n if (node.content?.type === 'instance') {\n const prefab = findRequiredPrefab(context.document, node.content.prefab);\n assertPrefabNotRecursive(options.prefabStack, prefab.id);\n const root = resolveScenePrefabRoot(\n context.document,\n prefab.root,\n node.content.overrides,\n );\n const child = await lowerNode(context, root, {\n derived: true,\n framingRole: inheritedFramingRole,\n namespace: id,\n overrides: node.content.overrides,\n overridesApplied: true,\n parentNodeId: id,\n prefabStack: [...options.prefabStack, prefab.id],\n });\n object.add(child.object);\n lowered.children.push(child);\n } else if (node.content?.type === 'pattern') {\n await lowerPatternContent(\n context,\n lowered,\n options.prefabStack,\n inheritedFramingRole,\n );\n }\n\n for (const childNode of sourceNode.children ?? []) {\n const child = await lowerNode(context, childNode, {\n derived: options.derived,\n framingRole: inheritedFramingRole,\n namespace: options.namespace,\n overrides: options.overrides,\n overridesApplied: options.overridesApplied,\n parentNodeId: id,\n prefabStack: options.prefabStack,\n });\n object.add(child.object);\n lowered.children.push(child);\n }\n return lowered;\n}\n\nasync function createDirectContentObject(\n context: LoweringContext,\n node: SceneNode,\n): Promise<Object3D> {\n const content = node.content;\n if (\n content == null ||\n content.type === 'group' ||\n content.type === 'instance' ||\n content.type === 'pattern'\n ) {\n return new Object3D();\n }\n return createAssetContentObject(context, content);\n}\n\nasync function createAssetContentObject(\n context: LoweringContext,\n content: SceneAssetContent,\n): Promise<Object3D> {\n if (context.loadAsset == null) {\n throw new Error(\n `Scene asset \"${content.asset}\" requires an asset registry`,\n );\n }\n const object = await context.loadAsset(content.asset);\n if (object == null || object.isObject3D !== true) {\n throw new Error(\n `Scene asset registry returned an invalid object for \"${content.asset}\"`,\n );\n }\n if (object.parent != null) {\n throw new Error(\n `Scene asset registry returned a parented object for \"${content.asset}\"`,\n );\n }\n object.traverse((child) => {\n if (child instanceof Mesh) {\n child.castShadow = content.castShadow ?? false;\n child.receiveShadow = content.receiveShadow ?? false;\n }\n });\n object.userData.iwsdkSceneAssetId = content.asset;\n return object;\n}\n\nasync function lowerPatternContent(\n context: LoweringContext,\n lowered: SceneLoweredNode,\n prefabStack: string[],\n framingRole: SceneNodeFramingRole | undefined,\n): Promise<void> {\n const content = lowered.node.content;\n if (content?.type !== 'pattern') {\n return;\n }\n const prefab = findRequiredPrefab(context.document, content.prefab);\n assertPrefabNotRecursive(prefabStack, prefab.id);\n const root = resolveScenePrefabRoot(\n context.document,\n prefab.root,\n content.overrides,\n );\n const collisionRadius = getSceneNodeCollisionRadius(context.document, root, {\n resolveAssetBounds: context.resolveAssetBounds,\n });\n const transforms = generateScenePatternTransforms(content.distribution, {\n collisionRadius,\n maxInstances: context.maxPatternInstances,\n seedKey: lowered.id,\n });\n const nextStack = [...prefabStack, prefab.id];\n\n if (context.useInstancing && isPrefabSafeToInstance(root)) {\n const template = await createDirectContentObject(context, root);\n if (template instanceof Mesh && template.children.length === 0) {\n claimExpandedNodes(context, transforms.length);\n const instances = new InstancedMesh(\n template.geometry,\n template.material,\n transforms.length,\n );\n instances.name = `${lowered.id}:instances`;\n instances.castShadow = template.castShadow;\n instances.receiveShadow = template.receiveShadow;\n instances.visible =\n content.overrides?.[root.id]?.visible ?? sceneNodeVisible(root);\n instances.userData.iwsdkSceneFramingRole =\n root.framingRole ?? framingRole ?? 'content';\n const localMatrix = sceneTransformMatrix(root.transform);\n const ids: string[] = [];\n for (let index = 0; index < transforms.length; index += 1) {\n const id = deriveScenePatternNodeId(lowered.id, index, root.id);\n const matrix = sceneTransformMatrix(transforms[index]).multiply(\n localMatrix,\n );\n instances.setMatrixAt(index, matrix);\n ids.push(id);\n lowered.virtualNodes.push({\n id,\n instanceIndex: index,\n node: { ...cloneJson(root), id },\n object: instances,\n parentNodeId: lowered.id,\n sourceNodeId: root.id,\n });\n }\n instances.instanceMatrix.needsUpdate = true;\n instances.userData.iwsdkSceneInstanceIds = ids;\n instances.userData.iwsdkSceneNodeId = lowered.id;\n instances.userData.iwsdkSceneRuntimeHash = context.runtimeHash;\n lowered.object.add(instances);\n return;\n }\n }\n\n for (let index = 0; index < transforms.length; index += 1) {\n const namespace = deriveScenePatternInstanceNamespace(lowered.id, index);\n const child = await lowerNode(context, root, {\n derived: true,\n framingRole,\n namespace,\n overrides: content.overrides,\n overridesApplied: true,\n parentNodeId: lowered.id,\n prefixMatrix: sceneTransformMatrix(transforms[index]),\n prefabStack: nextStack,\n });\n lowered.object.add(child.object);\n lowered.children.push(child);\n }\n}\n\nfunction applyPrefabOverride(\n source: SceneNode,\n id: string,\n override: ScenePrefabNodeOverride | undefined,\n): SceneNode {\n const node = cloneJson(source);\n node.id = id;\n if (override?.transform != null) {\n node.transform = { ...(node.transform ?? {}), ...override.transform };\n }\n if (override?.components != null) {\n node.components = {\n ...(node.components ?? {}),\n ...cloneJson(override.components),\n };\n }\n return node;\n}\n\nfunction applyDerivedNodeId(source: SceneNode, id: string): SceneNode {\n const node = cloneJson(source);\n node.id = id;\n return node;\n}\n\nfunction resolveSceneNodeConstraints(\n document: SceneDocument,\n root: SceneNode,\n): SceneNode {\n const scope: SceneDocument = {\n nodes: [root],\n resources: {},\n units: document.units,\n version: document.version,\n };\n return resolveSceneAuthoringTransforms(scope).nodes[0];\n}\n\nfunction findSceneNode(\n nodes: readonly SceneNode[],\n nodeId: string,\n): SceneNode | undefined {\n for (const node of nodes) {\n if (node.id === nodeId) {\n return node;\n }\n const child = findSceneNode(node.children ?? [], nodeId);\n if (child != null) {\n return child;\n }\n }\n return undefined;\n}\n\nfunction markSceneObject(\n object: Object3D,\n node: SceneNode,\n sourceNodeId: string,\n runtimeHash: Sha256 | undefined,\n framingRole: SceneNodeFramingRole,\n): void {\n const values = {\n iwsdkSceneContent: cloneJson(node.content),\n iwsdkSceneContentType: node.content?.type,\n iwsdkSceneFramingRole: framingRole,\n iwsdkSceneMetadata: cloneJson(node.metadata),\n iwsdkSceneNodeId: node.id,\n iwsdkSceneRuntimeHash: runtimeHash,\n iwsdkSceneSourceNodeId: sourceNodeId,\n };\n object.traverse((child) => Object.assign(child.userData, values));\n}\n\nfunction applyLoweredTransform(\n object: Object3D,\n transform: SceneTransform | undefined,\n prefixMatrix: Matrix4 | undefined,\n): void {\n if (prefixMatrix == null) {\n applySceneTransform(object, transform);\n return;\n }\n object.matrix.copy(prefixMatrix).multiply(sceneTransformMatrix(transform));\n object.matrix.decompose(object.position, object.quaternion, object.scale);\n object.matrixAutoUpdate = false;\n object.updateMatrixWorld(true);\n}\n\nfunction sceneTransformMatrix(transform: SceneTransform | undefined): Matrix4 {\n const position = new Vector3(...(transform?.position ?? [0, 0, 0]));\n const rotation = transform?.rotationDeg ?? [0, 0, 0];\n const quaternion = new Quaternion().setFromEuler(\n new Object3D().rotation.set(\n degreesToRadians(rotation[0]),\n degreesToRadians(rotation[1]),\n degreesToRadians(rotation[2]),\n ),\n );\n const scale = new Vector3(...scaleToVec3(transform?.scale));\n return new Matrix4().compose(position, quaternion, scale);\n}\n\nfunction isPrefabSafeToInstance(root: SceneNode): boolean {\n return (\n root.content?.type === 'asset' &&\n (root.children?.length ?? 0) === 0 &&\n (root.components == null || Object.keys(root.components).length === 0) &&\n root.constraints == null\n );\n}\n\nfunction findRequiredPrefab(document: SceneDocument, prefabId: string) {\n const prefab = document.resources.prefabs?.find(\n (entry) => entry.id === prefabId,\n );\n if (prefab == null) {\n throw new Error(`Scene references unknown prefab \"${prefabId}\"`);\n }\n return prefab;\n}\n\nfunction assertPrefabNotRecursive(stack: string[], prefabId: string): void {\n if (stack.includes(prefabId)) {\n throw new Error(\n `Recursive scene prefab expansion: ${[...stack, prefabId].join(' -> ')}`,\n );\n }\n}\n\nfunction claimExpandedNodes(context: LoweringContext, count: number): void {\n context.expandedNodeCount += count;\n if (context.expandedNodeCount > context.maxPatternInstances) {\n throw new Error(\n `Scene derived-node expansion exceeds the limit of ${context.maxPatternInstances}`,\n );\n }\n}\n\nfunction scaleToVec3(scale: SceneScale | undefined): Vec3 {\n if (scale == null) {\n return [1, 1, 1];\n }\n return typeof scale === 'number' ? [scale, scale, scale] : scale;\n}\n\nfunction sceneNodeVisible(node: SceneNode): boolean {\n if (typeof node.visible === 'boolean') {\n return node.visible;\n }\n const legacy =\n node.components?.Visibility ??\n node.components?.['com.iwsdk.components.Visibility'];\n return legacy?.isVisible !== false;\n}\n\nfunction degreesToRadians(degrees: number): number {\n return (degrees * Math.PI) / 180;\n}\n\nfunction cloneJson<T>(value: T): T {\n if (value === undefined) {\n return value;\n }\n return JSON.parse(JSON.stringify(value)) as T;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-scene-primitive.js","sources":["../../src/level/level-scene-primitive.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"level-scene-primitive.js","sources":["../../src/level/level-scene-primitive.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n DEFAULT_SCENE_PRIMITIVE_SEGMENTS,\n type SceneGeometry,\n type SceneMaterial,\n type Vec2,\n type Vec3,\n} from '@iwsdk/scene-composition';\nimport { RoundedBoxGeometry } from 'three/examples/jsm/geometries/RoundedBoxGeometry.js';\nimport {\n BoxGeometry,\n BufferGeometry,\n CapsuleGeometry,\n CatmullRomCurve3,\n ConeGeometry,\n CylinderGeometry,\n ExtrudeGeometry,\n LatheGeometry,\n Material,\n Mesh,\n Object3D,\n Path,\n PlaneGeometry,\n Shape,\n SphereGeometry,\n TorusGeometry,\n TubeGeometry,\n Vector2,\n Vector3,\n} from '../runtime/index.js';\nimport {\n createSceneMaterial,\n disposeStandaloneSceneMaterial,\n} from './level-scene-material.js';\n\nexport { createSceneMaterial } from './level-scene-material.js';\n\ntype ExtendedSceneGeometry =\n | Exclude<SceneGeometry, { type: 'extrude' }>\n | (Extract<SceneGeometry, { type: 'extrude' }> & { holes?: Vec2[][] })\n | {\n type: 'roundedBox';\n size: Vec3;\n radius: number;\n segments?: number;\n }\n | {\n type: 'lathe';\n profile: Vec2[];\n segments?: number;\n phiStartDeg?: number;\n phiLengthDeg?: number;\n }\n | {\n type: 'torus';\n radius: number;\n tube: number;\n radialSegments?: number;\n tubularSegments?: number;\n arcDeg?: number;\n };\n\nexport interface SceneProceduralMeshDescriptor {\n geometry: SceneGeometry;\n castShadow?: boolean;\n receiveShadow?: boolean;\n}\n\n/** Build a Three.js geometry from a scene geometry recipe. */\nexport function createSceneGeometry(geometry: SceneGeometry): BufferGeometry {\n const descriptor = geometry as ExtendedSceneGeometry;\n switch (descriptor.type) {\n case 'box':\n return new BoxGeometry(...descriptor.size);\n case 'roundedBox':\n return new RoundedBoxGeometry(\n descriptor.size[0],\n descriptor.size[1],\n descriptor.size[2],\n descriptor.segments ?? 4,\n descriptor.radius,\n );\n case 'sphere': {\n const segments = descriptor.segments ?? DEFAULT_SCENE_PRIMITIVE_SEGMENTS;\n return new SphereGeometry(\n descriptor.radius,\n segments,\n Math.max(3, Math.floor(segments / 2)),\n );\n }\n case 'cylinder': {\n const radiusTop =\n 'radius' in descriptor ? descriptor.radius : descriptor.radiusTop;\n const radiusBottom =\n 'radius' in descriptor ? descriptor.radius : descriptor.radiusBottom;\n return new CylinderGeometry(\n radiusTop,\n radiusBottom,\n descriptor.height,\n descriptor.segments ?? DEFAULT_SCENE_PRIMITIVE_SEGMENTS,\n );\n }\n case 'cone':\n return new ConeGeometry(\n descriptor.radius,\n descriptor.height,\n descriptor.segments ?? DEFAULT_SCENE_PRIMITIVE_SEGMENTS,\n );\n case 'plane':\n return new PlaneGeometry(...descriptor.size);\n case 'capsule':\n return new CapsuleGeometry(\n descriptor.radius,\n descriptor.length,\n descriptor.capSegments ?? 4,\n descriptor.radialSegments ?? 8,\n );\n case 'extrude': {\n const shape = createShape(descriptor.points);\n for (const hole of descriptor.holes ?? []) {\n shape.holes.push(createPath(hole));\n }\n const bevel = descriptor.bevel;\n const result = new ExtrudeGeometry(shape, {\n bevelEnabled: bevel?.enabled ?? false,\n bevelSegments: bevel?.segments ?? 1,\n bevelSize: bevel?.size ?? 0,\n bevelThickness: bevel?.thickness ?? 0,\n depth: descriptor.depth,\n });\n result.translate(0, 0, -descriptor.depth / 2);\n return result;\n }\n case 'tube': {\n const curve = new CatmullRomCurve3(\n descriptor.points.map((point) => new Vector3(...point)),\n descriptor.closed ?? false,\n );\n return new TubeGeometry(\n curve,\n descriptor.tubularSegments ?? 64,\n descriptor.radius,\n descriptor.radialSegments ?? 8,\n descriptor.closed ?? false,\n );\n }\n case 'lathe': {\n const geometry = new LatheGeometry(\n descriptor.profile.map((point) => new Vector2(...point)),\n descriptor.segments ?? DEFAULT_SCENE_PRIMITIVE_SEGMENTS,\n degreesToRadians(descriptor.phiStartDeg ?? 0),\n degreesToRadians(descriptor.phiLengthDeg ?? 360),\n );\n if (Math.abs((descriptor.phiLengthDeg ?? 360) - 360) < 1e-9) {\n averageLatheSeamNormals(\n geometry,\n descriptor.profile.length,\n descriptor.segments ?? DEFAULT_SCENE_PRIMITIVE_SEGMENTS,\n );\n }\n return geometry;\n }\n case 'torus':\n return new TorusGeometry(\n descriptor.radius,\n descriptor.tube,\n descriptor.radialSegments ?? 12,\n descriptor.tubularSegments ?? 48,\n degreesToRadians(descriptor.arcDeg ?? 360),\n );\n default:\n throw new Error(\n `Unsupported scene geometry type \"${String(\n (descriptor as { type?: unknown }).type,\n )}\"`,\n );\n }\n}\n\n/** Create a renderable Three.js mesh from a scene primitive descriptor. */\nexport function createScenePrimitiveObject(\n primitive: SceneProceduralMeshDescriptor,\n material: SceneMaterial | Material,\n): Mesh {\n const suppliedRuntimeMaterial = material instanceof Material;\n const geometrySpec = primitive.geometry;\n const resolvedMaterial = resolveMaterialArgument(material);\n const object = new Mesh(createSceneGeometry(geometrySpec), resolvedMaterial);\n object.castShadow = primitive.castShadow ?? false;\n object.receiveShadow = primitive.receiveShadow ?? false;\n object.userData.iwsdkSceneGeometry = cloneJson(geometrySpec);\n object.userData.iwsdkScenePrimitive = cloneJson(primitive);\n object.userData.iwsdkOwnsPrimitiveGeometry = true;\n object.userData.iwsdkOwnsPrimitiveMaterial = !suppliedRuntimeMaterial;\n object.userData.iwsdkOwnsPrimitiveResources = true;\n return object;\n}\n\n/** Dispose only the resources owned directly by a scene primitive mesh. */\nexport function disposeScenePrimitiveObject(object: Object3D): void {\n if (object.userData.iwsdkOwnsPrimitiveResources !== true) {\n return;\n }\n const primitiveMesh = object as Mesh;\n primitiveMesh.geometry?.dispose();\n const materials: Material[] = Array.isArray(primitiveMesh.material)\n ? primitiveMesh.material\n : primitiveMesh.material\n ? [primitiveMesh.material]\n : [];\n if (object.userData.iwsdkOwnsPrimitiveMaterial === true) {\n for (const material of new Set(materials)) {\n disposeStandaloneSceneMaterial(material);\n }\n }\n delete object.userData.iwsdkOwnsPrimitiveGeometry;\n delete object.userData.iwsdkOwnsPrimitiveMaterial;\n delete object.userData.iwsdkOwnsPrimitiveResources;\n}\n\nfunction createShape(points: Vec2[]): Shape {\n const shape = new Shape();\n appendPathPoints(shape, points);\n return shape;\n}\n\nfunction createPath(points: Vec2[]): Path {\n const path = new Path();\n appendPathPoints(path, points);\n return path;\n}\n\nfunction appendPathPoints(path: Path, points: Vec2[]): void {\n const first = points[0];\n if (first == null) {\n return;\n }\n path.moveTo(first[0], first[1]);\n for (let index = 1; index < points.length; index += 1) {\n path.lineTo(points[index][0], points[index][1]);\n }\n path.closePath();\n}\n\nfunction resolveMaterialArgument(\n material: SceneMaterial | Material | undefined,\n): Material {\n if (material == null) {\n throw new Error('A scene primitive requires a resolved material resource');\n }\n return material instanceof Material\n ? material\n : createSceneMaterial(material);\n}\n\nfunction averageLatheSeamNormals(\n geometry: LatheGeometry,\n profilePointCount: number,\n radialSegments: number,\n): void {\n const normal = geometry.getAttribute('normal');\n if (normal == null) {\n return;\n }\n for (let point = 0; point < profilePointCount; point += 1) {\n const first = point;\n const last = radialSegments * profilePointCount + point;\n const averaged = new Vector3(\n normal.getX(first) + normal.getX(last),\n normal.getY(first) + normal.getY(last),\n normal.getZ(first) + normal.getZ(last),\n ).normalize();\n normal.setXYZ(first, averaged.x, averaged.y, averaged.z);\n normal.setXYZ(last, averaged.x, averaged.y, averaged.z);\n }\n normal.needsUpdate = true;\n}\n\nfunction degreesToRadians(degrees: number): number {\n return (degrees * Math.PI) / 180;\n}\n\nfunction cloneJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value)) as T;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-system.js","sources":["../../src/level/level-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"level-system.js","sources":["../../src/level/level-system.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type {\n SceneDocument,\n ScenePerspectiveView,\n} from '@iwsdk/scene-composition';\nimport { signal } from '@preact/signals-core';\nimport type { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport type { World } from '../ecs/world.js';\nimport { Vector3 } from '../runtime/index.js';\nimport { applyScenePlayerRig } from './level-player-rig.js';\nimport { LevelRoot } from './level-root.js';\nimport {\n applySceneEnvironment,\n captureSceneEnvironment,\n restoreSceneEnvironment,\n type SceneEnvironmentState,\n} from './level-scene-environment.js';\nimport {\n activateScenePlayerAttachments,\n createSceneEntityReferenceResolver,\n SceneJSONImporter,\n type SceneJSONLoadResult,\n} from './level-scene-json-importer.js';\nimport { disposeSceneObjectResources } from './level-scene-object.js';\nimport { LevelTag } from './level-tag.js';\n\n/**\n * Manages the active level root, enforces identity transforms, and atomically loads levels.\n *\n * @remarks\n * - Stages replacement content invisibly and destroys the prior level only after a successful load.\n * - Rejects failed loads while keeping the prior level active.\n * - Loads native scene JSON documents or native scene JSON URLs.\n * @category Scene\n */\nexport class LevelSystem extends createSystem({\n // All entities that belong to a level (will be destroyed on level change)\n levelEntities: { required: [LevelTag] },\n}) {\n private loading = false;\n /** Renderer state that predates the currently committed level. */\n private activeEnvironmentBase: SceneEnvironmentState | undefined;\n\n init(): void {\n // Ensure there is always an active level signal and a root entity\n if (!this.world.activeLevel || !this.world.activeLevel.value) {\n const root = this.world.createTransformEntity(undefined, {\n parent: this.world.sceneEntity,\n });\n root.object3D!.name = 'LevelRoot';\n root.addComponent(LevelRoot);\n if (!this.world.activeLevel) {\n // @ts-ignore initialize the signal if missing\n this.world.activeLevel = signal(root);\n } else {\n this.world.activeLevel.value = root;\n }\n }\n }\n\n update(): void {\n // Enforce identity transform on the level root every frame\n const root = this.world.activeLevel!.value!;\n const obj = root.object3D!;\n if (\n obj.position.x !== 0 ||\n obj.position.y !== 0 ||\n obj.position.z !== 0 ||\n obj.scale.x !== 1 ||\n obj.scale.y !== 1 ||\n obj.scale.z !== 1 ||\n obj.rotation.x !== 0 ||\n obj.rotation.y !== 0 ||\n obj.rotation.z !== 0\n ) {\n obj.position.set(0, 0, 0);\n obj.rotation.set(0, 0, 0);\n obj.scale.set(1, 1, 1);\n obj.updateMatrixWorld(true);\n }\n\n // Check if a new level is requested\n if (this.loading) {\n return;\n }\n const pendingUrl = this.world.requestedLevelUrl;\n const pendingDocument = this.world.requestedLevelDocument;\n if (pendingUrl === undefined && pendingDocument === undefined) {\n return;\n }\n this.startLevelChange(pendingUrl ?? '', pendingDocument);\n }\n\n private startLevelChange(\n url: string,\n document = this.world.requestedLevelDocument,\n ): void {\n this.loading = true;\n const resolveLoad = this.world._resolveLevelLoad;\n const rejectLoad = this.world._rejectLevelLoad;\n this.world._resolveLevelLoad = undefined;\n this.world._rejectLevelLoad = undefined;\n // Unset request now to avoid re-entry during async flow\n this.world.requestedLevelUrl = undefined;\n this.world.requestedLevelDocument = undefined;\n const previousRoot = this.world.activeLevel!.value!;\n const previousLevelId = this.world.activeLevelId;\n const previousEntities = new Set(this.queries.levelEntities.entities);\n const nextLevelId = url || 'level:default';\n const environmentAtLoadStart = captureSceneEnvironment(\n this.world.scene,\n this.world.renderer,\n );\n\n // Stage the replacement under the scene root without exposing it as active.\n this.world.activeLevelId = nextLevelId;\n const newRoot: Entity = this.world.createTransformEntity(undefined, {\n parent: this.world.sceneEntity,\n });\n newRoot.object3D!.name = 'LevelRoot';\n newRoot.object3D!.visible = false;\n newRoot.addComponent(LevelRoot);\n\n const doLoad =\n document != null\n ? SceneJSONImporter.loadDocument(this.world, document, newRoot)\n : url\n ? SceneJSONImporter.load(this.world, url, newRoot)\n : Promise.resolve();\n void doLoad\n .then((loadResult) => {\n const nativeResult = asNativeSceneLoadResult(loadResult);\n // Prepare the next authored environment against the stable pre-level\n // baseline. The apply is transactional and retires the active level's\n // generated resources only after the replacement is ready.\n const nextEnvironmentBase =\n this.activeEnvironmentBase ?? environmentAtLoadStart;\n applySceneEnvironment(\n this.world.scene,\n this.world.renderer,\n nativeResult?.document.environment,\n nextEnvironmentBase,\n );\n if (nativeResult != null) {\n newRoot.object3D!.userData.iwsdkSceneResources = cloneJson(\n nativeResult.document.resources,\n );\n }\n\n applyScenePlayerRig(this.world, nativeResult?.document.player, {\n resolveEntityReference:\n nativeResult == null\n ? undefined\n : createSceneEntityReferenceResolver(\n this.world,\n newRoot,\n nativeResult.nodes,\n ),\n });\n\n disposeLevelEntities(previousEntities);\n activateScenePlayerAttachments(nativeResult);\n newRoot.object3D!.visible = true;\n this.world.activeLevelId = nextLevelId;\n this.world.activeLevel!.value = newRoot;\n if (nativeResult != null) {\n applySceneHeroCamera(this.world, nativeResult.document);\n }\n this.activeEnvironmentBase = nextEnvironmentBase;\n\n this.loading = false;\n resolveLoad?.();\n })\n .catch((error) => {\n const stagedEntities = new Set<Entity>([newRoot]);\n for (const entity of this.queries.levelEntities.entities) {\n if (!previousEntities.has(entity)) {\n stagedEntities.add(entity);\n }\n }\n disposeLevelEntities(stagedEntities);\n restoreSceneEnvironment(\n this.world.scene,\n this.world.renderer,\n environmentAtLoadStart,\n );\n this.world.activeLevelId = previousLevelId;\n this.world.activeLevel!.value = previousRoot;\n console.error('[LevelSystem] Failed to load level', error);\n this.loading = false;\n rejectLoad?.(error);\n });\n }\n}\n\n/** Apply a composed scene's authored hero view to the non-immersive camera. */\nexport function applySceneHeroCamera(\n world: World,\n document: SceneDocument,\n): boolean {\n if (world.renderer.xr?.isPresenting === true) {\n return false;\n }\n const heroViewId = document.authoring?.composition?.review.heroView;\n const view = document.authoring?.views?.find(\n (candidate): candidate is ScenePerspectiveView =>\n candidate.id === heroViewId && candidate.projection === 'perspective',\n );\n if (view == null) {\n return false;\n }\n\n const cameraPosition = new Vector3(...view.position);\n if (world.camera.parent != null) {\n world.camera.parent.updateWorldMatrix(true, false);\n world.camera.parent.worldToLocal(cameraPosition);\n }\n world.camera.position.copy(cameraPosition);\n world.camera.lookAt(...view.target);\n if ('fov' in world.camera) {\n world.camera.fov = view.fov;\n }\n world.camera.updateProjectionMatrix();\n world.camera.userData.iwsdkSceneHeroView = cloneJson(view);\n return true;\n}\n\nfunction disposeLevelEntities(entities: Iterable<Entity>): void {\n const uniqueEntities = [...new Set(entities)];\n disposeSceneObjectResources(\n ...uniqueEntities.flatMap((entity) =>\n entity.object3D == null ? [] : [entity.object3D],\n ),\n );\n for (const entity of uniqueEntities) {\n try {\n entity.destroy();\n } catch {}\n }\n}\n\nfunction asNativeSceneLoadResult(\n value: SceneJSONLoadResult | void,\n): SceneJSONLoadResult | undefined {\n return value != null && 'document' in value ? value : undefined;\n}\n\nfunction cloneJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value)) as T;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-tag.js","sources":["../../src/level/level-tag.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"level-tag.js","sources":["../../src/level/level-tag.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Types, createComponent } from '../ecs/component.js';\n/**\n * Tags entities as belonging to the active level.\n *\n * @remarks\n * - The {@link LevelSystem} destroys all entities with this tag when switching levels.\n * - Entities created via {@link World.createTransformEntity} are automatically tagged,\n * unless created as persistent.\n *\n * @category Scene\n * @hideineditor\n */\nexport const LevelTag = createComponent(\n 'LevelTag',\n {\n id: { type: Types.String, default: '' }, // Optional identifier for the current level instance\n },\n 'Marker component for level membership',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;AAUG;AACI,MAAM,QAAQ,GAAG,eAAe,CACrC,UAAU,EACV;AACE,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;CACxC,EACD,uCAAuC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-binding.js","sources":["../../src/lighting/light-binding.ts"],"sourcesContent":[null],"names":["ThreeAmbientLight","ThreeHemisphereLight","ThreeDirectionalLight","ThreePointLight","ThreeSpotLight","ThreeRectAreaLight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"light-binding.js","sources":["../../src/lighting/light-binding.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js';\nimport {\n AmbientLight as ThreeAmbientLight,\n Color,\n DirectionalLight as ThreeDirectionalLight,\n HemisphereLight as ThreeHemisphereLight,\n Light,\n Matrix4,\n Object3D,\n PointLight as ThreePointLight,\n Quaternion,\n RectAreaLight as ThreeRectAreaLight,\n SRGBColorSpace,\n SpotLight as ThreeSpotLight,\n Vector3,\n} from '../runtime/index.js';\n\nexport type LightColor = readonly [number, number, number, number];\n\nexport interface LightShadowSpec {\n castShadow: boolean;\n shadowBias: number;\n shadowCameraFar: number;\n shadowCameraNear: number;\n shadowMapSize: number;\n shadowNormalBias: number;\n shadowRadius: number;\n}\n\nexport type LightSpec =\n | { kind: 'ambient'; color: LightColor; intensity: number }\n | {\n kind: 'hemisphere';\n groundColor: LightColor;\n intensity: number;\n skyColor: LightColor;\n }\n | ({\n kind: 'directional';\n color: LightColor;\n intensity: number;\n shadowCameraSize: number;\n } & LightShadowSpec)\n | ({\n kind: 'point';\n color: LightColor;\n decay: number;\n distance: number;\n intensity: number;\n } & LightShadowSpec)\n | ({\n kind: 'spot';\n angleDeg: number;\n color: LightColor;\n decay: number;\n distance: number;\n intensity: number;\n penumbra: number;\n } & LightShadowSpec)\n | {\n kind: 'rect-area';\n color: LightColor;\n height: number;\n intensity: number;\n width: number;\n };\n\nconst LOCAL_FORWARD = new Vector3(0, 0, -1);\nconst WORLD_UP = new Vector3(0, 1, 0);\nconst UNIT_SCALE = new Vector3(1, 1, 1);\nlet rectAreaUniformsInitialized = false;\n\nfunction initializeRectAreaUniforms(): void {\n if (rectAreaUniformsInitialized) {\n return;\n }\n RectAreaLightUniformsLib.init();\n rectAreaUniformsInitialized = true;\n}\n\nfunction applyColor(target: Color, value: LightColor): void {\n target.setRGB(value[0], value[1], value[2], SRGBColorSpace);\n}\n\nfunction degreesToRadians(value: number): number {\n return (value * Math.PI) / 180;\n}\n\nfunction createLight(spec: LightSpec): Light {\n switch (spec.kind) {\n case 'ambient':\n return new ThreeAmbientLight();\n case 'hemisphere':\n return new ThreeHemisphereLight();\n case 'directional':\n return new ThreeDirectionalLight();\n case 'point':\n return new ThreePointLight();\n case 'spot':\n return new ThreeSpotLight();\n case 'rect-area':\n initializeRectAreaUniforms();\n return new ThreeRectAreaLight();\n }\n}\n\ntype ShadowLight = ThreeDirectionalLight | ThreePointLight | ThreeSpotLight;\n\nfunction applyShadow(light: ShadowLight, spec: LightShadowSpec): void {\n const shadow = light.shadow;\n const mapSizeChanged =\n shadow.mapSize.width !== spec.shadowMapSize ||\n shadow.mapSize.height !== spec.shadowMapSize;\n if (mapSizeChanged && (shadow.map != null || shadow.mapPass != null)) {\n shadow.dispose();\n shadow.map = null;\n shadow.mapPass = null;\n }\n if (light.castShadow && !spec.castShadow) {\n shadow.dispose();\n shadow.map = null;\n shadow.mapPass = null;\n }\n light.castShadow = spec.castShadow;\n shadow.mapSize.set(spec.shadowMapSize, spec.shadowMapSize);\n shadow.bias = spec.shadowBias;\n shadow.normalBias = spec.shadowNormalBias;\n shadow.radius = spec.shadowRadius;\n shadow.camera.near = spec.shadowCameraNear;\n shadow.camera.far = spec.shadowCameraFar;\n shadow.camera.updateProjectionMatrix();\n shadow.needsUpdate = true;\n}\n\n/**\n * Owns one Three.js light and keeps runtime and managed-editor materialization identical.\n */\nexport class LightBinding {\n readonly light: Light;\n readonly target: Object3D | undefined;\n\n private readonly desiredWorldMatrix = new Matrix4();\n private readonly inverseParentMatrix = new Matrix4();\n private readonly localMatrix = new Matrix4();\n private readonly worldPosition = new Vector3();\n private readonly worldQuaternion = new Quaternion();\n private readonly worldDirection = new Vector3();\n private disposed = false;\n private specSignature = '';\n\n constructor(\n readonly parent: Object3D,\n readonly targetRoot: Object3D,\n spec: LightSpec,\n ) {\n this.light = createLight(spec);\n this.light.name = `${spec.kind}-light`;\n this.light.matrixAutoUpdate = false;\n this.light.userData.iwsdkLightComponent = spec.kind;\n copySceneIdentity(parent, this.light);\n parent.add(this.light);\n\n if (spec.kind === 'directional' || spec.kind === 'spot') {\n const target = new Object3D();\n target.name = `${spec.kind}-light-target`;\n target.userData.iwsdkLightTarget = true;\n target.userData.iwsdkRuntimeOnly = true;\n copySceneIdentity(parent, target);\n targetRoot.add(target);\n this.target = target;\n (this.light as ThreeDirectionalLight | ThreeSpotLight).target = target;\n }\n\n this.update(spec);\n this.syncTransform();\n }\n\n update(spec: LightSpec): void {\n this.assertActive();\n if (this.light.userData.iwsdkLightComponent !== spec.kind) {\n throw new Error('A LightBinding cannot change light kind');\n }\n const signature = JSON.stringify(spec);\n if (signature === this.specSignature) {\n return;\n }\n this.specSignature = signature;\n switch (spec.kind) {\n case 'ambient': {\n const light = this.light as ThreeAmbientLight;\n applyColor(light.color, spec.color);\n light.intensity = spec.intensity;\n break;\n }\n case 'hemisphere': {\n const light = this.light as ThreeHemisphereLight;\n applyColor(light.color, spec.skyColor);\n applyColor(light.groundColor, spec.groundColor);\n light.intensity = spec.intensity;\n break;\n }\n case 'directional': {\n const light = this.light as ThreeDirectionalLight;\n applyColor(light.color, spec.color);\n light.intensity = spec.intensity;\n applyShadow(light, spec);\n const halfSize = spec.shadowCameraSize / 2;\n light.shadow.camera.left = -halfSize;\n light.shadow.camera.right = halfSize;\n light.shadow.camera.top = halfSize;\n light.shadow.camera.bottom = -halfSize;\n light.shadow.camera.updateProjectionMatrix();\n break;\n }\n case 'point': {\n const light = this.light as ThreePointLight;\n applyColor(light.color, spec.color);\n light.decay = spec.decay;\n light.distance = spec.distance;\n light.intensity = spec.intensity;\n applyShadow(light, spec);\n break;\n }\n case 'spot': {\n const light = this.light as ThreeSpotLight;\n light.angle = degreesToRadians(spec.angleDeg);\n applyColor(light.color, spec.color);\n light.decay = spec.decay;\n light.distance = spec.distance;\n light.intensity = spec.intensity;\n light.penumbra = spec.penumbra;\n applyShadow(light, spec);\n break;\n }\n case 'rect-area': {\n const light = this.light as ThreeRectAreaLight;\n applyColor(light.color, spec.color);\n light.height = spec.height;\n light.intensity = spec.intensity;\n light.width = spec.width;\n break;\n }\n }\n }\n\n /** Synchronize position and rotation while deliberately removing inherited scale. */\n syncTransform(): void {\n this.assertActive();\n this.parent.updateWorldMatrix(true, false);\n if (this.light.userData.iwsdkLightComponent === 'hemisphere') {\n this.worldPosition.copy(WORLD_UP);\n this.worldQuaternion.identity();\n } else {\n this.parent.getWorldPosition(this.worldPosition);\n this.parent.getWorldQuaternion(this.worldQuaternion);\n }\n this.desiredWorldMatrix.compose(\n this.worldPosition,\n this.worldQuaternion,\n UNIT_SCALE,\n );\n this.inverseParentMatrix.copy(this.parent.matrixWorld).invert();\n this.localMatrix.multiplyMatrices(\n this.inverseParentMatrix,\n this.desiredWorldMatrix,\n );\n this.light.matrix.copy(this.localMatrix);\n this.light.matrixWorld.copy(this.desiredWorldMatrix);\n\n if (this.target != null) {\n this.worldDirection\n .copy(LOCAL_FORWARD)\n .applyQuaternion(this.worldQuaternion);\n this.target.position.copy(this.worldPosition).add(this.worldDirection);\n if (this.target.parent !== this.targetRoot) {\n this.targetRoot.add(this.target);\n }\n this.target.updateMatrixWorld(true);\n }\n }\n\n dispose(): void {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n this.light.removeFromParent();\n this.target?.removeFromParent();\n this.light.dispose();\n }\n\n private assertActive(): void {\n if (this.disposed) {\n throw new Error('Cannot update a disposed LightBinding');\n }\n }\n}\n\nfunction copySceneIdentity(source: Object3D, target: Object3D): void {\n for (const key of [\n 'iwsdkSceneDocumentUrl',\n 'iwsdkSceneFramingRole',\n 'iwsdkSceneNodeId',\n 'iwsdkSceneRuntimeHash',\n 'iwsdkSceneSourceNodeId',\n ]) {\n if (source.userData[key] !== undefined) {\n target.userData[key] = source.userData[key];\n }\n }\n}\n"],"names":["ThreeAmbientLight","ThreeHemisphereLight","ThreeDirectionalLight","ThreePointLight","ThreeSpotLight","ThreeRectAreaLight"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-components.js","sources":["../../src/lighting/light-components.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"light-components.js","sources":["../../src/lighting/light-components.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Types, createComponent } from '../ecs/component.js';\n\ntype FieldPresentation = {\n description?: string;\n help?: string;\n label?: string;\n step?: number;\n widget?: 'slider' | 'color' | 'vector' | 'text' | 'select';\n};\n\nconst color = (defaultValue: [number, number, number, number], label: string) =>\n ({\n default: defaultValue,\n label,\n type: Types.Color,\n widget: 'color',\n }) as const satisfies {\n default: [number, number, number, number];\n type: Types.Color;\n } & FieldPresentation;\n\nconst number = (\n defaultValue: number,\n label: string,\n options: FieldPresentation & { max?: number; min?: number } = {},\n) =>\n ({\n default: defaultValue,\n label,\n type: Types.Float32,\n ...options,\n }) as const satisfies {\n default: number;\n max?: number;\n min?: number;\n type: Types.Float32;\n } & FieldPresentation;\n\nconst castShadow = {\n default: false,\n label: 'Cast shadow',\n type: Types.Boolean,\n} as const satisfies {\n default: boolean;\n type: Types.Boolean;\n} & FieldPresentation;\n\nexport const LightShadowMapSize = {\n Size256: '256',\n Size512: '512',\n Size1024: '1024',\n Size2048: '2048',\n} as const;\n\nconst shadowMapSize = {\n default: LightShadowMapSize.Size1024,\n enum: LightShadowMapSize,\n help: 'Square shadow texture resolution. Higher values cost more GPU memory and fill rate.',\n label: 'Shadow resolution',\n type: Types.Enum,\n} as const;\n\nconst shadowBias = number(0, 'Shadow bias', { step: 0.0001 });\nconst shadowNormalBias = number(0, 'Shadow normal bias', {\n min: 0,\n step: 0.001,\n});\nconst shadowRadius = number(1, 'Shadow radius', { min: 0, step: 0.1 });\nconst shadowCameraNear = number(0.1, 'Shadow near', {\n min: 0.001,\n step: 0.1,\n});\nconst shadowCameraFar = number(100, 'Shadow far', {\n min: 0.001,\n step: 1,\n});\n\nconst directLightFields = {\n castShadow,\n shadowBias,\n shadowCameraFar,\n shadowCameraNear,\n shadowMapSize,\n shadowNormalBias,\n shadowRadius,\n};\n\nconst WHITE: [number, number, number, number] = [1, 1, 1, 1];\n\n/** Uniform, non-directional illumination. Transform has no effect. */\nexport const AmbientLightComponent = createComponent(\n 'AmbientLight',\n {\n color: color(WHITE, 'Color'),\n intensity: number(1, 'Intensity', { min: 0, step: 0.1 }),\n },\n 'Uniform ambient light',\n);\n\n/** World-up sky and ground illumination. Transform has no effect. */\nexport const HemisphereLightComponent = createComponent(\n 'HemisphereLight',\n {\n groundColor: color([0.1, 0.1, 0.1, 1], 'Ground color'),\n intensity: number(1, 'Intensity', { min: 0, step: 0.1 }),\n skyColor: color(WHITE, 'Sky color'),\n },\n 'World-up sky and ground light',\n);\n\n/** Parallel light emitted along the entity's local -Z axis. */\nexport const DirectionalLightComponent = createComponent(\n 'DirectionalLight',\n {\n color: color(WHITE, 'Color'),\n intensity: number(1, 'Intensity', { min: 0, step: 0.1 }),\n ...directLightFields,\n shadowCameraSize: number(10, 'Shadow camera size', {\n help: 'Width and height in meters of the orthographic shadow volume.',\n min: 0.001,\n step: 0.5,\n }),\n },\n 'Parallel light aimed along local -Z',\n);\n\n/** Omnidirectional positional light. Intensity is measured in candela. */\nexport const PointLightComponent = createComponent(\n 'PointLight',\n {\n color: color(WHITE, 'Color'),\n decay: number(2, 'Decay', {\n help: 'Use 2 for physically correct inverse-square falloff.',\n min: 0,\n step: 0.1,\n }),\n distance: number(0, 'Distance', {\n help: 'Maximum range in meters. Zero means no cutoff.',\n min: 0,\n step: 0.1,\n }),\n intensity: number(1, 'Intensity (cd)', { min: 0, step: 1 }),\n ...directLightFields,\n },\n 'Omnidirectional positional light',\n);\n\n/** Cone light emitted along the entity's local -Z axis. */\nexport const SpotLightComponent = createComponent(\n 'SpotLight',\n {\n angleDeg: number(60, 'Cone angle', {\n help: 'Half-angle of the light cone in degrees.',\n max: 90,\n min: 0.1,\n step: 1,\n }),\n color: color(WHITE, 'Color'),\n decay: number(2, 'Decay', {\n help: 'Use 2 for physically correct inverse-square falloff.',\n min: 0,\n step: 0.1,\n }),\n distance: number(0, 'Distance', {\n help: 'Maximum range in meters. Zero means no cutoff.',\n min: 0,\n step: 0.1,\n }),\n intensity: number(1, 'Intensity (cd)', { min: 0, step: 1 }),\n penumbra: number(0, 'Penumbra', {\n max: 1,\n min: 0,\n step: 0.05,\n widget: 'slider',\n }),\n ...directLightFields,\n },\n 'Cone light aimed along local -Z',\n);\n\n/** PBR area light emitted from a rectangle along the entity's local -Z axis. */\nexport const RectAreaLightComponent = createComponent(\n 'RectAreaLight',\n {\n color: color(WHITE, 'Color'),\n height: number(1, 'Height', { min: 0.001, step: 0.1 }),\n intensity: number(1, 'Intensity (nit)', { min: 0, step: 1 }),\n width: number(1, 'Width', { min: 0.001, step: 0.1 }),\n },\n 'PBR rectangular area light aimed along local -Z',\n);\n\nexport const IWSDK_LIGHT_COMPONENTS = [\n AmbientLightComponent,\n HemisphereLightComponent,\n DirectionalLightComponent,\n PointLightComponent,\n SpotLightComponent,\n RectAreaLightComponent,\n] as const;\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-system.js","sources":["../../src/lighting/light-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"light-system.js","sources":["../../src/lighting/light-system.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type { AnyComponent } from '../ecs/component.js';\nimport type { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport {\n LightBinding,\n type LightColor,\n type LightSpec,\n} from './light-binding.js';\nimport {\n AmbientLightComponent,\n DirectionalLightComponent,\n HemisphereLightComponent,\n PointLightComponent,\n RectAreaLightComponent,\n SpotLightComponent,\n} from './light-components.js';\n\nconst COMPONENTS = [\n AmbientLightComponent,\n HemisphereLightComponent,\n DirectionalLightComponent,\n PointLightComponent,\n SpotLightComponent,\n RectAreaLightComponent,\n] as const;\n\ntype ComponentId = (typeof COMPONENTS)[number]['id'];\n\nexport class LightSystem extends createSystem({\n ambientLights: { required: [AmbientLightComponent] },\n directionalLights: { required: [DirectionalLightComponent] },\n hemisphereLights: { required: [HemisphereLightComponent] },\n pointLights: { required: [PointLightComponent] },\n rectAreaLights: { required: [RectAreaLightComponent] },\n spotLights: { required: [SpotLightComponent] },\n}) {\n private readonly bindings = new Map<Entity, Map<ComponentId, LightBinding>>();\n\n init(): void {\n const entries = [\n [this.queries.ambientLights, AmbientLightComponent],\n [this.queries.hemisphereLights, HemisphereLightComponent],\n [this.queries.directionalLights, DirectionalLightComponent],\n [this.queries.pointLights, PointLightComponent],\n [this.queries.spotLights, SpotLightComponent],\n [this.queries.rectAreaLights, RectAreaLightComponent],\n ] as const;\n for (const [query, component] of entries) {\n this.cleanupFuncs.push(\n query.subscribe(\n 'qualify',\n (entity) => this.attach(entity as Entity, component),\n true,\n ),\n query.subscribe('disqualify', (entity) =>\n this.detach(entity as Entity, component.id as ComponentId),\n ),\n );\n }\n }\n\n update(): void {\n for (const [entity, byComponent] of this.bindings) {\n for (const component of COMPONENTS) {\n const binding = byComponent.get(component.id as ComponentId);\n if (binding == null) {\n continue;\n }\n binding.update(readLightSpec(entity, component));\n binding.syncTransform();\n }\n }\n }\n\n destroy(): void {\n for (const byComponent of this.bindings.values()) {\n for (const binding of byComponent.values()) {\n binding.dispose();\n }\n }\n this.bindings.clear();\n super.destroy();\n }\n\n private attach(entity: Entity, component: AnyComponent): void {\n if (entity.object3D == null) {\n return;\n }\n let byComponent = this.bindings.get(entity);\n if (byComponent == null) {\n byComponent = new Map();\n this.bindings.set(entity, byComponent);\n }\n const componentId = component.id as ComponentId;\n if (byComponent.has(componentId)) {\n return;\n }\n byComponent.set(\n componentId,\n new LightBinding(\n entity.object3D,\n this.world.scene,\n readLightSpec(entity, component),\n ),\n );\n }\n\n private detach(entity: Entity, componentId: ComponentId): void {\n const byComponent = this.bindings.get(entity);\n const binding = byComponent?.get(componentId);\n binding?.dispose();\n byComponent?.delete(componentId);\n if (byComponent?.size === 0) {\n this.bindings.delete(entity);\n }\n }\n}\n\nfunction readColor(\n entity: Entity,\n component: AnyComponent,\n field: string,\n): LightColor {\n return (entity as any).getVectorView(component, field) as LightColor;\n}\n\nfunction readNumber(\n entity: Entity,\n component: AnyComponent,\n field: string,\n): number {\n return Number(entity.getValue(component, field));\n}\n\nfunction readShadow(entity: Entity, component: AnyComponent) {\n return {\n castShadow: Boolean(entity.getValue(component, 'castShadow')),\n shadowBias: readNumber(entity, component, 'shadowBias'),\n shadowCameraFar: readNumber(entity, component, 'shadowCameraFar'),\n shadowCameraNear: readNumber(entity, component, 'shadowCameraNear'),\n shadowMapSize: readNumber(entity, component, 'shadowMapSize'),\n shadowNormalBias: readNumber(entity, component, 'shadowNormalBias'),\n shadowRadius: readNumber(entity, component, 'shadowRadius'),\n };\n}\n\nexport function readLightSpec(\n entity: Entity,\n component: AnyComponent,\n): LightSpec {\n switch (component.id) {\n case 'AmbientLight':\n return {\n color: readColor(entity, component, 'color'),\n intensity: readNumber(entity, component, 'intensity'),\n kind: 'ambient',\n };\n case 'HemisphereLight':\n return {\n groundColor: readColor(entity, component, 'groundColor'),\n intensity: readNumber(entity, component, 'intensity'),\n kind: 'hemisphere',\n skyColor: readColor(entity, component, 'skyColor'),\n };\n case 'DirectionalLight':\n return {\n color: readColor(entity, component, 'color'),\n intensity: readNumber(entity, component, 'intensity'),\n kind: 'directional',\n shadowCameraSize: readNumber(entity, component, 'shadowCameraSize'),\n ...readShadow(entity, component),\n };\n case 'PointLight':\n return {\n color: readColor(entity, component, 'color'),\n decay: readNumber(entity, component, 'decay'),\n distance: readNumber(entity, component, 'distance'),\n intensity: readNumber(entity, component, 'intensity'),\n kind: 'point',\n ...readShadow(entity, component),\n };\n case 'SpotLight':\n return {\n angleDeg: readNumber(entity, component, 'angleDeg'),\n color: readColor(entity, component, 'color'),\n decay: readNumber(entity, component, 'decay'),\n distance: readNumber(entity, component, 'distance'),\n intensity: readNumber(entity, component, 'intensity'),\n kind: 'spot',\n penumbra: readNumber(entity, component, 'penumbra'),\n ...readShadow(entity, component),\n };\n case 'RectAreaLight':\n return {\n color: readColor(entity, component, 'color'),\n height: readNumber(entity, component, 'height'),\n intensity: readNumber(entity, component, 'intensity'),\n kind: 'rect-area',\n width: readNumber(entity, component, 'width'),\n };\n default:\n throw new Error(`Unsupported light component \"${component.id}\"`);\n }\n}\n\n/** Convert one serialized component payload to the shared light specification. */\nexport function lightSpecFromComponentValue(\n componentName: string,\n value: unknown,\n): LightSpec | undefined {\n const componentId = componentName.startsWith('com.iwsdk.components.')\n ? componentName.slice('com.iwsdk.components.'.length)\n : componentName;\n const component = COMPONENTS.find((entry) => entry.id === componentId);\n if (component == null) {\n return undefined;\n }\n const payload =\n value != null && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n const field = (name: string) =>\n payload[name] ??\n (component.schema as Record<string, { default?: unknown }>)[name]?.default;\n const numeric = (name: string) => Number(field(name));\n const color = (name: string) => field(name) as LightColor;\n const shadow = () => ({\n castShadow: Boolean(field('castShadow')),\n shadowBias: numeric('shadowBias'),\n shadowCameraFar: numeric('shadowCameraFar'),\n shadowCameraNear: numeric('shadowCameraNear'),\n shadowMapSize: numeric('shadowMapSize'),\n shadowNormalBias: numeric('shadowNormalBias'),\n shadowRadius: numeric('shadowRadius'),\n });\n switch (componentId) {\n case 'AmbientLight':\n return {\n color: color('color'),\n intensity: numeric('intensity'),\n kind: 'ambient',\n };\n case 'HemisphereLight':\n return {\n groundColor: color('groundColor'),\n intensity: numeric('intensity'),\n kind: 'hemisphere',\n skyColor: color('skyColor'),\n };\n case 'DirectionalLight':\n return {\n color: color('color'),\n intensity: numeric('intensity'),\n kind: 'directional',\n shadowCameraSize: numeric('shadowCameraSize'),\n ...shadow(),\n };\n case 'PointLight':\n return {\n color: color('color'),\n decay: numeric('decay'),\n distance: numeric('distance'),\n intensity: numeric('intensity'),\n kind: 'point',\n ...shadow(),\n };\n case 'SpotLight':\n return {\n angleDeg: numeric('angleDeg'),\n color: color('color'),\n decay: numeric('decay'),\n distance: numeric('distance'),\n intensity: numeric('intensity'),\n kind: 'spot',\n penumbra: numeric('penumbra'),\n ...shadow(),\n };\n case 'RectAreaLight':\n return {\n color: color('color'),\n height: numeric('height'),\n intensity: numeric('intensity'),\n kind: 'rect-area',\n width: numeric('width'),\n };\n }\n return undefined;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beveled-cylinder.js","sources":["../../../src/locomotion/geometries/beveled-cylinder.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"beveled-cylinder.js","sources":["../../../src/locomotion/geometries/beveled-cylinder.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { mergeGeometries } from 'three/examples/jsm/utils/BufferGeometryUtils.js';\nimport {\n BufferGeometry,\n CircleGeometry,\n LatheGeometry,\n MathUtils,\n Vector2,\n} from '../../runtime/three.js';\n\nclass BeveledCylinderGeometry extends BufferGeometry {\n constructor(\n radiusTop = 1,\n radiusBottom = 1,\n height = 2,\n bevelSegments = 4,\n bevelSize = 1,\n radialSegments = 32,\n heightSegments = 1,\n openEnded = false,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n const halfHeight = height / 2;\n const profilePoints = [];\n\n const deltaAngle = Math.atan2(radiusBottom - radiusTop, height);\n\n for (let i = 0; i <= bevelSegments; i++) {\n const t = i / bevelSegments;\n const angle = -Math.PI / 2 + t * (Math.PI / 2 + deltaAngle);\n const x = radiusBottom - bevelSize + bevelSize * Math.cos(angle);\n const y = -halfHeight + bevelSize + bevelSize * Math.sin(angle);\n profilePoints.push(new Vector2(x, y));\n }\n\n for (let i = 1; i < heightSegments; i++) {\n const t = i / heightSegments;\n const y =\n -halfHeight +\n bevelSize +\n t * (halfHeight - bevelSize - (-halfHeight + bevelSize));\n // Linear interpolation between bottom and top radii.\n const r = MathUtils.lerp(radiusBottom, radiusTop, t);\n profilePoints.push(new Vector2(r, y));\n }\n\n for (let i = 0; i <= bevelSegments; i++) {\n const t = i / bevelSegments;\n const angle = deltaAngle + t * (Math.PI / 2); // from 0° to 90°\n const x = radiusTop - bevelSize + bevelSize * Math.cos(angle);\n const y = halfHeight - bevelSize + bevelSize * Math.sin(angle);\n profilePoints.push(new Vector2(x, y));\n }\n\n // --- Create the lathe geometry by revolving the profile ---\n const latheGeo = new LatheGeometry(\n profilePoints,\n radialSegments,\n thetaStart,\n thetaLength,\n );\n\n // --- If the geometry should have end caps, add them ---\n if (!openEnded) {\n // Top cap: a flat circle. The effective radius is reduced by bevelSize.\n const topCap = new CircleGeometry(\n radiusTop - bevelSize,\n radialSegments,\n thetaStart,\n thetaLength,\n );\n topCap.rotateX(-Math.PI / 2);\n topCap.translate(0, halfHeight, 0);\n\n // Bottom cap.\n const bottomCap = new CircleGeometry(\n radiusBottom - bevelSize,\n radialSegments,\n thetaStart,\n thetaLength,\n );\n bottomCap.rotateX(Math.PI / 2);\n bottomCap.translate(0, -halfHeight, 0);\n\n // Merge the lathe geometry and the caps.\n const merged = mergeGeometries([latheGeo, topCap, bottomCap]);\n this.copy(merged);\n } else {\n this.copy(latheGeo);\n }\n\n this.computeVertexNormals();\n }\n}\n\nexport { BeveledCylinderGeometry };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locomotion-environment.js","sources":["../../src/locomotion/locomotion-environment.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"locomotion-environment.js","sources":["../../src/locomotion/locomotion-environment.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { EnvironmentType } from '@iwsdk/locomotor';\nimport { Types, createComponent } from '../ecs/component.js';\n\n/** Marks an entity's Object3D hierarchy as walkable locomotion geometry. */\nexport const LocomotionEnvironment = createComponent(\n 'LocomotionEnvironment',\n {\n type: {\n type: Types.Enum,\n enum: EnvironmentType,\n default: EnvironmentType.STATIC,\n },\n _envHandle: { type: Types.Float32, default: 0 },\n _initialized: { type: Types.Boolean, default: false },\n },\n 'Locomotion environment component that holds the environment mesh group',\n);\n"],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAKH;AACO,MAAM,qBAAqB,GAAG,eAAe,CAClD,uBAAuB,EACvB;AACE,IAAA,IAAI,EAAE;QACJ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,eAAe,CAAC,MAAM;AAChC,KAAA;IACD,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;IAC/C,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CACtD,EACD,wEAAwE;;;;"}
|