@iwsdk/core 1.0.0-rc.0 → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-helpers.js.map +1 -1
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/grab-warnings.js.map +1 -1
- package/dist/grab/grabbed.js.map +1 -1
- package/dist/grab/handles.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.js +3 -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.js +2 -3
- package/dist/init/world-initializer.js.map +1 -1
- 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.js.map +1 -1
- package/dist/input/state-tags.js.map +1 -1
- package/dist/input/stateful-browser-gamepad.js.map +1 -1
- package/dist/input/stateful-keyboard.js.map +1 -1
- package/dist/layers/xr-cylinder-layer.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.js.map +1 -1
- package/dist/project/paths.js.map +1 -1
- package/dist/project/types.js.map +1 -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/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":"input-manager.js","sources":["../../src/input/input-manager.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"input-manager.js","sources":["../../src/input/input-manager.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 { XRInputManager } from '@iwsdk/xr-input';\nimport { WebXRManager } from '../runtime/index.js';\nimport { InputActionManager } from './input-actions.js';\nimport { StatefulBrowserGamepad } from './stateful-browser-gamepad.js';\nimport { StatefulKeyboard } from './stateful-keyboard.js';\n\nexport type CanvasPointerEventsOption =\n | boolean\n | {\n enabled?: boolean;\n activeDuringXR?: boolean;\n };\n\nexport type NormalizedCanvasPointerEventsOptions = {\n enabled: boolean;\n activeDuringXR: boolean;\n};\n\nexport type InputManagerOptions = {\n canvasPointerEvents?: CanvasPointerEventsOption;\n};\n\nexport function normalizeCanvasPointerEventsOptions(\n option: CanvasPointerEventsOption | undefined,\n): NormalizedCanvasPointerEventsOptions {\n if (typeof option === 'boolean') {\n return { enabled: option, activeDuringXR: false };\n }\n\n return {\n enabled: option?.enabled ?? true,\n activeDuringXR: option?.activeDuringXR ?? false,\n };\n}\n\nexport class InputManager {\n public readonly xr: XRInputManager;\n public readonly keyboard: StatefulKeyboard;\n public readonly browserGamepads: Array<StatefulBrowserGamepad | undefined> =\n [];\n public readonly actions: InputActionManager;\n public readonly canvasPointerEvents: NormalizedCanvasPointerEventsOptions;\n\n constructor(xr: XRInputManager, options: InputManagerOptions = {}) {\n this.xr = xr;\n this.keyboard = new StatefulKeyboard();\n this.actions = new InputActionManager();\n this.canvasPointerEvents = normalizeCanvasPointerEventsOptions(\n options.canvasPointerEvents,\n );\n }\n\n /** @deprecated Use input.xr.gamepads instead. */\n get gamepads() {\n return this.xr.gamepads;\n }\n\n /** @deprecated Use input.xr.multiPointers instead. */\n get multiPointers() {\n return this.xr.multiPointers;\n }\n\n /** @deprecated Use input.xr.visualAdapters instead. */\n get visualAdapters() {\n return this.xr.visualAdapters;\n }\n\n /** @deprecated Use input.xr.isPrimary(...) instead. */\n isPrimary(...args: Parameters<XRInputManager['isPrimary']>) {\n return this.xr.isPrimary(...args);\n }\n\n /** @deprecated Use input.xr.getPrimaryInputSource(...) instead. */\n getPrimaryInputSource(\n ...args: Parameters<XRInputManager['getPrimaryInputSource']>\n ) {\n return this.xr.getPrimaryInputSource(...args);\n }\n\n update(xrManager: WebXRManager, delta: number, time: number): void {\n this.keyboard.update();\n this.updateBrowserGamepads();\n this.xr.update(xrManager, delta, time);\n this.actions.update({\n keyboard: this.keyboard,\n browserGamepads: this.browserGamepads,\n xr: this.xr,\n });\n }\n\n destroy(): void {\n this.keyboard.destroy();\n }\n\n private updateBrowserGamepads(): void {\n if (!navigator.getGamepads) {\n this.browserGamepads.length = 0;\n return;\n }\n\n const gamepads = navigator.getGamepads();\n this.browserGamepads.length = gamepads.length;\n for (let index = 0; index < gamepads.length; index++) {\n const gamepad = gamepads[index];\n if (!gamepad) {\n this.browserGamepads[index] = undefined;\n continue;\n }\n\n const state = this.browserGamepads[index];\n if (state) {\n state.refresh(gamepad);\n } else {\n const nextState = new StatefulBrowserGamepad(gamepad);\n nextState.refresh(gamepad);\n this.browserGamepads[index] = nextState;\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-system.js","sources":["../../src/input/input-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-system.js","sources":["../../src/input/input-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 { PointerEvent, PointerEventsMap } from '@pmndrs/pointer-events';\nimport { Types } from '../ecs/component.js';\nimport { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport { VisibilityState } from '../ecs/world.js';\nimport { DistanceGrabbable } from '../grab/distance-grabbable.js';\nimport { OneHandGrabbable } from '../grab/one-hand-grabbable.js';\nimport { TwoHandsGrabbable } from '../grab/two-hands-grabbable.js';\nimport { Mesh, Object3D, Object3DEventMap } from '../runtime/index.js';\nimport { Transform } from '../transform/index.js';\nimport {\n Hovered,\n PokeInteractable,\n Pressed,\n RayInteractable,\n} from './state-tags.js';\n\n/**\n * Samples XR poses (hands/controllers/head) and gamepads, curates the set of\n * interactables for pointer raycasting, and attaches minimal event listeners.\n *\n * @remarks\n * - Scheduled after player movement so pointers reflect updated transforms.\n * - Maintains type-specific descendant arrays for optimized pointer intersection.\n * - Adds transient `Hovered` / `Pressed` tags so other systems can react declaratively.\n *\n * @category Input\n * @example React to Hovered / Pressed\n * ```ts\n * export class HighlightSystem extends createSystem({\n * items: { required: [RayInteractable] }\n * }) {\n * update() {\n * this.queries.items.entities.forEach(e => {\n * e.object3D.visible = !e.hasComponent(Pressed);\n * })\n * }\n * }\n * ```\n */\nexport class InputSystem extends createSystem(\n {\n /** Entities interactable via ray pointer */\n rayInteractables: { required: [RayInteractable, Transform] },\n /** Entities interactable via touch/poke pointer */\n pokeInteractables: { required: [PokeInteractable, Transform] },\n /** One-hand grabbable entities */\n oneHandGrabbables: { required: [OneHandGrabbable, Transform] },\n /** Two-hands grabbable entities */\n twoHandsGrabbables: { required: [TwoHandsGrabbable, Transform] },\n /** Distance grabbable entities */\n distanceGrabbables: { required: [DistanceGrabbable, Transform] },\n },\n {\n /** Keep pointer target lists available outside immersive XR for browser canvas input. */\n maintainScenePointers: { type: Types.Boolean, default: false },\n },\n) {\n /** Descendants for ray pointer intersection */\n private rayDescendants: Object3D[] = [];\n /** Descendants for touch/poke pointer intersection */\n private touchDescendants: Object3D[] = [];\n /** Descendants for grab pointer intersection */\n private grabDescendants: Object3D[] = [];\n\n private shouldSetIntersectables = false;\n private listeners = new WeakMap<\n Object3D,\n {\n enter: (e: any) => void;\n leave: (e: any) => void;\n down: (e: any) => void;\n up: (e: any) => void;\n }\n >();\n private lastBVHUpdate = new WeakMap<Object3D, number>();\n\n init(): void {\n this.shouldSetIntersectables =\n this.visibilityState.value === VisibilityState.Visible ||\n this.config.maintainScenePointers.value;\n // React to XR visibility for enabling scoped intersections\n this.cleanupFuncs.push(\n this.visibilityState.subscribe((value) => {\n this.shouldSetIntersectables =\n value === VisibilityState.Visible ||\n this.config.maintainScenePointers.value;\n }),\n );\n\n // Wire pointer event listeners on qualify; tear them down on disqualify.\n // Descendant arrays are rebuilt every frame, so no dirty bookkeeping here.\n // Register the query subscriptions on cleanupFuncs so they're released on\n // system teardown (matching the visibilityState subscription above).\n this.cleanupFuncs.push(\n this.queries.rayInteractables.subscribe('qualify', (entity) => {\n this.setupEventListeners(entity);\n }),\n this.queries.rayInteractables.subscribe('disqualify', (entity) => {\n this.cleanupEventListeners(entity);\n }),\n\n this.queries.pokeInteractables.subscribe('qualify', (entity) => {\n this.setupEventListeners(entity);\n // Enable touch pointers when first poke interactable appears\n this.input.xr.multiPointers.left.toggleSubPointer('touch', true);\n this.input.xr.multiPointers.right.toggleSubPointer('touch', true);\n }),\n this.queries.pokeInteractables.subscribe('disqualify', (entity) => {\n this.cleanupEventListeners(entity);\n // Disable touch pointers when no poke interactables remain\n if (this.queries.pokeInteractables.entities.size === 0) {\n this.input.xr.multiPointers.left.toggleSubPointer('touch', false);\n this.input.xr.multiPointers.right.toggleSubPointer('touch', false);\n }\n }),\n );\n\n // Enable touch pointer if there are already poke interactables\n if (this.queries.pokeInteractables.entities.size > 0) {\n this.input.xr.multiPointers.left.toggleSubPointer('touch', true);\n this.input.xr.multiPointers.right.toggleSubPointer('touch', true);\n }\n }\n\n update(delta: number, time: number): void {\n // Update input sampling first\n this.input.update(this.xrManager, delta, time);\n\n // Rebuild interactable descendant arrays every frame so newly parented\n // entities (TransformSystem runs at priority 0, after this system at -4)\n // become hit-testable on the same frame they're created.\n this.updateDescendantArrays();\n }\n\n /**\n * Update per-type descendant arrays for optimized pointer intersection\n */\n private updateDescendantArrays(): void {\n // Clear arrays\n this.rayDescendants.length = 0;\n this.touchDescendants.length = 0;\n this.grabDescendants.length = 0;\n\n if (!this.shouldSetIntersectables) {\n // Clear all descendant arrays on scene\n (this.scene as any).interactableDescendants = undefined;\n (this.scene as any).rayDescendants = undefined;\n (this.scene as any).touchDescendants = undefined;\n (this.scene as any).grabDescendants = undefined;\n return;\n }\n\n // Collect ray interactables + distance grabbables (both use ray)\n for (const entity of this.queries.rayInteractables.entities) {\n const obj = entity.object3D;\n if (obj) {\n this.rayDescendants.push(obj);\n }\n }\n for (const entity of this.queries.distanceGrabbables.entities) {\n const obj = entity.object3D;\n if (obj && !this.rayDescendants.includes(obj)) {\n this.rayDescendants.push(obj);\n }\n }\n\n // Collect poke/touch interactables\n for (const entity of this.queries.pokeInteractables.entities) {\n const obj = entity.object3D;\n if (obj) {\n this.touchDescendants.push(obj);\n }\n }\n\n // Collect grab interactables (oneHand + twoHands)\n for (const entity of this.queries.oneHandGrabbables.entities) {\n const obj = entity.object3D;\n if (obj) {\n this.grabDescendants.push(obj);\n }\n }\n for (const entity of this.queries.twoHandsGrabbables.entities) {\n const obj = entity.object3D;\n if (obj && !this.grabDescendants.includes(obj)) {\n this.grabDescendants.push(obj);\n }\n }\n\n // Set type-specific arrays on scene\n (this.scene as any).rayDescendants = this.rayDescendants;\n (this.scene as any).touchDescendants = this.touchDescendants;\n (this.scene as any).grabDescendants = this.grabDescendants;\n\n // Also set legacy interactableDescendants as union for backwards compatibility\n const allDescendants = new Set<Object3D>([\n ...this.rayDescendants,\n ...this.touchDescendants,\n ...this.grabDescendants,\n ]);\n (this.scene as any).interactableDescendants = Array.from(allDescendants);\n }\n\n private setupEventListeners(entity: Entity): void {\n const object3D = entity.object3D as Object3D<\n Object3DEventMap & PointerEventsMap\n >;\n if (!object3D) {\n return;\n }\n\n // Skip if already has listeners\n if (this.listeners.has(object3D)) {\n return;\n }\n\n // Compute BVH for all meshes in the entity hierarchy for fast raycasting\n this.computeBoundsTreeForEntity(object3D);\n\n // Enable pointer events for raycasting\n (object3D as any).pointerEvents = 'auto';\n\n // Throttled subtree BVH refresh helper\n const maybeRefreshBVH = () => {\n const now =\n typeof performance !== 'undefined' && performance.now\n ? performance.now()\n : Date.now();\n const last = this.lastBVHUpdate.get(object3D) ?? 0;\n if (now - last > 250) {\n this.computeBoundsTreeForEntity(object3D);\n this.lastBVHUpdate.set(object3D, now);\n }\n };\n\n const enter = (event: PointerEvent) => {\n event.stopPropagation();\n maybeRefreshBVH();\n if (!entity.hasComponent(Hovered)) {\n entity.addComponent(Hovered);\n }\n };\n const leave = (event: PointerEvent) => {\n event.stopPropagation();\n entity.removeComponent(Hovered);\n // pointerleave can fire without a preceding pointerup for flat geometry\n // (poke sphere exits intersection in one frame); clear Pressed defensively.\n entity.removeComponent(Pressed);\n };\n const down = (event: PointerEvent) => {\n event.stopPropagation();\n maybeRefreshBVH();\n // pointerdown implies the pointer is over the entity; ensure Hovered is\n // present even if a pointerleave/pointerdown sequence cleared it\n // (flat-geometry poke: the sphere can exit then re-contact from behind).\n if (!entity.hasComponent(Hovered)) {\n entity.addComponent(Hovered);\n }\n if (!entity.hasComponent(Pressed)) {\n entity.addComponent(Pressed);\n }\n };\n const up = (event: PointerEvent) => {\n event.stopPropagation();\n entity.removeComponent(Pressed);\n };\n\n this.listeners.set(object3D, { enter, leave, down, up });\n (object3D as any).addEventListener('pointerenter', enter);\n (object3D as any).addEventListener('pointerleave', leave);\n (object3D as any).addEventListener('pointerdown', down);\n (object3D as any).addEventListener('pointerup', up);\n }\n\n private computeBoundsTreeForEntity(object3D: Object3D): void {\n object3D.traverse((child) => {\n if ((child as Mesh).isMesh) {\n const mesh = child as Mesh;\n const geometry = (mesh as any).geometry;\n if (\n geometry &&\n !geometry.boundsTree &&\n typeof geometry.computeBoundsTree === 'function'\n ) {\n try {\n geometry.computeBoundsTree();\n } catch (error) {\n console.warn(\n `[InputSystem] Failed to compute BVH for ${mesh.name || 'unnamed'}:`,\n error,\n );\n }\n }\n }\n });\n }\n\n private cleanupEventListeners(entity: Entity): void {\n const object3D = entity.object3D as any;\n if (!object3D) {\n return;\n }\n const fns = this.listeners.get(object3D);\n if (fns) {\n object3D.removeEventListener('pointerenter', fns.enter);\n object3D.removeEventListener('pointerleave', fns.leave);\n object3D.removeEventListener('pointerdown', fns.down);\n object3D.removeEventListener('pointerup', fns.up);\n this.listeners.delete(object3D);\n }\n // A query also disqualifies an entity when it is destroyed. At that point\n // Elics has already cleared its components and rejects further mutations.\n // The listeners still need to be detached from the retained Object3D, but\n // there are no transient input tags left to remove from an inactive entity.\n if (entity.active) {\n entity.removeComponent(Hovered).removeComponent(Pressed);\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-tags.js","sources":["../../src/input/state-tags.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"state-tags.js","sources":["../../src/input/state-tags.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 { createComponent } from '../ecs/component.js';\n/**\n * Marks an entity as eligible for ray-based pointer interaction.\n *\n * @remarks\n * - The {@link InputSystem} discovers all entities with `RayInteractable` and\n * registers their Object3D roots as raycast targets.\n * - Used for UI elements, buttons, and clickable objects interacted via ray pointer.\n * - When a pointer enters/leaves or presses/releases on the entity, the system\n * adds/removes the transient tags {@link Hovered} and {@link Pressed}.\n *\n * @category Input\n * @example Highlight on hover\n * ```ts\n * export class HighlightSystem extends createSystem({ items: { required: [RayInteractable] } }) {\n * update() {\n * this.queries.items.entities.forEach(e => {\n * e.object3D.material.emissiveIntensity = e.hasComponent(Hovered) ? 1.0 : 0.0;\n * });\n * }\n * }\n * ```\n */\nexport const RayInteractable = createComponent(\n 'RayInteractable',\n {},\n 'Marks an entity as eligible for ray-based pointer interaction.',\n);\n\n/**\n * Marks an entity as eligible for poke/touch interaction.\n *\n * @remarks\n * - Used for UI elements that can be poked/touched with finger or controller.\n * - Auto-selects when finger crosses the surface (distance <= 0).\n * - Uses hysteresis (separate enter/exit thresholds) to prevent flickering.\n *\n * @category Input\n * @example Create a pokeable button\n * ```ts\n * entity.addComponent(PokeInteractable);\n * ```\n */\nexport const PokeInteractable = createComponent(\n 'PokeInteractable',\n {},\n 'Marks an entity as eligible for poke/touch interaction.',\n);\n\n/**\n * A transient tag set while a pointer is intersecting an interactable.\n *\n * @remarks\n * - Managed by {@link InputSystem}; do not add/remove this component manually.\n * - Use as a declarative condition for hover effects, tooltips, or affordances.\n * - Works with both RayInteractable and PokeInteractable entities.\n *\n * @category Input\n * @hideineditor\n */\nexport const Hovered = createComponent(\n 'Hovered',\n {},\n 'A tag added by InputSystem while a pointer is hovering over the entity.',\n);\n\n/**\n * A transient tag set while a pointer is actively pressing an interactable.\n *\n * @remarks\n * - Managed by {@link InputSystem}; do not add/remove this component manually.\n * - Often used to gate activation logic or pressed-state visuals.\n * - Works with both RayInteractable and PokeInteractable entities.\n *\n * @category Input\n * @hideineditor\n */\nexport const Pressed = createComponent(\n 'Pressed',\n {},\n 'A tag added by InputSystem while the entity is actively pressed.',\n);\n\n/**\n * @deprecated Use `RayInteractable` instead. This will be removed in a future version.\n */\nexport const Interactable = RayInteractable;\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,eAAe,GAAG,eAAe,CAC5C,iBAAiB,EACjB,EAAE,EACF,gEAAgE;AAGlE;;;;;;;;;;;;;AAaG;AACI,MAAM,gBAAgB,GAAG,eAAe,CAC7C,kBAAkB,EAClB,EAAE,EACF,yDAAyD;AAG3D;;;;;;;;;;AAUG;AACI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT,EAAE,EACF,yEAAyE;AAG3E;;;;;;;;;;AAUG;AACI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT,EAAE,EACF,kEAAkE;AAGpE;;AAEG;AACI,MAAM,YAAY,GAAG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateful-browser-gamepad.js","sources":["../../src/input/stateful-browser-gamepad.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"stateful-browser-gamepad.js","sources":["../../src/input/stateful-browser-gamepad.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 { ButtonAxesLayout, StatefulButtonAxesDevice } from '@iwsdk/xr-input';\n\nexport enum BrowserGamepadButton {\n South = 'standard-south',\n East = 'standard-east',\n West = 'standard-west',\n North = 'standard-north',\n LeftBumper = 'standard-left-bumper',\n RightBumper = 'standard-right-bumper',\n LeftTrigger = 'standard-left-trigger',\n RightTrigger = 'standard-right-trigger',\n Select = 'standard-select',\n Start = 'standard-start',\n LeftStick = 'standard-left-stick',\n RightStick = 'standard-right-stick',\n DPadUp = 'standard-dpad-up',\n DPadDown = 'standard-dpad-down',\n DPadLeft = 'standard-dpad-left',\n DPadRight = 'standard-dpad-right',\n Home = 'standard-home',\n}\n\nexport enum BrowserGamepadAxis {\n LeftStick = 'standard-left-stick-axes',\n RightStick = 'standard-right-stick-axes',\n}\n\nconst STANDARD_GAMEPAD_LAYOUT: ButtonAxesLayout = {\n selectComponentId: BrowserGamepadButton.South,\n components: {\n [BrowserGamepadButton.South]: {\n type: 'button',\n gamepadIndices: { button: 0 },\n },\n [BrowserGamepadButton.East]: {\n type: 'button',\n gamepadIndices: { button: 1 },\n },\n [BrowserGamepadButton.West]: {\n type: 'button',\n gamepadIndices: { button: 2 },\n },\n [BrowserGamepadButton.North]: {\n type: 'button',\n gamepadIndices: { button: 3 },\n },\n [BrowserGamepadButton.LeftBumper]: {\n type: 'button',\n gamepadIndices: { button: 4 },\n },\n [BrowserGamepadButton.RightBumper]: {\n type: 'button',\n gamepadIndices: { button: 5 },\n },\n [BrowserGamepadButton.LeftTrigger]: {\n type: 'trigger',\n gamepadIndices: { button: 6 },\n },\n [BrowserGamepadButton.RightTrigger]: {\n type: 'trigger',\n gamepadIndices: { button: 7 },\n },\n [BrowserGamepadButton.Select]: {\n type: 'button',\n gamepadIndices: { button: 8 },\n },\n [BrowserGamepadButton.Start]: {\n type: 'button',\n gamepadIndices: { button: 9 },\n },\n [BrowserGamepadButton.LeftStick]: {\n type: 'button',\n gamepadIndices: { button: 10 },\n },\n [BrowserGamepadButton.RightStick]: {\n type: 'button',\n gamepadIndices: { button: 11 },\n },\n [BrowserGamepadButton.DPadUp]: {\n type: 'button',\n gamepadIndices: { button: 12 },\n },\n [BrowserGamepadButton.DPadDown]: {\n type: 'button',\n gamepadIndices: { button: 13 },\n },\n [BrowserGamepadButton.DPadLeft]: {\n type: 'button',\n gamepadIndices: { button: 14 },\n },\n [BrowserGamepadButton.DPadRight]: {\n type: 'button',\n gamepadIndices: { button: 15 },\n },\n [BrowserGamepadButton.Home]: {\n type: 'button',\n gamepadIndices: { button: 16 },\n },\n [BrowserGamepadAxis.LeftStick]: {\n type: 'thumbstick',\n gamepadIndices: { xAxis: 0, yAxis: 1 },\n },\n [BrowserGamepadAxis.RightStick]: {\n type: 'thumbstick',\n gamepadIndices: { xAxis: 2, yAxis: 3 },\n },\n },\n};\n\nexport class StatefulBrowserGamepad extends StatefulButtonAxesDevice {\n public gamepad: Gamepad;\n\n constructor(gamepad: Gamepad) {\n super(STANDARD_GAMEPAD_LAYOUT, gamepad.buttons.length);\n this.gamepad = gamepad;\n }\n\n get index(): number {\n return this.gamepad.index;\n }\n\n get id(): string {\n return this.gamepad.id;\n }\n\n get connected(): boolean {\n return this.gamepad.connected;\n }\n\n get mapping(): GamepadMappingType {\n return this.gamepad.mapping;\n }\n\n refresh(gamepad: Gamepad = this.gamepad): void {\n this.gamepad = gamepad;\n super.update(gamepad.buttons, gamepad.axes);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateful-keyboard.js","sources":["../../src/input/stateful-keyboard.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"stateful-keyboard.js","sources":["../../src/input/stateful-keyboard.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\nexport class StatefulKeyboard {\n private readonly pressedKeys = new Set<string>();\n private readonly currentDownKeys = new Set<string>();\n private readonly currentUpKeys = new Set<string>();\n private readonly pendingDownKeys = new Set<string>();\n private readonly pendingUpKeys = new Set<string>();\n private readonly target: Window;\n\n private readonly handleKeyDown = (event: KeyboardEvent) => {\n if (!this.pressedKeys.has(event.code)) {\n this.pendingDownKeys.add(event.code);\n }\n this.pressedKeys.add(event.code);\n };\n\n private readonly handleKeyUp = (event: KeyboardEvent) => {\n if (this.pressedKeys.has(event.code)) {\n this.pendingUpKeys.add(event.code);\n }\n this.pressedKeys.delete(event.code);\n };\n\n constructor(target: Window = window) {\n this.target = target;\n this.target.addEventListener('keydown', this.handleKeyDown);\n this.target.addEventListener('keyup', this.handleKeyUp);\n }\n\n update(): void {\n this.currentDownKeys.clear();\n this.currentUpKeys.clear();\n for (const code of this.pendingDownKeys) {\n this.currentDownKeys.add(code);\n }\n for (const code of this.pendingUpKeys) {\n this.currentUpKeys.add(code);\n }\n this.pendingDownKeys.clear();\n this.pendingUpKeys.clear();\n }\n\n getKeyPressed(code: string): boolean {\n return this.pressedKeys.has(code);\n }\n\n getKeyDown(code: string): boolean {\n return this.currentDownKeys.has(code);\n }\n\n getKeyUp(code: string): boolean {\n return this.currentUpKeys.has(code);\n }\n\n destroy(): void {\n this.target.removeEventListener('keydown', this.handleKeyDown);\n this.target.removeEventListener('keyup', this.handleKeyUp);\n this.pressedKeys.clear();\n this.currentDownKeys.clear();\n this.currentUpKeys.clear();\n this.pendingDownKeys.clear();\n this.pendingUpKeys.clear();\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xr-cylinder-layer.js","sources":["../../src/layers/xr-cylinder-layer.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;AAYG;AACI,MAAM,eAAe,GAAG,eAAe,CAC5C,iBAAiB,EACjB;;IAEE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;AAE7C,IAAA,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;;IAE3D,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAElD,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;;IAEhD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;AACjD;;;;;AAKG;IACH,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;;IAErD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CACjD,EACD,sCAAsC;;;;"}
|
|
1
|
+
{"version":3,"file":"xr-cylinder-layer.js","sources":["../../src/layers/xr-cylinder-layer.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 * XRCylinderLayer - Component for WebXR cylinder composition layers.\n *\n * A cylinder layer renders content onto a curved rectangular surface. The\n * viewer sees the inside of the cylinder. The entity's transform controls\n * the layer's world position and orientation. In XR, the content is\n * composited by the device's native compositor.\n *\n * Outside XR, the layer content is displayed on a textured cylinder mesh\n * as a fallback.\n *\n * @category Layers\n */\nexport const XRCylinderLayer = createComponent(\n 'XRCylinderLayer',\n {\n /** Radius of the cylinder in meters. */\n radius: { type: Types.Float32, default: 2.0 },\n /** Central angle of the visible arc in radians. */\n centralAngle: { type: Types.Float32, default: Math.PI / 4 },\n /** Width-to-height aspect ratio of the visible section. */\n aspectRatio: { type: Types.Float32, default: 2.0 },\n /** Width of the layer's render target in pixels. */\n pixelWidth: { type: Types.Int16, default: 1024 },\n /** Height of the layer's render target in pixels. */\n pixelHeight: { type: Types.Int16, default: 1024 },\n /**\n * Callback invoked each frame while the layer is visible and its render\n * surface is active.\n * The renderer's render target is already set; call\n * `renderer.render(scene, camera)` to draw into the layer.\n */\n renderCallback: { type: Types.Object, default: null },\n /** Enable stencil buffer on the layer's render target. */\n stencil: { type: Types.Boolean, default: false },\n },\n 'Cylinder composition layer for WebXR',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;AAYG;AACI,MAAM,eAAe,GAAG,eAAe,CAC5C,iBAAiB,EACjB;;IAEE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;AAE7C,IAAA,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;;IAE3D,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAElD,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;;IAEhD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;AACjD;;;;;AAKG;IACH,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;;IAErD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CACjD,EACD,sCAAsC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xr-layer-init.js","sources":["../../src/layers/xr-layer-init.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"xr-layer-init.js","sources":["../../src/layers/xr-layer-init.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\ninterface QuadLayerInitInput {\n transform: XRRigidTransform;\n width: number;\n height: number;\n space: XRSpace;\n pixelWidth: number;\n pixelHeight: number;\n}\n\nexport function createQuadLayerInit({\n transform,\n width,\n height,\n space,\n pixelWidth,\n pixelHeight,\n}: QuadLayerInitInput): XRQuadLayerInit & { clearOnAccess: false } {\n return {\n transform,\n width,\n height,\n space,\n viewPixelWidth: pixelWidth,\n viewPixelHeight: pixelHeight,\n clearOnAccess: false,\n };\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAWG,SAAU,mBAAmB,CAAC,EAClC,SAAS,EACT,KAAK,EACL,MAAM,EACN,KAAK,EACL,UAAU,EACV,WAAW,GACQ,EAAA;IACnB,OAAO;QACL,SAAS;QACT,KAAK;QACL,MAAM;QACN,KAAK;AACL,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,eAAe,EAAE,WAAW;AAC5B,QAAA,aAAa,EAAE,KAAK;KACrB;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xr-layer-state.js","sources":["../../src/layers/xr-layer-state.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;AACO,MAAM,YAAY,GAAG,eAAe,CACzC,cAAc,EACd;IACE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3C,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IACnD,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IACvD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IAC7C,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IAC9C,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IAChD,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;CACvD,EACD,6CAA6C;;;;"}
|
|
1
|
+
{"version":3,"file":"xr-layer-state.js","sources":["../../src/layers/xr-layer-state.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/** Internal per-entity runtime state for active XR layers. */\nexport const XRLayerState = createComponent(\n 'XRLayerState',\n {\n isQuad: { type: Types.Boolean, default: true },\n mesh: { type: Types.Object, default: null },\n renderTarget: { type: Types.Object, default: null },\n fallbackMaterial: { type: Types.Object, default: null },\n xrLayer: { type: Types.Object, default: null },\n pixelWidth: { type: Types.Int16, default: 0 },\n pixelHeight: { type: Types.Int16, default: 0 },\n stencil: { type: Types.Boolean, default: false },\n cachedTransform: { type: Types.Object, default: null },\n },\n 'Internal state for active XR layer entities',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;AACO,MAAM,YAAY,GAAG,eAAe,CACzC,cAAc,EACd;IACE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3C,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IACnD,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IACvD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IAC7C,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IAC9C,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IAChD,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;CACvD,EACD,6CAA6C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xr-layer-system.js","sources":["../../src/layers/xr-layer-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xr-layer-system.js","sources":["../../src/layers/xr-layer-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 { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport {\n AddEquation,\n BackSide,\n Color,\n CustomBlending,\n CylinderGeometry,\n DepthFormat,\n DepthStencilFormat,\n DepthTexture,\n FrontSide,\n Mesh,\n MeshBasicMaterial,\n Matrix4,\n Object3D,\n PlaneGeometry,\n Quaternion,\n RGBAFormat,\n SRGBColorSpace,\n UnsignedByteType,\n UnsignedInt248Type,\n UnsignedIntType,\n Vector3,\n WebGLRenderTarget,\n ZeroFactor,\n} from '../runtime/index.js';\nimport { XRCylinderLayer } from './xr-cylinder-layer.js';\nimport { createQuadLayerInit } from './xr-layer-init.js';\nimport { XRLayerState } from './xr-layer-state.js';\nimport {\n isValidCylinderLayerAngle,\n resolveCylinderLayerDimensions,\n resolveLayerReferencePose,\n resolveQuadLayerDimensions,\n} from './xr-layer-transform.js';\nimport { XRQuadLayer } from './xr-quad-layer.js';\n\nexport { XRLayerState } from './xr-layer-state.js';\n\nconst _position = new Vector3();\nconst _quaternion = new Quaternion();\nconst _scale = new Vector3();\nconst _configuration = new Vector3();\nconst _relativeMatrix = new Matrix4();\nconst _clearColor = new Color();\n\ninterface CachedTransform {\n position: Vector3;\n quaternion: Quaternion;\n scale: Vector3;\n configuration: Vector3;\n}\n\ninterface UnsupportedLayerState {\n relativeMatrix: Matrix4;\n configuration: Vector3;\n}\n\ninterface RetiredLayerResources {\n xrLayer: any;\n mesh: Mesh;\n fallbackMaterial: MeshBasicMaterial;\n renderTarget: WebGLRenderTarget;\n}\n\nfunction toRigidTransform(pos: Vector3, quat: Quaternion): XRRigidTransform {\n return new XRRigidTransform(\n { x: pos.x, y: pos.y, z: pos.z },\n { x: quat.x, y: quat.y, z: quat.z, w: quat.w },\n );\n}\n\nfunction isObjectTreeVisible(object: Object3D): boolean {\n for (\n let current: Object3D | null = object;\n current;\n current = current.parent\n ) {\n if (!current.visible) {\n return false;\n }\n }\n return true;\n}\n\nfunction sameNumber(first: number, second: number): boolean {\n return first === second || (Number.isNaN(first) && Number.isNaN(second));\n}\n\nfunction sameVector(first: Vector3, second: Vector3): boolean {\n return (\n sameNumber(first.x, second.x) &&\n sameNumber(first.y, second.y) &&\n sameNumber(first.z, second.z)\n );\n}\n\n/**\n * XRLayerSystem manages WebXR quad and cylinder composition layers.\n *\n * For each entity with an {@link XRQuadLayer} or {@link XRCylinderLayer}\n * component, the system:\n * - Creates a mesh (plane or cylinder) as a child of the entity's object3D\n * - Renders layer content via the component's `renderCallback` while its\n * render surface is visible and active\n * - In XR sessions with layer support, creates native XR composition layers\n * and switches the mesh to a punch-through material that makes the\n * projection layer transparent where the content layer appears\n * - Falls back to rendering the content onto a textured mesh outside XR\n *\n * @category Layers\n */\nexport class XRLayerSystem extends createSystem({\n quadLayers: { required: [XRQuadLayer] },\n cylinderLayers: { required: [XRCylinderLayer] },\n activeLayers: { required: [XRLayerState] },\n}) {\n private sessionUsesLayers = false;\n private sessionLayerInitializationPending = false;\n private unsupportedLayerStates = new Map<number, UnsupportedLayerState>();\n private pendingNativeLayerRemovals = new Set<number>();\n private retiredLayers: RetiredLayerResources[] = [];\n private layerVisibility = new Map<number, boolean>();\n private layerConfigurations = new Map<number, Vector3>();\n\n init() {\n const onSessionStart = () => this.handleSessionStart();\n const onSessionEnd = () => this.handleSessionEnd();\n this.xrManager.addEventListener('sessionstart', onSessionStart);\n this.xrManager.addEventListener('sessionend', onSessionEnd);\n\n this.cleanupFuncs.push(\n () => this.xrManager.removeEventListener('sessionstart', onSessionStart),\n () => this.xrManager.removeEventListener('sessionend', onSessionEnd),\n );\n\n // Register the query subscriptions on cleanupFuncs so they're released on\n // system teardown (matching the xr listeners above).\n this.cleanupFuncs.push(\n this.queries.quadLayers.subscribe('qualify', (entity: Entity) =>\n this.setupLayer(entity, 'quad'),\n ),\n this.queries.quadLayers.subscribe('disqualify', (entity: Entity) =>\n this.teardownLayer(entity),\n ),\n this.queries.cylinderLayers.subscribe('qualify', (entity: Entity) =>\n this.setupLayer(entity, 'cylinder'),\n ),\n this.queries.cylinderLayers.subscribe('disqualify', (entity: Entity) =>\n this.teardownLayer(entity),\n ),\n );\n\n // Query disqualify does not run merely because the system itself is being\n // destroyed. Release every live compositor and GPU resource explicitly.\n this.cleanupFuncs.push(() => {\n for (const entity of [...this.queries.activeLayers.entities]) {\n this.teardownLayer(entity);\n }\n this.disposeRetiredLayers();\n this.unsupportedLayerStates.clear();\n this.pendingNativeLayerRemovals.clear();\n this.layerVisibility.clear();\n this.layerConfigurations.clear();\n });\n }\n\n update() {\n if (this.sessionLayerInitializationPending) {\n this.tryInitializeSessionLayers();\n }\n if (\n this.queries.activeLayers.entities.size === 0 &&\n this.retiredLayers.length === 0\n ) {\n return;\n }\n this.renderLayers();\n }\n\n // ---------------------------------------------------------------------------\n // Layer setup / teardown\n // ---------------------------------------------------------------------------\n\n private setupLayer(entity: Entity, type: 'quad' | 'cylinder') {\n const isQuad = type === 'quad';\n const component = isQuad ? XRQuadLayer : XRCylinderLayer;\n\n const pixelWidth = entity.getValue(component, 'pixelWidth') as number;\n const pixelHeight = entity.getValue(component, 'pixelHeight') as number;\n const stencil = entity.getValue(component, 'stencil') as boolean;\n\n const geometry = this.createFallbackGeometry(entity, isQuad);\n const side = isQuad ? FrontSide : BackSide;\n\n const renderTarget = this.createRenderTarget(\n pixelWidth,\n pixelHeight,\n stencil,\n );\n\n const fallbackMaterial = new MeshBasicMaterial({\n color: 0xffffff,\n side,\n transparent: true,\n });\n fallbackMaterial.map = renderTarget.texture;\n fallbackMaterial.map.offset.y = 1;\n fallbackMaterial.map.repeat.y = -1;\n\n const mesh = new Mesh(geometry, fallbackMaterial);\n entity.object3D?.add(mesh);\n\n entity.addComponent(XRLayerState, {\n isQuad,\n mesh,\n renderTarget,\n fallbackMaterial,\n pixelWidth,\n pixelHeight,\n stencil,\n });\n this.readLayerConfiguration(entity, isQuad, _configuration);\n this.layerConfigurations.set(entity.index, _configuration.clone());\n\n if (this.sessionUsesLayers) {\n this.activateNativeLayer(entity);\n this.updateSessionLayers();\n }\n }\n\n private teardownLayer(entity: Entity) {\n const mesh = XRLayerState.data.mesh[entity.index] as Mesh | null;\n if (!mesh) {\n return;\n }\n\n const resources: RetiredLayerResources = {\n xrLayer: XRLayerState.data.xrLayer[entity.index],\n mesh,\n fallbackMaterial: XRLayerState.data.fallbackMaterial[\n entity.index\n ] as MeshBasicMaterial,\n renderTarget: XRLayerState.data.renderTarget[\n entity.index\n ] as WebGLRenderTarget,\n };\n const nativeLayerIsActive = (\n this.xrManager.getSession()?.renderState.layers as\n | readonly unknown[]\n | undefined\n )?.includes(resources.xrLayer);\n\n if (resources.xrLayer && this.sessionUsesLayers) {\n this.updateSessionLayers(entity);\n }\n mesh.removeFromParent();\n\n if (entity.active) {\n entity.removeComponent(XRLayerState);\n }\n this.unsupportedLayerStates.delete(entity.index);\n this.pendingNativeLayerRemovals.delete(entity.index);\n this.layerVisibility.delete(entity.index);\n this.layerConfigurations.delete(entity.index);\n\n if (resources.xrLayer && this.sessionUsesLayers && nativeLayerIsActive) {\n this.retiredLayers.push(resources);\n } else {\n this.disposeLayerResources(resources);\n }\n }\n\n // ---------------------------------------------------------------------------\n // XR session lifecycle\n // ---------------------------------------------------------------------------\n\n private handleSessionStart() {\n this.sessionUsesLayers = false;\n this.sessionLayerInitializationPending = true;\n this.tryInitializeSessionLayers();\n }\n\n private handleSessionEnd() {\n for (const entity of this.queries.activeLayers.entities) {\n this.deactivateNativeLayer(entity);\n }\n this.disposeRetiredLayers();\n this.unsupportedLayerStates.clear();\n this.pendingNativeLayerRemovals.clear();\n this.layerVisibility.clear();\n this.sessionUsesLayers = false;\n this.sessionLayerInitializationPending = false;\n }\n\n /**\n * Enable composition layers once the projection layer is active.\n *\n * super-three queues its projection-layer render state before dispatching\n * `sessionstart`, so `renderState.layers` can legitimately be empty during\n * that event. Keep rendering the mesh fallback and retry on subsequent\n * frames instead of permanently classifying the session as unsupported.\n */\n private tryInitializeSessionLayers(): boolean {\n const session = this.xrManager.getSession();\n const binding = this.xrManager.getBinding();\n const renderState = session?.renderState as XRRenderState | undefined;\n\n if (!session || !binding || !renderState || renderState.baseLayer) {\n this.sessionLayerInitializationPending = false;\n return false;\n }\n\n if (!renderState.layers?.[0]) {\n return false;\n }\n\n this.sessionLayerInitializationPending = false;\n this.sessionUsesLayers = true;\n for (const entity of this.queries.activeLayers.entities) {\n this.activateNativeLayer(entity);\n }\n this.updateSessionLayers();\n return true;\n }\n\n // ---------------------------------------------------------------------------\n // Native layer management\n // ---------------------------------------------------------------------------\n\n private activateNativeLayer(entity: Entity): boolean {\n const binding = this.xrManager.getBinding() as any;\n const session = this.xrManager.getSession();\n if (!binding || !session) {\n return false;\n }\n\n const isQuad = !!XRLayerState.data.isQuad[entity.index];\n const mesh = XRLayerState.data.mesh[entity.index] as Mesh;\n const pixelWidth = XRLayerState.data.pixelWidth[entity.index] as number;\n const pixelHeight = XRLayerState.data.pixelHeight[entity.index] as number;\n\n const refSpace = this.xrManager.getReferenceSpace();\n if (!refSpace) {\n return false;\n }\n this.readLayerConfiguration(entity, isQuad, _configuration);\n const hasSupportedTransform = resolveLayerReferencePose(\n mesh,\n this.player,\n _position,\n _quaternion,\n _scale,\n _relativeMatrix,\n );\n\n let xrLayer;\n if (isQuad) {\n const dimensions = hasSupportedTransform\n ? resolveQuadLayerDimensions(_configuration.x, _configuration.y, _scale)\n : null;\n if (!dimensions) {\n this.rememberUnsupportedLayer(entity, 'quad');\n return false;\n }\n\n xrLayer = binding.createQuadLayer(\n createQuadLayerInit({\n transform: toRigidTransform(_position, _quaternion),\n width: dimensions.width,\n height: dimensions.height,\n space: refSpace,\n pixelWidth,\n pixelHeight,\n }),\n );\n } else {\n const dimensions = hasSupportedTransform\n ? resolveCylinderLayerDimensions(\n _configuration.x,\n _configuration.y,\n _scale,\n )\n : null;\n if (!dimensions || !isValidCylinderLayerAngle(_configuration.z)) {\n this.rememberUnsupportedLayer(entity, 'cylinder');\n return false;\n }\n\n xrLayer = binding.createCylinderLayer({\n transform: toRigidTransform(_position, _quaternion),\n radius: dimensions.radius,\n centralAngle: _configuration.z,\n aspectRatio: dimensions.aspectRatio,\n space: refSpace,\n viewPixelWidth: pixelWidth,\n viewPixelHeight: pixelHeight,\n clearOnAccess: false,\n });\n }\n\n this.unsupportedLayerStates.delete(entity.index);\n entity.setValue(XRLayerState, 'xrLayer', xrLayer);\n\n entity.setValue(XRLayerState, 'cachedTransform', {\n position: _position.clone(),\n quaternion: _quaternion.clone(),\n scale: _scale.clone(),\n configuration: _configuration.clone(),\n } satisfies CachedTransform);\n return true;\n }\n\n private deactivateNativeLayer(entity: Entity) {\n const mesh = XRLayerState.data.mesh[entity.index] as Mesh;\n const xrLayer = XRLayerState.data.xrLayer[entity.index] as any;\n if (!xrLayer) {\n entity.setValue(XRLayerState, 'cachedTransform', null);\n this.pendingNativeLayerRemovals.delete(entity.index);\n return;\n }\n xrLayer.destroy?.();\n this.useFallbackSurface(entity, mesh);\n\n entity.setValue(XRLayerState, 'xrLayer', null);\n entity.setValue(XRLayerState, 'cachedTransform', null);\n this.pendingNativeLayerRemovals.delete(entity.index);\n }\n\n /**\n * Switch from the internal fallback texture only after the compositor layer\n * is active. This avoids punching a transparent hole while\n * updateRenderState() is still pending.\n */\n private useNativeSurface(entity: Entity, mesh: Mesh): void {\n const fallbackMaterial = XRLayerState.data.fallbackMaterial[\n entity.index\n ] as MeshBasicMaterial;\n if (mesh.material !== fallbackMaterial) {\n return;\n }\n\n const side = XRLayerState.data.isQuad[entity.index] ? FrontSide : BackSide;\n const punchMaterial = new MeshBasicMaterial({ color: 0xffffff, side });\n punchMaterial.blending = CustomBlending;\n punchMaterial.blendEquation = AddEquation;\n punchMaterial.blendSrc = ZeroFactor;\n punchMaterial.blendDst = ZeroFactor;\n mesh.material = punchMaterial;\n\n const xrLayer = XRLayerState.data.xrLayer[entity.index] as any;\n xrLayer.blendTextureSourceAlpha = true;\n\n const renderTarget = XRLayerState.data.renderTarget[\n entity.index\n ] as WebGLRenderTarget;\n (renderTarget as any).isXRRenderTarget = true;\n renderTarget.texture.colorSpace = SRGBColorSpace;\n }\n\n /** Restore a fresh internal target after an external XR texture was bound. */\n private useFallbackSurface(entity: Entity, mesh: Mesh): void {\n const fallbackMaterial = XRLayerState.data.fallbackMaterial[\n entity.index\n ] as MeshBasicMaterial;\n if (mesh.material === fallbackMaterial) {\n return;\n }\n\n (mesh.material as MeshBasicMaterial).dispose();\n const oldRenderTarget = XRLayerState.data.renderTarget[\n entity.index\n ] as WebGLRenderTarget;\n oldRenderTarget.dispose();\n\n const newRenderTarget = this.createRenderTarget(\n XRLayerState.data.pixelWidth[entity.index] as number,\n XRLayerState.data.pixelHeight[entity.index] as number,\n !!XRLayerState.data.stencil[entity.index],\n );\n entity.setValue(XRLayerState, 'renderTarget', newRenderTarget);\n fallbackMaterial.map = newRenderTarget.texture;\n fallbackMaterial.map.offset.y = 1;\n fallbackMaterial.map.repeat.y = -1;\n mesh.material = fallbackMaterial;\n }\n\n private disposeLayerResources(resources: RetiredLayerResources): void {\n resources.xrLayer?.destroy?.();\n resources.mesh.geometry.dispose();\n resources.fallbackMaterial.dispose();\n if (resources.mesh.material !== resources.fallbackMaterial) {\n (resources.mesh.material as MeshBasicMaterial).dispose();\n }\n resources.renderTarget.dispose();\n }\n\n private disposeRetiredLayers(): void {\n for (const resources of this.retiredLayers) {\n this.disposeLayerResources(resources);\n }\n this.retiredLayers.length = 0;\n }\n\n /**\n * Keep removed layers alive until the queued render state no longer\n * references them. While removal is pending, clear their native textures so\n * the compositor cannot present stale content from the detached entity.\n */\n private renderRetiredLayers(renderer: any): void {\n if (this.retiredLayers.length === 0) {\n return;\n }\n\n const activeLayers = this.xrManager.getSession()?.renderState.layers as\n | readonly unknown[]\n | undefined;\n if (!activeLayers) {\n this.disposeRetiredLayers();\n return;\n }\n\n const retained: RetiredLayerResources[] = [];\n const released: RetiredLayerResources[] = [];\n for (const resources of this.retiredLayers) {\n if (activeLayers.includes(resources.xrLayer)) {\n retained.push(resources);\n } else {\n released.push(resources);\n }\n }\n\n // Commit the classification before disposal or compositor access. If a\n // later getSubImage() throws, already-released entries cannot be disposed\n // again, while every still-active entry remains tracked for retry.\n this.retiredLayers = retained;\n for (const resources of released) {\n this.disposeLayerResources(resources);\n }\n\n const binding = this.xrManager.getBinding() as any;\n const frame = this.xrFrame;\n for (const resources of retained) {\n if (!binding || !frame) {\n continue;\n }\n\n resources.xrLayer.blendTextureSourceAlpha = true;\n (resources.renderTarget as any).isXRRenderTarget = true;\n resources.renderTarget.texture.colorSpace = SRGBColorSpace;\n const subImage = binding.getSubImage(resources.xrLayer, frame);\n renderer.setRenderTargetTextures(\n resources.renderTarget,\n subImage.colorTexture,\n undefined,\n );\n renderer.setRenderTarget(resources.renderTarget);\n renderer.clear(true, true, true);\n }\n }\n\n /**\n * Rebuild the session's render state layers array.\n * Keeps the projection layer at index 0, then appends content layers.\n */\n private updateSessionLayers(excludedEntity?: Entity) {\n const session = this.xrManager.getSession();\n if (!session?.renderState.layers) {\n return;\n }\n\n // Projection layer is always the first entry\n const projLayer = session.renderState.layers[0];\n if (!projLayer) {\n return;\n }\n const layers: any[] = [projLayer];\n\n for (const entity of this.queries.activeLayers.entities) {\n if (entity === excludedEntity) {\n continue;\n }\n const xrLayer = XRLayerState.data.xrLayer[entity.index];\n const mesh = XRLayerState.data.mesh[entity.index] as Mesh | null;\n const visible = mesh != null && isObjectTreeVisible(mesh);\n this.layerVisibility.set(entity.index, visible);\n if (\n xrLayer &&\n visible &&\n !this.pendingNativeLayerRemovals.has(entity.index)\n ) {\n layers.push(xrLayer);\n }\n }\n\n session.updateRenderState({ layers });\n }\n\n // ---------------------------------------------------------------------------\n // Per-frame rendering\n // ---------------------------------------------------------------------------\n\n private renderLayers() {\n if (this.sessionLayerInitializationPending) {\n this.tryInitializeSessionLayers();\n }\n\n const renderer = this.renderer as any;\n const savedRenderTarget = renderer.getRenderTarget();\n\n const savedXrEnabled = renderer.xr.enabled;\n\n // Save clear color so we can clear layers to transparent.\n renderer.getClearColor(_clearColor);\n const savedClearAlpha = renderer.getClearAlpha();\n\n try {\n // Disable XR so renderer.render() uses the layer-specific camera instead of\n // the headset-tracked XR cameras.\n renderer.xr.enabled = false;\n renderer.setClearColor(0x000000, 0);\n\n this.renderRetiredLayers(renderer);\n\n for (const entity of this.queries.activeLayers.entities) {\n const isQuad = !!XRLayerState.data.isQuad[entity.index];\n const component = isQuad ? XRQuadLayer : XRCylinderLayer;\n let xrLayer = XRLayerState.data.xrLayer[entity.index];\n const mesh = XRLayerState.data.mesh[entity.index] as Mesh;\n this.syncLayerGeometry(entity, mesh, isQuad);\n\n const visible = isObjectTreeVisible(mesh);\n if (this.layerVisibility.get(entity.index) !== visible) {\n this.layerVisibility.set(entity.index, visible);\n if (this.sessionUsesLayers && xrLayer) {\n this.updateSessionLayers();\n }\n }\n\n if (this.sessionUsesLayers && xrLayer) {\n // An unsupported live transform queues removal. Keep the old native\n // surface valid until that pending render state becomes active.\n this.syncLayerTransform(xrLayer, mesh, entity);\n }\n\n if (\n this.sessionUsesLayers &&\n !xrLayer &&\n this.shouldRetryNativeLayer(entity, mesh, isQuad) &&\n this.activateNativeLayer(entity)\n ) {\n xrLayer = XRLayerState.data.xrLayer[entity.index];\n this.updateSessionLayers();\n }\n\n let nativeActive =\n this.sessionUsesLayers &&\n xrLayer != null &&\n (\n this.xrManager.getSession()?.renderState.layers as\n | readonly unknown[]\n | undefined\n )?.includes(xrLayer);\n\n if (\n xrLayer &&\n this.pendingNativeLayerRemovals.has(entity.index) &&\n !nativeActive\n ) {\n this.deactivateNativeLayer(entity);\n xrLayer = null;\n nativeActive = false;\n }\n\n if (nativeActive && xrLayer) {\n this.useNativeSurface(entity, mesh);\n } else {\n this.useFallbackSurface(entity, mesh);\n }\n\n const callback = entity.getValue(component, 'renderCallback') as\n | (() => void)\n | null;\n if (!visible && !nativeActive) {\n continue;\n }\n\n const renderTarget = XRLayerState.data.renderTarget[\n entity.index\n ] as WebGLRenderTarget;\n\n if (nativeActive && xrLayer) {\n const binding = this.xrManager.getBinding() as any;\n const frame = this.xrFrame;\n if (!binding || !frame) {\n continue;\n }\n const subImage = binding.getSubImage(xrLayer, frame);\n renderer.setRenderTargetTextures(\n renderTarget,\n subImage.colorTexture,\n undefined,\n );\n renderer.setRenderTarget(renderTarget);\n\n if (!visible) {\n // A hidden layer remains in the current render state until the next\n // XR frame. Clear it now so that pending removal cannot expose the\n // previous frame's stale content.\n renderer.clear(true, true, true);\n continue;\n }\n } else {\n renderer.setRenderTarget(renderTarget);\n }\n\n callback?.();\n }\n } finally {\n // Never leak layer-rendering state into the application render, even\n // when a binding or user render callback throws.\n renderer.setClearColor(_clearColor, savedClearAlpha);\n renderer.xr.enabled = savedXrEnabled;\n renderer.setRenderTarget(savedRenderTarget);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------------------\n\n /**\n * Update the native XR layer's transform only when the mesh has moved,\n * avoiding per-frame XRRigidTransform allocations for static layers.\n */\n private syncLayerTransform(\n xrLayer: any,\n mesh: Mesh,\n entity: Entity,\n ): boolean {\n const hasSupportedTransform = resolveLayerReferencePose(\n mesh,\n this.player,\n _position,\n _quaternion,\n _scale,\n _relativeMatrix,\n );\n\n const isQuad = !!XRLayerState.data.isQuad[entity.index];\n this.readLayerConfiguration(entity, isQuad, _configuration);\n\n const cached = XRLayerState.data.cachedTransform[\n entity.index\n ] as CachedTransform | null;\n\n if (\n hasSupportedTransform &&\n cached?.position.equals(_position) &&\n cached.quaternion.equals(_quaternion) &&\n cached.scale.equals(_scale) &&\n sameVector(cached.configuration, _configuration)\n ) {\n this.restorePendingNativeLayer(entity);\n return true;\n }\n\n if (isQuad) {\n const dimensions = hasSupportedTransform\n ? resolveQuadLayerDimensions(_configuration.x, _configuration.y, _scale)\n : null;\n if (!dimensions) {\n this.rememberUnsupportedLayer(entity, 'quad');\n this.requestNativeLayerRemoval(entity);\n return false;\n }\n xrLayer.width = dimensions.width;\n xrLayer.height = dimensions.height;\n } else {\n const dimensions = hasSupportedTransform\n ? resolveCylinderLayerDimensions(\n _configuration.x,\n _configuration.y,\n _scale,\n )\n : null;\n if (!dimensions || !isValidCylinderLayerAngle(_configuration.z)) {\n this.rememberUnsupportedLayer(entity, 'cylinder');\n this.requestNativeLayerRemoval(entity);\n return false;\n }\n xrLayer.radius = dimensions.radius;\n xrLayer.aspectRatio = dimensions.aspectRatio;\n xrLayer.centralAngle = _configuration.z;\n }\n\n this.restorePendingNativeLayer(entity);\n xrLayer.transform = toRigidTransform(_position, _quaternion);\n\n if (cached) {\n cached.position.copy(_position);\n cached.quaternion.copy(_quaternion);\n cached.scale.copy(_scale);\n cached.configuration.copy(_configuration);\n } else {\n entity.setValue(XRLayerState, 'cachedTransform', {\n position: _position.clone(),\n quaternion: _quaternion.clone(),\n scale: _scale.clone(),\n configuration: _configuration.clone(),\n } satisfies CachedTransform);\n }\n return true;\n }\n\n private requestNativeLayerRemoval(entity: Entity): void {\n if (this.pendingNativeLayerRemovals.has(entity.index)) {\n return;\n }\n this.pendingNativeLayerRemovals.add(entity.index);\n this.updateSessionLayers();\n }\n\n private restorePendingNativeLayer(entity: Entity): void {\n this.unsupportedLayerStates.delete(entity.index);\n if (!this.pendingNativeLayerRemovals.delete(entity.index)) {\n return;\n }\n this.updateSessionLayers();\n }\n\n private readLayerConfiguration(\n entity: Entity,\n isQuad: boolean,\n target: Vector3,\n ): void {\n if (isQuad) {\n target.set(\n entity.getValue(XRQuadLayer, 'width') as number,\n entity.getValue(XRQuadLayer, 'height') as number,\n 0,\n );\n return;\n }\n target.set(\n entity.getValue(XRCylinderLayer, 'radius') as number,\n entity.getValue(XRCylinderLayer, 'aspectRatio') as number,\n entity.getValue(XRCylinderLayer, 'centralAngle') as number,\n );\n }\n\n private syncLayerGeometry(entity: Entity, mesh: Mesh, isQuad: boolean): void {\n this.readLayerConfiguration(entity, isQuad, _configuration);\n const cached = this.layerConfigurations.get(entity.index);\n if (cached && sameVector(cached, _configuration)) {\n return;\n }\n this.layerConfigurations.set(entity.index, _configuration.clone());\n\n // The fallback must reflect every live configuration, including values\n // that a native composition layer cannot represent. Collapse non-finite\n // dimensions to a safe degenerate geometry instead of leaving the last\n // valid (and therefore misleading) shape on screen.\n const geometry = this.createFallbackGeometry(entity, isQuad);\n\n const oldGeometry = mesh.geometry;\n mesh.geometry = geometry;\n oldGeometry.dispose();\n }\n\n private createFallbackGeometry(entity: Entity, isQuad: boolean) {\n this.readLayerConfiguration(entity, isQuad, _configuration);\n if (isQuad) {\n const width = Number.isFinite(_configuration.x) ? _configuration.x : 0;\n const height = Number.isFinite(_configuration.y) ? _configuration.y : 0;\n return new PlaneGeometry(width, height);\n }\n\n const radius = Number.isFinite(_configuration.x) ? _configuration.x : 0;\n const centralAngle = Number.isFinite(_configuration.z)\n ? _configuration.z\n : 0;\n const rawHeight = (_configuration.x * _configuration.z) / _configuration.y;\n const height = Number.isFinite(rawHeight) ? rawHeight : 0;\n return new CylinderGeometry(\n radius,\n radius,\n height,\n 64,\n 64,\n true,\n Math.PI - centralAngle / 2,\n centralAngle,\n );\n }\n\n private shouldRetryNativeLayer(\n entity: Entity,\n mesh: Mesh,\n isQuad: boolean,\n ): boolean {\n const unsupported = this.unsupportedLayerStates.get(entity.index);\n if (!unsupported) {\n return true;\n }\n\n const hasSupportedTransform = resolveLayerReferencePose(\n mesh,\n this.player,\n _position,\n _quaternion,\n _scale,\n _relativeMatrix,\n );\n this.readLayerConfiguration(entity, isQuad, _configuration);\n const hasSupportedConfiguration = isQuad\n ? resolveQuadLayerDimensions(\n _configuration.x,\n _configuration.y,\n _scale,\n ) != null\n : resolveCylinderLayerDimensions(\n _configuration.x,\n _configuration.y,\n _scale,\n ) != null && isValidCylinderLayerAngle(_configuration.z);\n\n // Approximate cache equality suppresses repeated work while a layer stays\n // unsupported. Never let that tolerance hide a boundary crossing back to\n // a representable native layer.\n if (hasSupportedTransform && hasSupportedConfiguration) {\n return true;\n }\n return (\n !sameVector(unsupported.configuration, _configuration) ||\n this.hasLayerShapeChanged(unsupported.relativeMatrix, _relativeMatrix)\n );\n }\n\n private hasLayerShapeChanged(previous: Matrix4, current: Matrix4): boolean {\n const previousElements = previous.elements;\n const currentElements = current.elements;\n const previousFinite = previousElements.every(Number.isFinite);\n const currentFinite = currentElements.every(Number.isFinite);\n if (!previousFinite || !currentFinite) {\n return previousElements.some(\n (value, index) => !sameNumber(value, currentElements[index]),\n );\n }\n\n const gram = (elements: number[]) => {\n const xx = elements[0] ** 2 + elements[1] ** 2 + elements[2] ** 2;\n const yy = elements[4] ** 2 + elements[5] ** 2 + elements[6] ** 2;\n const zz = elements[8] ** 2 + elements[9] ** 2 + elements[10] ** 2;\n const normalizeDot = (dot: number, first: number, second: number) => {\n const denominator = Math.sqrt(first * second);\n return denominator === 0 ? dot : dot / denominator;\n };\n return [\n xx,\n yy,\n zz,\n normalizeDot(\n elements[0] * elements[4] +\n elements[1] * elements[5] +\n elements[2] * elements[6],\n xx,\n yy,\n ),\n normalizeDot(\n elements[0] * elements[8] +\n elements[1] * elements[9] +\n elements[2] * elements[10],\n xx,\n zz,\n ),\n normalizeDot(\n elements[4] * elements[8] +\n elements[5] * elements[9] +\n elements[6] * elements[10],\n yy,\n zz,\n ),\n ];\n };\n const previousGram = gram(previousElements);\n const currentGram = gram(currentElements);\n const nearlyEqual = (a: number, b: number, index: number) => {\n const tolerance =\n index < 3\n ? 1e-10 * Math.max(Number.EPSILON, Math.abs(a), Math.abs(b))\n : 1e-10;\n return Math.abs(a - b) <= tolerance;\n };\n\n return (\n previousGram.some(\n (value, index) => !nearlyEqual(value, currentGram[index], index),\n ) ||\n Math.sign(previous.determinant()) !== Math.sign(current.determinant())\n );\n }\n\n private rememberUnsupportedLayer(\n entity: Entity,\n type: 'quad' | 'cylinder',\n ): void {\n if (!this.unsupportedLayerStates.has(entity.index)) {\n console.warn(\n `[XRLayerSystem] ${type} layer ${entity.index} has unsupported dimensions or a non-finite, reflected, or sheared transform; using projection fallback.`,\n );\n }\n this.unsupportedLayerStates.set(entity.index, {\n relativeMatrix: _relativeMatrix.clone(),\n configuration: _configuration.clone(),\n });\n }\n\n private createRenderTarget(\n width: number,\n height: number,\n stencil: boolean,\n ): WebGLRenderTarget {\n return new WebGLRenderTarget(width, height, {\n format: RGBAFormat,\n type: UnsignedByteType,\n depthTexture: new DepthTexture(\n width,\n height,\n stencil ? UnsignedInt248Type : UnsignedIntType,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n stencil ? DepthStencilFormat : DepthFormat,\n ),\n samples: 4,\n stencilBuffer: stencil,\n });\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xr-layer-transform.js","sources":["../../src/layers/xr-layer-transform.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xr-layer-transform.js","sources":["../../src/layers/xr-layer-transform.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 { Matrix4, Object3D, Quaternion, Vector3 } from '../runtime/index.js';\n\nconst originInverse = new Matrix4();\nconst relativeMatrix = new Matrix4();\n\nconst ORTHOGONAL_EPSILON = 0.0001;\n\nfunction isFiniteVector3(vector: Vector3): boolean {\n return (\n Number.isFinite(vector.x) &&\n Number.isFinite(vector.y) &&\n Number.isFinite(vector.z)\n );\n}\n\nfunction hasSupportedBasis(matrix: Matrix4): boolean {\n const elements = matrix.elements;\n if (!elements.every(Number.isFinite)) {\n return false;\n }\n\n const xx = elements[0] ** 2 + elements[1] ** 2 + elements[2] ** 2;\n const yy = elements[4] ** 2 + elements[5] ** 2 + elements[6] ** 2;\n const zz = elements[8] ** 2 + elements[9] ** 2 + elements[10] ** 2;\n if (xx === 0 || yy === 0 || zz === 0) {\n return false;\n }\n\n const xy =\n (elements[0] * elements[4] +\n elements[1] * elements[5] +\n elements[2] * elements[6]) /\n Math.sqrt(xx * yy);\n const xz =\n (elements[0] * elements[8] +\n elements[1] * elements[9] +\n elements[2] * elements[10]) /\n Math.sqrt(xx * zz);\n const yz =\n (elements[4] * elements[8] +\n elements[5] * elements[9] +\n elements[6] * elements[10]) /\n Math.sqrt(yy * zz);\n\n return (\n Number.isFinite(matrix.determinant()) &&\n Math.abs(xy) <= ORTHOGONAL_EPSILON &&\n Math.abs(xz) <= ORTHOGONAL_EPSILON &&\n Math.abs(yz) <= ORTHOGONAL_EPSILON\n );\n}\n\nexport function resolveLayerReferencePose(\n object: Object3D,\n xrOrigin: Object3D,\n position: Vector3,\n quaternion: Quaternion,\n resolvedScale: Vector3,\n resolvedMatrix?: Matrix4,\n): boolean {\n xrOrigin.updateWorldMatrix(true, false);\n object.updateWorldMatrix(true, false);\n originInverse.copy(xrOrigin.matrixWorld).invert();\n relativeMatrix.multiplyMatrices(originInverse, object.matrixWorld);\n resolvedMatrix?.copy(relativeMatrix);\n\n // XRRigidTransform can represent translation and rotation only. Layer\n // dimensions account for axis-aligned scale, but a sheared transform cannot\n // be reproduced by a native composition layer.\n if (!hasSupportedBasis(relativeMatrix)) {\n return false;\n }\n\n relativeMatrix.decompose(position, quaternion, resolvedScale);\n return (\n isFiniteVector3(position) &&\n Number.isFinite(quaternion.x) &&\n Number.isFinite(quaternion.y) &&\n Number.isFinite(quaternion.z) &&\n Number.isFinite(quaternion.w) &&\n isFiniteVector3(resolvedScale)\n );\n}\n\nexport function resolveQuadLayerDimensions(\n width: number,\n height: number,\n resolvedScale: Vector3,\n): { width: number; height: number } | null {\n const resolvedWidth = width * resolvedScale.x;\n const resolvedHeight = height * resolvedScale.y;\n if (\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n !isFiniteVector3(resolvedScale) ||\n width <= 0 ||\n height <= 0 ||\n resolvedScale.x <= 0 ||\n resolvedScale.y <= 0 ||\n resolvedScale.z <= 0 ||\n !Number.isFinite(resolvedWidth) ||\n !Number.isFinite(resolvedHeight)\n ) {\n return null;\n }\n return {\n width: resolvedWidth,\n height: resolvedHeight,\n };\n}\n\nexport function resolveCylinderLayerDimensions(\n radius: number,\n aspectRatio: number,\n resolvedScale: Vector3,\n): { radius: number; aspectRatio: number } | null {\n const resolvedRadius = radius * resolvedScale.x;\n const resolvedAspectRatio = aspectRatio * (resolvedScale.x / resolvedScale.y);\n if (\n !Number.isFinite(radius) ||\n !Number.isFinite(aspectRatio) ||\n !isFiniteVector3(resolvedScale) ||\n radius <= 0 ||\n aspectRatio <= 0 ||\n resolvedScale.x <= 0 ||\n resolvedScale.y <= 0 ||\n resolvedScale.z <= 0 ||\n Math.abs(resolvedScale.x - resolvedScale.z) >\n 0.0001 * Math.max(resolvedScale.x, resolvedScale.z) ||\n !Number.isFinite(resolvedRadius) ||\n !Number.isFinite(resolvedAspectRatio)\n ) {\n return null;\n }\n return {\n radius: resolvedRadius,\n aspectRatio: resolvedAspectRatio,\n };\n}\n\nexport function isValidCylinderLayerAngle(centralAngle: number): boolean {\n return (\n Number.isFinite(centralAngle) &&\n centralAngle > 0 &&\n centralAngle <= Math.PI * 2\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xr-quad-layer.js","sources":["../../src/layers/xr-quad-layer.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;AAYG;AACI,MAAM,WAAW,GAAG,eAAe,CACxC,aAAa,EACb;;IAEE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAE5C,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAE7C,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;;IAEhD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;AACjD;;;;;AAKG;IACH,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;;IAErD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CACjD,EACD,kCAAkC;;;;"}
|
|
1
|
+
{"version":3,"file":"xr-quad-layer.js","sources":["../../src/layers/xr-quad-layer.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 * XRQuadLayer - Component for WebXR quad composition layers.\n *\n * A quad layer renders content onto a flat rectangular surface positioned in\n * 3D space. The entity's transform controls the layer's world position and\n * orientation. In XR, the content is composited by the device's native\n * compositor for sharper rendering and lower latency.\n *\n * Outside XR, the layer content is displayed on a textured plane mesh as a\n * fallback.\n *\n * @category Layers\n */\nexport const XRQuadLayer = createComponent(\n 'XRQuadLayer',\n {\n /** Width of the quad in meters. */\n width: { type: Types.Float32, default: 1.0 },\n /** Height of the quad in meters. */\n height: { type: Types.Float32, default: 1.0 },\n /** Width of the layer's render target in pixels. */\n pixelWidth: { type: Types.Int16, default: 1024 },\n /** Height of the layer's render target in pixels. */\n pixelHeight: { type: Types.Int16, default: 1024 },\n /**\n * Callback invoked each frame while the layer is visible and its render\n * surface is active.\n * The renderer's render target is already set; call\n * `renderer.render(scene, camera)` to draw into the layer.\n */\n renderCallback: { type: Types.Object, default: null },\n /** Enable stencil buffer on the layer's render target. */\n stencil: { type: Types.Boolean, default: false },\n },\n 'Quad composition layer for WebXR',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;AAYG;AACI,MAAM,WAAW,GAAG,eAAe,CACxC,aAAa,EACb;;IAEE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAE5C,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAE7C,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;;IAEhD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;AACjD;;;;;AAKG;IACH,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;;IAErD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CACjD,EACD,kCAAkC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-component-applier.js","sources":["../../src/level/level-component-applier.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"level-component-applier.js","sources":["../../src/level/level-component-applier.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 { AnySchema, Component } from 'elics';\nimport { getComponentEditorMetadata } from '../ecs/component-editor-metadata.js';\nimport { ComponentRegistry, Types } from '../ecs/component.js';\nimport type { Entity } from '../ecs/entity.js';\nimport type { World } from '../ecs/world.js';\nimport { PanelUI } from '../ui/index.js';\n\n/** Canonical component id prefix used by native scene JSON. */\nexport const LEVEL_COMPONENT_PREFIX = 'com.iwsdk.components.';\n\nconst LEVEL_COMPONENT_ALIASES: Record<string, string> = {\n Interactable: 'RayInteractable',\n};\n\nlet didWarnInteractableAlias = false;\n\nexport interface LevelComponentApplyOptions {\n allowUnprefixedComponents?: boolean;\n nodeId?: string;\n resolveEntityReference?: (reference: unknown) => Entity | undefined;\n strict?: boolean;\n}\n\nexport class LevelComponentApplier {\n static applyComponents(\n entity: Entity,\n components: Record<string, unknown>,\n world: World,\n options: LevelComponentApplyOptions = {},\n ): void {\n const allComponents = ComponentRegistry.getAllComponents();\n this.handlePanelComponents(entity, components, world, options);\n\n Object.entries(components).forEach(([componentName, componentData]) => {\n const hasPackagePrefix = componentName.startsWith(LEVEL_COMPONENT_PREFIX);\n const allowUnprefixed =\n options.allowUnprefixedComponents === true || options.strict === true;\n if (!hasPackagePrefix && !allowUnprefixed) {\n return;\n }\n\n const componentKey = stripComponentPrefix(componentName);\n const targetId = normalizeComponentId(componentKey, allComponents, true);\n if (targetId === 'PanelUI') {\n return;\n }\n\n const component = allComponents.find((comp) => comp.id === targetId);\n if (component) {\n const componentProps = this.mapComponentDataToProps(\n component,\n componentData,\n options,\n );\n if (!component.bitmask) {\n world.registerComponent(component);\n }\n if (\n entity.hasComponent(component) &&\n getComponentEditorMetadata(component)?.intrinsic === true\n ) {\n this.updateComponent(entity, component, componentProps);\n } else {\n entity.addComponent(component, componentProps);\n }\n } else if (options.strict) {\n throw new Error(\n withSceneComponentContext(\n `Unknown component \"${componentName}\". Available components: ${allComponents\n .map((comp) => comp.id)\n .join(', ')}`,\n options.nodeId,\n componentName,\n ),\n );\n } else if (componentName.startsWith(LEVEL_COMPONENT_PREFIX)) {\n console.warn(\n `Component \"${componentName}\" not found in registry. Available components:`,\n allComponents.map((comp) => comp.id),\n );\n }\n });\n }\n\n static removeComponents(\n entity: Entity,\n components: Record<string, unknown> | undefined,\n ): void {\n if (components == null) {\n return;\n }\n const allComponents = ComponentRegistry.getAllComponents();\n for (const componentName of Object.keys(components)) {\n const targetId = normalizeComponentId(\n stripComponentPrefix(componentName),\n allComponents,\n );\n const component = allComponents.find((entry) => entry.id === targetId);\n if (component && entity.hasComponent(component)) {\n if (getComponentEditorMetadata(component)?.intrinsic === true) {\n if (component.id === 'Visibility') {\n (entity as any).setValue(component, 'isVisible', true);\n }\n } else {\n entity.removeComponent(component);\n }\n }\n }\n }\n\n private static updateComponent(\n entity: Entity,\n component: Component<AnySchema>,\n props: Record<string, unknown>,\n ): void {\n for (const [key, value] of Object.entries(props)) {\n const field = component.schema[key];\n if (field == null) {\n continue;\n }\n if (\n field.type === Types.Vec2 ||\n field.type === Types.Vec3 ||\n field.type === Types.Vec4 ||\n field.type === Types.Color\n ) {\n if (Array.isArray(value)) {\n (entity as any).getVectorView(component, key).set(value);\n }\n continue;\n }\n (entity as any).setValue(component, key, value);\n }\n }\n\n private static mapComponentDataToProps(\n component: Component<AnySchema>,\n componentData: unknown,\n options: LevelComponentApplyOptions,\n ): Record<string, unknown> {\n if (!isRecord(componentData)) {\n return {};\n }\n\n const props: Record<string, unknown> = {};\n Object.entries(componentData).forEach(([key, fieldData]) => {\n const field = component.schema[key] as\n | Record<string, unknown>\n | undefined;\n if (!field) {\n return;\n }\n\n if (isRecord(fieldData)) {\n if (\n (field.type === Types.Entity || field.widget === 'entity') &&\n isSceneEntityReference(fieldData)\n ) {\n const referencedEntity = options.resolveEntityReference?.(fieldData);\n if (referencedEntity == null) {\n if (options.strict) {\n throw new Error(\n `Unable to resolve entity reference ${JSON.stringify(fieldData)}`,\n );\n }\n props[key] = fieldData;\n } else {\n props[key] =\n field.type === Types.Entity\n ? referencedEntity\n : referencedEntity.object3D;\n }\n } else if (field.type === Types.Enum && 'alias' in fieldData) {\n props[key] = fieldData.alias;\n } else if ('value' in fieldData) {\n props[key] = fieldData.value;\n } else {\n props[key] = fieldData;\n }\n } else {\n props[key] = fieldData;\n }\n });\n return props;\n }\n\n private static handlePanelComponents(\n entity: Entity,\n components: Record<string, unknown>,\n world: World,\n options: LevelComponentApplyOptions,\n ): void {\n const panelComponentName =\n canUseUnprefixedComponents(options) && components.PanelUI != null\n ? 'PanelUI'\n : `${LEVEL_COMPONENT_PREFIX}PanelUI`;\n const panelComponent =\n panelComponentName === 'PanelUI'\n ? components.PanelUI\n : components[`${LEVEL_COMPONENT_PREFIX}PanelUI`];\n const resolvedPanelComponent = panelComponent;\n\n if (!isRecord(resolvedPanelComponent)) {\n return;\n }\n\n const props = this.mapComponentDataToProps(\n PanelUI,\n resolvedPanelComponent,\n options,\n );\n if (typeof props.config !== 'string' || props.config.length === 0) {\n return;\n }\n\n if (!PanelUI.bitmask) {\n world.registerComponent(PanelUI);\n }\n entity.addComponent(PanelUI, {\n config: props.config,\n });\n }\n}\n\nfunction isSceneEntityReference(value: Record<string, unknown>): boolean {\n return (\n (value.type === 'node' && typeof value.id === 'string') ||\n (value.type === 'player-space' && typeof value.target === 'string') ||\n value.type === 'level-root'\n );\n}\n\nfunction canUseUnprefixedComponents(\n options: LevelComponentApplyOptions,\n): boolean {\n return options.allowUnprefixedComponents === true || options.strict === true;\n}\n\nfunction stripComponentPrefix(componentName: string): string {\n return componentName.startsWith(LEVEL_COMPONENT_PREFIX)\n ? componentName.slice(LEVEL_COMPONENT_PREFIX.length)\n : componentName;\n}\n\nfunction normalizeComponentId(\n componentId: string,\n components: readonly Component<AnySchema>[],\n warnDeprecatedAlias = false,\n): string {\n const targetId = components.some((component) => component.id === componentId)\n ? componentId\n : (LEVEL_COMPONENT_ALIASES[componentId] ?? componentId);\n\n if (\n targetId !== componentId &&\n warnDeprecatedAlias &&\n !didWarnInteractableAlias &&\n shouldEmitDevWarning()\n ) {\n didWarnInteractableAlias = true;\n console.warn(\n '[IWSDK] `Interactable` is deprecated; use `RayInteractable` instead. See https://iwsdk.dev/api/core/variables/Interactable.html',\n );\n }\n return targetId;\n}\n\nfunction shouldEmitDevWarning(): boolean {\n return (import.meta as any).env?.DEV !== false;\n}\n\n/** @internal */\nexport function resetLevelComponentWarningStateForTests(): void {\n didWarnInteractableAlias = false;\n}\nfunction withSceneComponentContext(\n message: string,\n nodeId: string | undefined,\n componentName: string,\n): string {\n return nodeId == null\n ? `Component \"${componentName}\": ${message}`\n : `Scene node \"${nodeId}\" component \"${componentName}\": ${message}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-player-rig.js","sources":["../../src/level/level-player-rig.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"level-player-rig.js","sources":["../../src/level/level-player-rig.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 SceneBuiltinEntity,\n ScenePlayerRig,\n ScenePlayerTarget,\n SceneTransform,\n} from '@iwsdk/scene-composition';\nimport type { Entity } from '../ecs/entity.js';\nimport type { World } from '../ecs/world.js';\nimport { MathUtils } from '../runtime/index.js';\nimport { LevelComponentApplier } from './level-component-applier.js';\nimport { applySceneTransform } from './level-scene-object.js';\n\ninterface AppliedPlayerRigState {\n baseline: SceneTransform | undefined;\n resolveEntityReference?: (reference: unknown) => Entity | undefined;\n rig?: ScenePlayerRig;\n}\n\nexport interface ApplyScenePlayerRigOptions {\n resolveEntityReference?: (reference: unknown) => Entity | undefined;\n}\n\nconst appliedPlayerRigs = new WeakMap<World, AppliedPlayerRigState>();\n\n/** Reconcile scene-authored components on persistent player-rig entities. */\nexport function applyScenePlayerRig(\n world: World,\n nextRig: ScenePlayerRig | undefined,\n options: ApplyScenePlayerRigOptions = {},\n): void {\n const state = appliedPlayerRigs.get(world) ?? createPlayerRigState(world);\n const previousRig = state.rig;\n removePlayerRigComponents(world, previousRig);\n restorePlayerTransform(world, state.baseline);\n try {\n applyPlayerRig(world, nextRig, options.resolveEntityReference);\n syncLocomotionPlayerPosition(world);\n state.rig = nextRig == null ? undefined : structuredClone(nextRig);\n state.resolveEntityReference = options.resolveEntityReference;\n appliedPlayerRigs.set(world, state);\n } catch (error) {\n removePlayerRigComponents(world, nextRig);\n restorePlayerTransform(world, state.baseline);\n applyPlayerRig(world, previousRig, state.resolveEntityReference);\n syncLocomotionPlayerPosition(world);\n throw error;\n }\n}\n\nfunction applyPlayerRig(\n world: World,\n rig: ScenePlayerRig | undefined,\n resolveEntityReference:\n | ((reference: unknown) => Entity | undefined)\n | undefined,\n): void {\n if (world.playerEntity?.object3D != null) {\n applySceneTransform(world.playerEntity.object3D, rig?.transform);\n }\n for (const [label, entity, descriptor] of playerRigTargets(world, rig)) {\n if (descriptor?.components == null) {\n continue;\n }\n LevelComponentApplier.applyComponents(\n entity,\n descriptor.components,\n world,\n {\n nodeId: `$player/${label}`,\n resolveEntityReference,\n strict: true,\n },\n );\n }\n}\n\nfunction createPlayerRigState(world: World): AppliedPlayerRigState {\n return {\n baseline:\n world.playerEntity?.object3D == null\n ? undefined\n : captureTransform(world.playerEntity),\n };\n}\n\nfunction captureTransform(entity: Entity): SceneTransform {\n const object = entity.object3D!;\n return {\n position: object.position.toArray(),\n rotationDeg: [\n MathUtils.radToDeg(object.rotation.x),\n MathUtils.radToDeg(object.rotation.y),\n MathUtils.radToDeg(object.rotation.z),\n ],\n scale: object.scale.toArray(),\n };\n}\n\nfunction restorePlayerTransform(\n world: World,\n baseline: SceneTransform | undefined,\n) {\n if (world.playerEntity?.object3D != null && baseline != null) {\n applySceneTransform(world.playerEntity.object3D, baseline);\n }\n}\n\nfunction syncLocomotionPlayerPosition(world: World): void {\n const player = world.playerEntity?.object3D;\n if (player == null) {\n return;\n }\n world.setAuthoredPlayerPosition(player.position);\n}\n\nfunction removePlayerRigComponents(\n world: World,\n rig: ScenePlayerRig | undefined,\n): void {\n for (const [, entity, descriptor] of playerRigTargets(world, rig)) {\n LevelComponentApplier.removeComponents(entity, descriptor?.components);\n }\n}\n\nfunction playerRigTargets(\n world: World,\n rig: ScenePlayerRig | undefined,\n): Array<[ScenePlayerTarget, Entity, SceneBuiltinEntity | undefined]> {\n const spaces = world.playerSpaceEntities;\n const targets: Array<\n [ScenePlayerTarget, Entity | undefined, SceneBuiltinEntity | undefined]\n > = [\n ['player', world.playerEntity, rig],\n ['camera', world.cameraEntity, rig?.camera],\n ['head', world.playerHeadEntity, rig?.head],\n ['left-target-ray', spaces?.raySpaces.left, rig?.leftTargetRay],\n ['right-target-ray', spaces?.raySpaces.right, rig?.rightTargetRay],\n ['left-grip', spaces?.gripSpaces.left, rig?.leftGrip],\n ['right-grip', spaces?.gripSpaces.right, rig?.rightGrip],\n ];\n return targets.filter(\n (\n entry,\n ): entry is [ScenePlayerTarget, Entity, SceneBuiltinEntity | undefined] =>\n entry[1]?.object3D != null,\n );\n}\n\n/** Resolve one persistent runtime player-space entity. */\nexport function getScenePlayerTargetEntity(\n world: World,\n target: ScenePlayerTarget,\n): Entity {\n const match = playerRigTargets(world, undefined).find(\n ([candidate]) => candidate === target,\n );\n if (match == null) {\n throw new Error(`Player-space target \"${target}\" is unavailable`);\n }\n return match[1];\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-root.js","sources":["../../src/level/level-root.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"level-root.js","sources":["../../src/level/level-root.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 { createComponent } from '../ecs/component.js';\n/**\n * Marker component placed on the active level's root entity.\n *\n * @remarks\n * Systems can scope level‑wide behavior by requiring {@link LevelRoot} in their queries\n * to avoid scanning all level entities.\n *\n * @category Scene\n * @hideineditor\n */\nexport const LevelRoot = createComponent(\n 'LevelRoot',\n {},\n 'Marker component attached to level root entities',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;AASG;AACI,MAAM,SAAS,GAAG,eAAe,CACtC,WAAW,EACX,EAAE,EACF,kDAAkD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-scene-environment.js","sources":["../../src/level/level-scene-environment.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"level-scene-environment.js","sources":["../../src/level/level-scene-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 type { SceneEnvironment } from '@iwsdk/scene-composition';\nimport {\n ACESFilmicToneMapping,\n BasicShadowMap,\n CineonToneMapping,\n Fog,\n FogExp2,\n LinearToneMapping,\n NoToneMapping,\n PCFShadowMap,\n PCFSoftShadowMap,\n ReinhardToneMapping,\n Scene,\n WebGLRenderer,\n} from '../runtime/index.js';\n\nexport interface SceneEnvironmentState {\n fog: Scene['fog'];\n shadows: boolean;\n shadowMapType: WebGLRenderer['shadowMap']['type'];\n toneMapping: WebGLRenderer['toneMapping'];\n toneMappingExposure: number;\n userDataEnvironment: unknown;\n}\n\n/** Capture every renderer-global value changed by applySceneEnvironment. */\nexport function captureSceneEnvironment(\n scene: Scene,\n renderer: WebGLRenderer,\n): SceneEnvironmentState {\n return {\n fog: scene.fog,\n shadows: renderer.shadowMap.enabled,\n shadowMapType: renderer.shadowMap.type,\n toneMapping: renderer.toneMapping,\n toneMappingExposure: renderer.toneMappingExposure,\n userDataEnvironment: scene.userData.iwsdkSceneEnvironment,\n };\n}\n\n/**\n * Atomically apply scene environment fields and return the exact prior state.\n *\n * A supplied base state supplies values for omitted fields, allowing a level swap\n * to replace the active authored environment without first detaching it.\n */\nexport function applySceneEnvironment(\n scene: Scene,\n renderer: WebGLRenderer,\n environment: SceneEnvironment | undefined,\n baseState?: SceneEnvironmentState,\n): SceneEnvironmentState {\n const previous = captureSceneEnvironment(scene, renderer);\n if (environment == null && baseState == null) {\n return previous;\n }\n const prepared = prepareSceneEnvironment(environment, baseState ?? previous);\n try {\n installSceneEnvironmentState(scene, renderer, prepared);\n } catch (error) {\n installSceneEnvironmentState(scene, renderer, previous);\n throw error;\n }\n return previous;\n}\n\n/** Restore a state captured before a staged or committed scene was applied. */\nexport function restoreSceneEnvironment(\n scene: Scene,\n renderer: WebGLRenderer,\n state: SceneEnvironmentState,\n): void {\n const current = captureSceneEnvironment(scene, renderer);\n try {\n installSceneEnvironmentState(scene, renderer, state);\n } catch (error) {\n installSceneEnvironmentState(scene, renderer, current);\n throw error;\n }\n}\n\nfunction prepareSceneEnvironment(\n environment: SceneEnvironment | undefined,\n base: SceneEnvironmentState,\n): SceneEnvironmentState {\n const state: SceneEnvironmentState = {\n ...base,\n userDataEnvironment:\n environment == null ? base.userDataEnvironment : cloneJson(environment),\n };\n if (environment?.fog?.type === 'linear') {\n state.fog = new Fog(\n environment.fog.color ?? '#000000',\n environment.fog.near,\n environment.fog.far,\n );\n } else if (environment?.fog?.type === 'exponential') {\n state.fog = new FogExp2(\n environment.fog.color ?? '#000000',\n environment.fog.density,\n );\n }\n if (environment?.toneMapping != null) {\n state.toneMapping = resolveToneMapping(environment.toneMapping);\n }\n if (environment?.exposure != null) {\n state.toneMappingExposure = environment.exposure;\n }\n if (environment?.shadows != null) {\n state.shadows = environment.shadows;\n }\n if (environment?.shadowMapType != null) {\n state.shadowMapType = resolveShadowMapType(environment.shadowMapType);\n }\n return state;\n}\n\nfunction installSceneEnvironmentState(\n scene: Scene,\n renderer: WebGLRenderer,\n state: SceneEnvironmentState,\n): void {\n scene.fog = state.fog;\n renderer.shadowMap.enabled = state.shadows;\n renderer.shadowMap.type = state.shadowMapType;\n renderer.toneMapping = state.toneMapping;\n renderer.toneMappingExposure = state.toneMappingExposure;\n if (state.userDataEnvironment === undefined) {\n delete scene.userData.iwsdkSceneEnvironment;\n } else {\n scene.userData.iwsdkSceneEnvironment = state.userDataEnvironment;\n }\n}\n\nfunction resolveShadowMapType(\n type: NonNullable<SceneEnvironment['shadowMapType']>,\n) {\n switch (type) {\n case 'basic':\n return BasicShadowMap;\n case 'pcf':\n return PCFShadowMap;\n case 'pcf-soft':\n return PCFSoftShadowMap;\n }\n}\n\nfunction resolveToneMapping(\n mode: NonNullable<SceneEnvironment['toneMapping']>,\n) {\n switch (mode) {\n case 'none':\n return NoToneMapping;\n case 'linear':\n return LinearToneMapping;\n case 'reinhard':\n return ReinhardToneMapping;\n case 'cineon':\n return CineonToneMapping;\n case 'aces':\n return ACESFilmicToneMapping;\n }\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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"}
|