@iwsdk/core 1.0.0-rc.0 → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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.js.map +1 -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.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.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/gaze/gaze-system.d.ts +207 -0
- package/dist/gaze/gaze-system.d.ts.map +1 -0
- package/dist/gaze/gaze-system.js +168 -0
- package/dist/gaze/gaze-system.js.map +1 -0
- package/dist/gaze/index.d.ts +8 -0
- package/dist/gaze/index.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-helpers.d.ts +7 -6
- package/dist/grab/grab-helpers.d.ts.map +1 -1
- package/dist/grab/grab-helpers.js +12 -7
- package/dist/grab/grab-helpers.js.map +1 -1
- package/dist/grab/grab-system.d.ts.map +1 -1
- package/dist/grab/grab-system.js +2 -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 +10 -1
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +29 -6
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/index.js.map +1 -1
- 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.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.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/player-camera.js.map +1 -1
- package/dist/init/session-grant.js.map +1 -1
- package/dist/init/world-initializer.d.ts +49 -0
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +23 -11
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +14 -0
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +19 -0
- package/dist/init/xr.js.map +1 -1
- 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 +3 -0
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +72 -6
- package/dist/input/input-system.js.map +1 -1
- package/dist/input/state-tags.d.ts.map +1 -1
- package/dist/input/state-tags.js +2 -0
- 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.js.map +1 -1
- package/dist/layers/xr-layer-init.js.map +1 -1
- package/dist/layers/xr-layer-state.js.map +1 -1
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/layers/xr-layer-transform.js.map +1 -1
- package/dist/layers/xr-quad-layer.js.map +1 -1
- 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.js.map +1 -1
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/scene-tools.js.map +1 -1
- package/dist/mcp/ui-debug-tools.js.map +1 -1
- package/dist/physics/physics-runtime.js.map +1 -1
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physics-transport.js.map +1 -1
- package/dist/physics/physics-worker-protocol.js.map +1 -1
- package/dist/physics/physics-worker-utils.js.map +1 -1
- package/dist/physics/physics-worker.js.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/project/normalize.js +11 -0
- package/dist/project/normalize.js.map +1 -1
- package/dist/project/paths.js.map +1 -1
- package/dist/project/types.d.ts +32 -2
- package/dist/project/types.d.ts.map +1 -1
- package/dist/project/types.js.map +1 -1
- package/dist/project/validation.d.ts.map +1 -1
- package/dist/project/validation.js +65 -1
- 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.js.map +1 -1
- package/dist/schemas/iwsdk-project.v1.schema.json +45 -3
- 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.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.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 +4 -4
|
@@ -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":";;AAAA;;;;;AAKG;AAYH,MAAM,KAAK,GAAG,CAAC,YAA8C,EAAE,KAAa,MACzE;AACC,IAAA,OAAO,EAAE,YAAY;IACrB,KAAK;IACL,IAAI,EAAE,KAAK,CAAC,KAAK;AACjB,IAAA,MAAM,EAAE,OAAO;AAChB,CAAA,CAGoB;AAEvB,MAAM,MAAM,GAAG,CACb,YAAoB,EACpB,KAAa,EACb,OAAA,GAA8D,EAAE,MAE/D;AACC,IAAA,OAAO,EAAE,YAAY;IACrB,KAAK;IACL,IAAI,EAAE,KAAK,CAAC,OAAO;AACnB,IAAA,GAAG,OAAO;AACX,CAAA,CAKoB;AAEvB,MAAM,UAAU,GAAG;AACjB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,KAAK,CAAC,OAAO;CAIA;AAEd,MAAM,kBAAkB,GAAG;AAChC,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,MAAM;;AAGlB,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,kBAAkB,CAAC,QAAQ;AACpC,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,qFAAqF;AAC3F,IAAA,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;CACR;AAEV,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,EAAE,oBAAoB,EAAE;AACvD,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,IAAI,EAAE,KAAK;AACZ,CAAA,CAAC;AACF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACtE,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE;AAClD,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,GAAG;AACV,CAAA,CAAC;AACF,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE;AAChD,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE,CAAC;AACR,CAAA,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,UAAU;IACV,UAAU;IACV,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,YAAY;CACb;AAED,MAAM,KAAK,GAAqC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE5D;AACO,MAAM,qBAAqB,GAAG,eAAe,CAClD,cAAc,EACd;AACE,IAAA,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5B,IAAA,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;CACzD,EACD,uBAAuB;AAGzB;AACO,MAAM,wBAAwB,GAAG,eAAe,CACrD,iBAAiB,EACjB;AACE,IAAA,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC;AACtD,IAAA,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACxD,IAAA,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC;CACpC,EACD,+BAA+B;AAGjC;AACO,MAAM,yBAAyB,GAAG,eAAe,CACtD,kBAAkB,EAClB;AACE,IAAA,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5B,IAAA,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACxD,IAAA,GAAG,iBAAiB;AACpB,IAAA,gBAAgB,EAAE,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE;AACjD,QAAA,IAAI,EAAE,+DAA+D;AACrE,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,GAAG;KACV,CAAC;CACH,EACD,qCAAqC;AAGvC;AACO,MAAM,mBAAmB,GAAG,eAAe,CAChD,YAAY,EACZ;AACE,IAAA,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5B,IAAA,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE;AACxB,QAAA,IAAI,EAAE,sDAAsD;AAC5D,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,GAAG;KACV,CAAC;AACF,IAAA,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE;AAC9B,QAAA,IAAI,EAAE,gDAAgD;AACtD,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,GAAG;KACV,CAAC;AACF,IAAA,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC3D,IAAA,GAAG,iBAAiB;CACrB,EACD,kCAAkC;AAGpC;AACO,MAAM,kBAAkB,GAAG,eAAe,CAC/C,WAAW,EACX;AACE,IAAA,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE;AACjC,QAAA,IAAI,EAAE,0CAA0C;AAChD,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,IAAI,EAAE,CAAC;KACR,CAAC;AACF,IAAA,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5B,IAAA,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE;AACxB,QAAA,IAAI,EAAE,sDAAsD;AAC5D,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,GAAG;KACV,CAAC;AACF,IAAA,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE;AAC9B,QAAA,IAAI,EAAE,gDAAgD;AACtD,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,GAAG;KACV,CAAC;AACF,IAAA,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC3D,IAAA,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE;AAC9B,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,MAAM,EAAE,QAAQ;KACjB,CAAC;AACF,IAAA,GAAG,iBAAiB;CACrB,EACD,iCAAiC;AAGnC;AACO,MAAM,sBAAsB,GAAG,eAAe,CACnD,eAAe,EACf;AACE,IAAA,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5B,IAAA,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACtD,IAAA,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,iBAAiB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC5D,IAAA,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;CACrD,EACD,iDAAiD;AAG5C,MAAM,sBAAsB,GAAG;IACpC,qBAAqB;IACrB,wBAAwB;IACxB,yBAAyB;IACzB,mBAAmB;IACnB,kBAAkB;IAClB,sBAAsB;;;;;"}
|
|
@@ -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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locomotion-input-provider.js","sources":["../../src/locomotion/locomotion-input-provider.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"locomotion-input-provider.js","sources":["../../src/locomotion/locomotion-input-provider.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 { World } from '../ecs/world.js';\nimport { InputActions } from '../input/input-actions.js';\nimport { Quaternion, Vector2, Vector3 } from '../runtime/index.js';\n\nconst TURN_THRESHOLD = 0.8;\n\nexport type BrowserLocomotionControls =\n | boolean\n | {\n keyboard?: boolean;\n gamepad?: boolean;\n /** Reserved for a future pointer-lock camera adapter. */\n pointerLock?: false;\n };\n\n/**\n * Converts low-level input actions into locomotion intent.\n *\n * Locomotion should not care whether input came from XR controllers, keyboard,\n * browser gamepads, or an app-authored adapter. This provider is the narrow\n * bridge between generic actions and the existing locomotor systems.\n */\nexport class ActionLocomotionInputProvider {\n constructor(private readonly world: World) {}\n\n enableBrowserControls(options: BrowserLocomotionControls): void {\n if (!options) {\n return;\n }\n\n const bindingOptions =\n typeof options === 'object'\n ? {\n keyboard: options.keyboard,\n gamepad: options.gamepad,\n }\n : undefined;\n\n this.world.input.actions.enableDefaultBindings(\n 'browser-first-person',\n bindingOptions,\n );\n }\n\n getMoveAxis(out: Vector2): Vector2 {\n const value = this.world.input.actions.getAxis2D(\n InputActions.LocomotionMove,\n );\n return out.set(value.x, value.y);\n }\n\n getMovementReferenceQuaternion(out: Quaternion): Quaternion {\n if (this.world.session) {\n this.world.player.head.getWorldQuaternion(out);\n } else {\n this.world.camera.getWorldQuaternion(out);\n }\n return out;\n }\n\n getJumpDown(): boolean {\n return this.world.input.actions.getButtonDown(InputActions.LocomotionJump);\n }\n\n getTurnAxis(): number {\n return this.world.input.actions.getAxis1D(InputActions.LocomotionTurn);\n }\n\n getTurnLeftDown(microGestureControlsEnabled: boolean): boolean {\n if (this.isHandMicroGestureMode(microGestureControlsEnabled)) {\n return this.world.input.xr.gamepads.right?.getButtonDownByIdx(5) ?? false;\n }\n\n return this.world.input.actions.getAxis1DEnteringNegative(\n InputActions.LocomotionTurn,\n TURN_THRESHOLD,\n );\n }\n\n getTurnRightDown(microGestureControlsEnabled: boolean): boolean {\n if (this.isHandMicroGestureMode(microGestureControlsEnabled)) {\n return this.world.input.xr.gamepads.right?.getButtonDownByIdx(6) ?? false;\n }\n\n return this.world.input.actions.getAxis1DEnteringPositive(\n InputActions.LocomotionTurn,\n TURN_THRESHOLD,\n );\n }\n\n shouldShowTurnSignals(microGestureControlsEnabled: boolean): boolean {\n return this.isHandMicroGestureMode(microGestureControlsEnabled);\n }\n\n getTeleportActive(\n pointerBusy: boolean,\n microGestureControlsEnabled: boolean,\n ): boolean {\n if (pointerBusy) {\n return false;\n }\n\n if (this.world.input.xr.isPrimary('hand', 'right')) {\n return (\n microGestureControlsEnabled &&\n !(this.world.input.xr.gamepads.right?.getButtonDownByIdx(9) ?? false)\n );\n }\n\n return this.world.input.actions.getButtonPressed(\n InputActions.LocomotionTeleportAim,\n );\n }\n\n getTeleportCommit(microGestureControlsEnabled: boolean): boolean {\n if (this.world.input.xr.isPrimary('hand', 'right')) {\n return (\n microGestureControlsEnabled &&\n (this.world.input.xr.gamepads.right?.getButtonDownByIdx(9) ?? false)\n );\n }\n\n return this.world.input.actions.getButtonUp(\n InputActions.LocomotionTeleportAim,\n );\n }\n\n getTeleportRay(origin: Vector3, direction: Vector3): boolean {\n if (!this.world.session) {\n return false;\n }\n\n this.world.player.raySpaces.right.getWorldPosition(origin);\n this.world.player.raySpaces.right.getWorldDirection(direction);\n return true;\n }\n\n private isHandMicroGestureMode(\n microGestureControlsEnabled: boolean,\n ): boolean {\n return (\n microGestureControlsEnabled &&\n this.world.input.xr.isPrimary('hand', 'right')\n );\n }\n}\n\nexport function getRequiredInputProvider(\n systemName: string,\n value: unknown,\n): ActionLocomotionInputProvider {\n if (value instanceof ActionLocomotionInputProvider) {\n return value;\n }\n\n throw new Error(\n `${systemName} must be registered through LocomotionSystem so locomotion subsystems share one input provider.`,\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locomotion.js","sources":["../../src/locomotion/locomotion.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locomotion.js","sources":["../../src/locomotion/locomotion.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 { Locomotor, LocomotorConfig } from '@iwsdk/locomotor';\nimport { Types } from '../ecs/component.js';\nimport { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport { Vector3 } from '../runtime/index.js';\nimport { LocomotionEnvironment } from './locomotion-environment.js';\nimport {\n ActionLocomotionInputProvider,\n type BrowserLocomotionControls,\n} from './locomotion-input-provider.js';\nimport { SlideSystem } from './slide.js';\nimport { TeleportSystem } from './teleport.js';\nimport { TurnSystem, TurningMethod } from './turn.js';\n\nexport { LocomotionEnvironment } from './locomotion-environment.js';\n\n/**\n * Physics‑driven locomotion (slide, teleport, turn) backed by the {@link @iwsdk/locomotor!Locomotor} engine.\n *\n * @remarks\n * - Enable this system via {@link WorldOptions.features.enableLocomotion}.\n * - Add {@link LocomotionEnvironment} to level meshes to make them walkable.\n * - For moving platforms, use `EnvironmentType.KINEMATIC` and keep transforms updated.\n * - In hand‑tracking mode, micro‑gesture controls can toggle turn/teleport using swipe gestures.\n *\n * @category Locomotion\n * @example\n * ```ts\n * world.registerSystem(LocomotionSystem, {\n * configData: { turningAngle: 45, slidingSpeed: 4.5 }\n * });\n * ```\n */\nexport class LocomotionSystem extends createSystem(\n {\n envs: { required: [LocomotionEnvironment] },\n },\n {\n /** Starting player position before the first update. */\n initialPlayerPosition: { type: Types.Vec3, default: [0, 0, 0] },\n /** Run the locomotion engine in a WebWorker for better main‑thread perf. */\n useWorker: { type: Types.Boolean, default: true },\n /** Comfort vignette strength forwarded to SlideSystem. */\n comfortAssist: { type: Types.Float32, default: 0.5 },\n /** Maximum sliding speed (m/s). */\n slidingSpeed: { type: Types.Float32, default: 5 },\n /** Turning mode: snap vs smooth. */\n turningMethod: { type: Types.Int8, default: TurningMethod.SnapTurn },\n /** Degrees per snap turn. */\n turningAngle: { type: Types.Float32, default: 45 },\n /** Degrees per second for smooth turning. */\n turningSpeed: { type: Types.Float32, default: 180 },\n /** Parabolic ray gravity for teleport guide (negative). */\n rayGravity: { type: Types.Float32, default: -0.4 },\n /** Max drop allowed when projecting the player onto walkable surfaces. */\n maxDropDistance: { type: Types.Float32, default: 5.0 },\n /** Jump apex height in meters. */\n jumpHeight: { type: Types.Float32, default: 1.5 },\n /** Minimum seconds between jumps. */\n jumpCooldown: { type: Types.Float32, default: 0.1 },\n /** Whether jumping is enabled. */\n enableJumping: { type: Types.Boolean, default: true },\n /** Optional browser bindings for action-backed first-person locomotion. */\n browserControls: { type: Types.Object, default: false },\n },\n) {\n private locomotor!: Locomotor;\n private inputProvider!: ActionLocomotionInputProvider;\n\n private teleportSystem?: TeleportSystem;\n private slideSystem?: SlideSystem;\n private turnSystem!: TurnSystem;\n private microGestureControlsEnabled = false;\n private requestedPlayerPosition?: Vector3;\n\n /** Place the locomotion origin at an authored virtual-environment position. */\n setPlayerPosition(position: Vector3): void {\n this.requestedPlayerPosition ??= new Vector3();\n this.requestedPlayerPosition.copy(position);\n this.config.initialPlayerPosition.value = position.toArray();\n this.player.position.copy(position);\n if (this.locomotor?.isInitialized()) {\n this.locomotor.teleport(position);\n }\n }\n\n init() {\n // Apply the configured starting position synchronously. Native scene\n // loading captures the current player transform as its restoration\n // baseline, while the locomotor finishes initializing asynchronously.\n this.player.position.fromArray(\n this.config.initialPlayerPosition.value as number[],\n );\n this.cleanupFuncs.push(\n this.world.onAuthoredPlayerPosition((position) => {\n this.setPlayerPosition(position);\n }),\n );\n this.inputProvider = new ActionLocomotionInputProvider(this.world);\n this.inputProvider.enableBrowserControls(\n this.config.browserControls.value as BrowserLocomotionControls,\n );\n\n this.world.registerSystem(TurnSystem, {\n configData: {\n turningMethod: this.config.turningMethod.value,\n turningAngle: this.config.turningAngle.value,\n turningSpeed: this.config.turningSpeed.value,\n microGestureControlsEnabled: false,\n inputProvider: this.inputProvider,\n },\n });\n this.turnSystem = this.world.getSystem(TurnSystem)!;\n this.initLocomotor().then(() => {\n this.cleanupFuncs.push(\n this.config.rayGravity.subscribe((value) => {\n this.locomotor.updateConfig({ rayGravity: value });\n if (this.teleportSystem) {\n this.teleportSystem.config.rayGravity.value = value;\n }\n }),\n this.config.slidingSpeed.subscribe((value) => {\n if (this.slideSystem) {\n this.slideSystem.config.maxSpeed.value = value;\n }\n }),\n this.config.comfortAssist.subscribe((value) => {\n if (this.slideSystem) {\n this.slideSystem.config.comfortAssist.value = value;\n }\n }),\n this.config.turningMethod.subscribe((value) => {\n this.turnSystem.config.turningMethod.value = value;\n }),\n this.config.turningAngle.subscribe((value) => {\n this.turnSystem.config.turningAngle.value = value;\n }),\n this.config.turningSpeed.subscribe((value) => {\n this.turnSystem.config.turningSpeed.value = value;\n }),\n this.config.maxDropDistance.subscribe((value) => {\n this.locomotor.updateConfig({ maxDropDistance: value });\n }),\n this.config.jumpHeight.subscribe((value) => {\n this.locomotor.updateConfig({ jumpHeight: value });\n }),\n this.config.jumpCooldown.subscribe((value) => {\n this.locomotor.updateConfig({ jumpCooldown: value });\n }),\n this.config.enableJumping.subscribe((value) => {\n if (this.slideSystem) {\n this.slideSystem.config.enableJumping.value = value;\n }\n }),\n );\n });\n\n // Register the env query subscriptions on cleanupFuncs (the config\n // subscriptions above are already registered) so they're released when the\n // LocomotionSystem is torn down.\n this.cleanupFuncs.push(\n this.queries.envs.subscribe('qualify', (entity) => {\n this.addEnvironmentToEngine(entity);\n }),\n this.queries.envs.subscribe('disqualify', (entity) => {\n this.removeEnvironmentFromEngine(entity);\n }),\n );\n }\n\n private async initLocomotor(): Promise<void> {\n // Create Locomotor with configuration\n const locomotorConfig: LocomotorConfig = {\n initialPlayerPosition:\n this.requestedPlayerPosition?.clone() ??\n new Vector3().fromArray(\n this.config.initialPlayerPosition.value as number[],\n ),\n rayGravity: this.config.rayGravity.value as number,\n maxDropDistance: this.config.maxDropDistance.value as number,\n jumpHeight: this.config.jumpHeight.value as number,\n jumpCooldown: this.config.jumpCooldown.value as number,\n useWorker: this.config.useWorker.value as boolean,\n };\n\n this.locomotor = new Locomotor(locomotorConfig);\n await this.locomotor.initialize();\n if (this.requestedPlayerPosition != null) {\n this.locomotor.teleport(this.requestedPlayerPosition);\n this.player.position.copy(this.requestedPlayerPosition);\n }\n\n // Register subsystems with locomotor\n this.world.registerSystem(TeleportSystem, {\n configData: {\n rayGravity: this.config.rayGravity.value,\n locomotor: this.locomotor,\n inputProvider: this.inputProvider,\n microGestureControlsEnabled: false,\n },\n });\n this.world.registerSystem(SlideSystem, {\n configData: {\n maxSpeed: this.config.slidingSpeed.value,\n comfortAssist: this.config.comfortAssist.value,\n enableJumping: this.config.enableJumping.value,\n locomotor: this.locomotor,\n inputProvider: this.inputProvider,\n },\n });\n\n this.teleportSystem = this.world.getSystem(TeleportSystem);\n this.slideSystem = this.world.getSystem(SlideSystem);\n\n // Add any existing environments to the engine\n for (const entity of this.queries.envs.entities) {\n this.addEnvironmentToEngine(entity);\n }\n }\n\n private addEnvironmentToEngine(entity: Entity): void {\n if (!this.locomotor?.isInitialized()) {\n return;\n }\n if (entity.getValue(LocomotionEnvironment, '_initialized')) {\n return; // Already initialized\n }\n\n const envGroup = entity.object3D;\n if (!envGroup?.isObject3D) {\n return;\n }\n\n const envType = entity.getValue(LocomotionEnvironment, 'type');\n\n if (envType !== null) {\n try {\n // Add environment through Locomotor - returns handle\n const envHandle = this.locomotor.addEnvironment(envGroup, envType);\n\n // Store the generated handle for tracking\n entity.setValue(LocomotionEnvironment, '_envHandle', envHandle);\n entity.setValue(LocomotionEnvironment, '_initialized', true);\n } catch (error) {\n console.error('Failed to add environment to locomotion engine:', error);\n }\n }\n }\n\n private removeEnvironmentFromEngine(entity: Entity): void {\n if (!this.locomotor) {\n return;\n }\n const envHandle = entity.getValue(LocomotionEnvironment, '_envHandle');\n if (envHandle === 0) {\n return; // Not initialized or invalid handle\n } else if (envHandle !== null) {\n this.locomotor.removeEnvironment(envHandle);\n }\n }\n\n update(delta: number): void {\n if (!this.locomotor) {\n return;\n }\n this.locomotor.updateKinematicEnvironments();\n this.locomotor.update(delta);\n this.player.position.copy(this.locomotor.position);\n\n // Toggle micro-gesture controls in hand-tracking mode\n if (this.input.xr.isPrimary('hand', 'right')) {\n const gp = this.input.xr.gamepads.right;\n if (gp) {\n // Swipe up (7) enables; swipe down (8) disables\n if (gp.getButtonDownByIdx(7)) {\n if (!this.microGestureControlsEnabled) {\n this.microGestureControlsEnabled = true;\n if (this.turnSystem) {\n this.turnSystem.config.microGestureControlsEnabled.value = true;\n }\n if (this.teleportSystem) {\n this.teleportSystem.config.microGestureControlsEnabled.value = true;\n }\n }\n } else if (gp.getButtonDownByIdx(8)) {\n if (this.microGestureControlsEnabled) {\n this.microGestureControlsEnabled = false;\n if (this.turnSystem) {\n this.turnSystem.config.microGestureControlsEnabled.value = false;\n }\n if (this.teleportSystem) {\n this.teleportSystem.config.microGestureControlsEnabled.value = false;\n }\n }\n }\n }\n }\n }\n\n destroy(): void {\n super.destroy();\n if (this.locomotor) {\n this.locomotor.terminate();\n }\n this.world.unregisterSystem(TurnSystem);\n if (this.teleportSystem) {\n this.world.unregisterSystem(TeleportSystem);\n }\n if (this.slideSystem) {\n this.world.unregisterSystem(SlideSystem);\n }\n }\n}\n"],"names":[],"mappings":"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"}
|