@iwsdk/core 1.0.0-rc.0 → 1.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/asset/asset-manager.js.map +1 -1
  2. package/dist/asset/cache-manager.js.map +1 -1
  3. package/dist/asset/loaders/audio-loader.js.map +1 -1
  4. package/dist/asset/loaders/cached-asset-load.js.map +1 -1
  5. package/dist/asset/loaders/gltf-loader.js.map +1 -1
  6. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  7. package/dist/asset/loaders/texture-loader.js.map +1 -1
  8. package/dist/asset/loaders/uikitml-loader.js.map +1 -1
  9. package/dist/audio/audio-pool.js.map +1 -1
  10. package/dist/audio/audio-system.js.map +1 -1
  11. package/dist/audio/audio-utils.js.map +1 -1
  12. package/dist/audio/audio.js.map +1 -1
  13. package/dist/camera/camera-source.js.map +1 -1
  14. package/dist/camera/camera-system.js.map +1 -1
  15. package/dist/camera/camera-utils.js.map +1 -1
  16. package/dist/camera/types.js.map +1 -1
  17. package/dist/depth/depth-occludable.js.map +1 -1
  18. package/dist/depth/depth-sensing-system.js.map +1 -1
  19. package/dist/depth/depth-textures.js.map +1 -1
  20. package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
  21. package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
  22. package/dist/ecs/builtin-components.js.map +1 -1
  23. package/dist/ecs/component-editor-metadata.js.map +1 -1
  24. package/dist/ecs/component-manifest.js.map +1 -1
  25. package/dist/ecs/entity.js.map +1 -1
  26. package/dist/ecs/system.js.map +1 -1
  27. package/dist/ecs/world.js.map +1 -1
  28. package/dist/environment/dome-gradient.js.map +1 -1
  29. package/dist/environment/dome-texture.js.map +1 -1
  30. package/dist/environment/environment-system.js.map +1 -1
  31. package/dist/environment/gradient-environment.js.map +1 -1
  32. package/dist/environment/ibl-gradient.js.map +1 -1
  33. package/dist/environment/ibl-texture.js.map +1 -1
  34. package/dist/environment/scene-ar-environment.js.map +1 -1
  35. package/dist/environment-raycast/environment-raycast.js.map +1 -1
  36. package/dist/environment-raycast/raycast-target.js.map +1 -1
  37. package/dist/gaze/gaze-system.d.ts +207 -0
  38. package/dist/gaze/gaze-system.d.ts.map +1 -0
  39. package/dist/gaze/gaze-system.js +168 -0
  40. package/dist/gaze/gaze-system.js.map +1 -0
  41. package/dist/gaze/index.d.ts +8 -0
  42. package/dist/gaze/index.d.ts.map +1 -0
  43. package/dist/grab/distance-grabbable.js.map +1 -1
  44. package/dist/grab/grab-helpers.d.ts +7 -6
  45. package/dist/grab/grab-helpers.d.ts.map +1 -1
  46. package/dist/grab/grab-helpers.js +12 -7
  47. package/dist/grab/grab-helpers.js.map +1 -1
  48. package/dist/grab/grab-system.d.ts.map +1 -1
  49. package/dist/grab/grab-system.js +2 -1
  50. package/dist/grab/grab-system.js.map +1 -1
  51. package/dist/grab/grab-warnings.js.map +1 -1
  52. package/dist/grab/grabbed.js.map +1 -1
  53. package/dist/grab/handles.d.ts +10 -1
  54. package/dist/grab/handles.d.ts.map +1 -1
  55. package/dist/grab/handles.js +29 -6
  56. package/dist/grab/handles.js.map +1 -1
  57. package/dist/grab/index.js.map +1 -1
  58. package/dist/grab/one-hand-grabbable.js.map +1 -1
  59. package/dist/grab/pointer-events-patch.js.map +1 -1
  60. package/dist/grab/two-hands-grabbable.js.map +1 -1
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +4 -3
  64. package/dist/index.js.map +1 -1
  65. package/dist/init/browser-camera.js.map +1 -1
  66. package/dist/init/player-camera.js.map +1 -1
  67. package/dist/init/session-grant.js.map +1 -1
  68. package/dist/init/world-initializer.d.ts +49 -0
  69. package/dist/init/world-initializer.d.ts.map +1 -1
  70. package/dist/init/world-initializer.js +23 -11
  71. package/dist/init/world-initializer.js.map +1 -1
  72. package/dist/init/xr.d.ts +14 -0
  73. package/dist/init/xr.d.ts.map +1 -1
  74. package/dist/init/xr.js +19 -0
  75. package/dist/init/xr.js.map +1 -1
  76. package/dist/input/canvas-pointer-system.js.map +1 -1
  77. package/dist/input/input-actions.js.map +1 -1
  78. package/dist/input/input-manager.js.map +1 -1
  79. package/dist/input/input-system.d.ts +3 -0
  80. package/dist/input/input-system.d.ts.map +1 -1
  81. package/dist/input/input-system.js +72 -6
  82. package/dist/input/input-system.js.map +1 -1
  83. package/dist/input/state-tags.d.ts.map +1 -1
  84. package/dist/input/state-tags.js +2 -0
  85. package/dist/input/state-tags.js.map +1 -1
  86. package/dist/input/stateful-browser-gamepad.js.map +1 -1
  87. package/dist/input/stateful-keyboard.js.map +1 -1
  88. package/dist/layers/xr-cylinder-layer.js.map +1 -1
  89. package/dist/layers/xr-layer-init.js.map +1 -1
  90. package/dist/layers/xr-layer-state.js.map +1 -1
  91. package/dist/layers/xr-layer-system.js.map +1 -1
  92. package/dist/layers/xr-layer-transform.js.map +1 -1
  93. package/dist/layers/xr-quad-layer.js.map +1 -1
  94. package/dist/level/level-component-applier.js.map +1 -1
  95. package/dist/level/level-player-rig.js.map +1 -1
  96. package/dist/level/level-root.js.map +1 -1
  97. package/dist/level/level-scene-environment.js.map +1 -1
  98. package/dist/level/level-scene-json-importer.js.map +1 -1
  99. package/dist/level/level-scene-material.js.map +1 -1
  100. package/dist/level/level-scene-object.js.map +1 -1
  101. package/dist/level/level-scene-primitive.js.map +1 -1
  102. package/dist/level/level-system.js.map +1 -1
  103. package/dist/level/level-tag.js.map +1 -1
  104. package/dist/lighting/light-binding.js.map +1 -1
  105. package/dist/lighting/light-components.js.map +1 -1
  106. package/dist/lighting/light-system.js.map +1 -1
  107. package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
  108. package/dist/locomotion/locomotion-environment.js.map +1 -1
  109. package/dist/locomotion/locomotion-input-provider.js.map +1 -1
  110. package/dist/locomotion/locomotion.js.map +1 -1
  111. package/dist/locomotion/materials/line.js.map +1 -1
  112. package/dist/locomotion/slide.js.map +1 -1
  113. package/dist/locomotion/teleport.js.map +1 -1
  114. package/dist/locomotion/turn.js.map +1 -1
  115. package/dist/mcp/ecs-debug-tools.js.map +1 -1
  116. package/dist/mcp/mcp-runtime.js.map +1 -1
  117. package/dist/mcp/scene-tools.js.map +1 -1
  118. package/dist/mcp/ui-debug-tools.js.map +1 -1
  119. package/dist/physics/physics-runtime.js.map +1 -1
  120. package/dist/physics/physics-system.js.map +1 -1
  121. package/dist/physics/physics-transport.js.map +1 -1
  122. package/dist/physics/physics-worker-protocol.js.map +1 -1
  123. package/dist/physics/physics-worker-utils.js.map +1 -1
  124. package/dist/physics/physics-worker.js.map +1 -1
  125. package/dist/physics/physicsBody.js.map +1 -1
  126. package/dist/physics/physicsManipulation.js.map +1 -1
  127. package/dist/physics/physicsShape.js.map +1 -1
  128. package/dist/physics/utils.js.map +1 -1
  129. package/dist/project/normalize.d.ts.map +1 -1
  130. package/dist/project/normalize.js +11 -0
  131. package/dist/project/normalize.js.map +1 -1
  132. package/dist/project/paths.js.map +1 -1
  133. package/dist/project/types.d.ts +32 -2
  134. package/dist/project/types.d.ts.map +1 -1
  135. package/dist/project/types.js.map +1 -1
  136. package/dist/project/validation.d.ts.map +1 -1
  137. package/dist/project/validation.js +65 -1
  138. package/dist/project/validation.js.map +1 -1
  139. package/dist/runtime/three.js.map +1 -1
  140. package/dist/scene-understanding/anchor.js.map +1 -1
  141. package/dist/scene-understanding/mesh.js.map +1 -1
  142. package/dist/scene-understanding/plane.js.map +1 -1
  143. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  144. package/dist/schemas/iwsdk-project.v1.schema.json +45 -3
  145. package/dist/transform/synced-euler.js.map +1 -1
  146. package/dist/transform/synced-quaternion.js.map +1 -1
  147. package/dist/transform/synced-vector3.js.map +1 -1
  148. package/dist/transform/transform-component.js.map +1 -1
  149. package/dist/transform/transform-utils.js.map +1 -1
  150. package/dist/transform/transform.js.map +1 -1
  151. package/dist/ui/document.js.map +1 -1
  152. package/dist/ui/follow-component.js.map +1 -1
  153. package/dist/ui/follow.js.map +1 -1
  154. package/dist/ui/panel-components.js.map +1 -1
  155. package/dist/ui/screenspace-component.js.map +1 -1
  156. package/dist/ui/screenspace.js.map +1 -1
  157. package/dist/ui/ui.js.map +1 -1
  158. package/dist/ui/uikitml-asset.js.map +1 -1
  159. package/dist/ui/uikitml.js.map +1 -1
  160. package/dist/version.d.ts +1 -1
  161. package/dist/version.js +1 -1
  162. package/dist/version.js.map +1 -1
  163. package/dist/visibility/visibility-component.js.map +1 -1
  164. package/dist/visibility/visibility.js.map +1 -1
  165. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"environment-system.js","sources":["../../src/environment/environment-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment-system.js","sources":["../../src/environment/environment-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 { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment.js';\nimport { AssetManager, CacheManager } from '../asset/index.js';\nimport { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\n// Import directly from the subfile — not the `../level/index.js` barrel — to\n// avoid a value-level import cycle: level/index.js re-exports level-system.ts,\n// which imports the environment barrel, which re-exports environment-system.ts\n// (currently being evaluated). The bundler resolves this cycle by emitting\n// EnvironmentSystem before dome-texture/dome-gradient/ibl-* are defined,\n// leaving the required[] arrays holding `undefined.bitmask` crashes.\nimport { LevelRoot } from '../level/level-root.js';\nimport {\n BackSide,\n Color,\n Mesh,\n PMREMGenerator,\n WebGLRenderTarget,\n ShaderMaterial,\n SphereGeometry,\n Texture,\n EquirectangularReflectionMapping,\n} from '../runtime/index.js';\nimport { DomeGradient } from './dome-gradient.js';\nimport { DomeTexture } from './dome-texture.js';\nimport {\n GradientEnvironment,\n createGradientMaterial,\n} from './gradient-environment.js';\nimport { IBLGradient } from './ibl-gradient.js';\nimport { IBLTexture } from './ibl-texture.js';\nimport { SceneAREnvironmentController } from './scene-ar-environment.js';\n\n/**\n * Compute sky/equator/ground hex colors from RGB views, reusing a single shared\n * `Color` scratch object (`out`) instead of allocating one `Color` per channel\n * per frame. Each `getHex()` is read before the next `setRGB()` overwrites\n * `out`, so the shared instance is safe.\n */\nexport function computeGradientHexes(\n out: Color,\n sky: ArrayLike<number>,\n equator: ArrayLike<number>,\n ground: ArrayLike<number>,\n): { skyHex: number; equatorHex: number; groundHex: number } {\n const skyHex = out.setRGB(sky[0], sky[1], sky[2]).getHex();\n const equatorHex = out.setRGB(equator[0], equator[1], equator[2]).getHex();\n const groundHex = out.setRGB(ground[0], ground[1], ground[2]).getHex();\n return { skyHex, equatorHex, groundHex };\n}\n\ninterface EnvState {\n backgroundTexture?: Texture;\n environmentTarget?: WebGLRenderTarget;\n backgroundSource?: string;\n environmentSource?: string;\n gradientDome?: Mesh;\n gradientEnvironmentScene?: GradientEnvironment;\n gradientEnvironmentMesh?: Mesh;\n}\n\n/**\n * Unified background and image‑based lighting system.\n *\n * @remarks\n * - {@link DomeTexture} writes an HDR/LDR equirectangular texture to `scene.background`; {@link DomeGradient} renders a procedural, clipping-proof sky mesh.\n * - IBL is driven by {@link IBLTexture} (\"room\" or HDR/LDR equirect via PMREM) or {@link IBLGradient} (PMREM of a gradient scene) and writes to `scene.environment`.\n * - Rotation and intensity hooks forward to `scene.backgroundRotation`, `scene.backgroundIntensity`, and `scene.environmentRotation`, `scene.environmentIntensity`.\n * - AR sessions always hide authored backgrounds for passthrough while retaining IBL.\n * - PMREM targets are regenerated only when sources change; the dome mesh and geometry are reused.\n *\n * @category Environment & Lighting\n * @example\n * ```ts\n * // Background: HDR skybox; IBL: Room environment\n * const root = world.activeLevel!.value;\n * root.addComponent(DomeTexture, { src: '/envs/sky.hdr', intensity: 0.9 });\n * root.addComponent(IBLTexture, { src: 'room', intensity: 1.2 });\n *\n * // Rotate background 45° around Y; rotate IBL 90°\n * root.setValue(DomeTexture, 'rotation', [0, Math.PI / 4, 0]);\n * root.setValue(IBLTexture, 'rotation', [0, Math.PI / 2, 0]);\n * root.setValue(DomeTexture, '_needsUpdate', true);\n * root.setValue(IBLTexture, '_needsUpdate', true);\n * ```\n */\nexport class EnvironmentSystem extends createSystem({\n domeTextures: { required: [DomeTexture, LevelRoot] },\n domeGradients: { required: [DomeGradient, LevelRoot] },\n iblTextures: { required: [IBLTexture, LevelRoot] },\n iblGradients: { required: [IBLGradient, LevelRoot] },\n}) {\n private state: EnvState = {};\n private pmrem!: PMREMGenerator;\n private gradientGeometry?: SphereGeometry;\n private tmpColor: Color = new Color();\n private recenterYawOffset: number = 0;\n private resetListenerCleanup: (() => void) | null = null;\n private needsResetListener: boolean = false;\n private arEnvironment!: SceneAREnvironmentController;\n\n init(): void {\n this.pmrem = new PMREMGenerator(this.renderer);\n this.arEnvironment = new SceneAREnvironmentController(\n this.scene,\n this.renderer,\n );\n this.cleanupFuncs.push(() => {\n this.arEnvironment.restore();\n this.pmrem.dispose();\n this.state.environmentTarget?.dispose();\n this.state.environmentTarget = undefined;\n this.clearGradientDome();\n this.clearGradientEnvironment();\n this.gradientGeometry?.dispose();\n this.gradientGeometry = undefined;\n });\n\n // XR background toggle\n this.cleanupFuncs.push(\n this.visibilityState.subscribe(() => this.updateSceneARMode()),\n );\n\n // XR recenter compensation\n this.xrManager.addEventListener('sessionstart', this.onXRSessionStart);\n this.xrManager.addEventListener('sessionend', this.onXRSessionEnd);\n this.cleanupFuncs.push(() => {\n this.xrManager.removeEventListener('sessionstart', this.onXRSessionStart);\n this.xrManager.removeEventListener('sessionend', this.onXRSessionEnd);\n this.resetListenerCleanup?.();\n this.resetListenerCleanup = null;\n });\n }\n\n update(): void {\n // Deferred reset listener attachment\n if (this.needsResetListener) {\n const refSpace = this.xrManager.getReferenceSpace();\n if (refSpace) {\n this.attachResetListener(refSpace);\n this.needsResetListener = false;\n }\n }\n\n // Choose background source: DomeTexture > DomeGradient\n let backgroundEntity: Entity | undefined;\n for (const e of this.queries.domeTextures.entities) {\n backgroundEntity = e;\n break;\n }\n if (!backgroundEntity) {\n for (const e of this.queries.domeGradients.entities) {\n backgroundEntity = e;\n break;\n }\n }\n\n if (backgroundEntity) {\n this.processBackground(backgroundEntity);\n } else {\n this.clearBackgroundSource();\n }\n\n // Choose IBL source: IBLTexture > IBLGradient\n let iblEntity: Entity | undefined;\n for (const e of this.queries.iblTextures.entities) {\n iblEntity = e;\n break;\n }\n if (!iblEntity) {\n for (const e of this.queries.iblGradients.entities) {\n iblEntity = e;\n break;\n }\n }\n\n if (iblEntity) {\n this.processIBL(iblEntity);\n } else {\n this.clearIBLSource();\n }\n\n this.updateSceneARMode();\n }\n\n // Background handling\n private async processBackground(entity: Entity): Promise<void> {\n try {\n if (entity.hasComponent(DomeTexture)) {\n const needs = entity.getValue(DomeTexture, '_needsUpdate');\n if (needs) {\n const changed = this.hasDomeTextureBackgroundChanged(entity);\n if (changed) {\n await this.updateDomeTextureBackground(entity);\n }\n this.updateBackgroundProps(entity);\n entity.setValue(DomeTexture, '_needsUpdate', false);\n }\n } else if (entity.hasComponent(DomeGradient)) {\n const needs = entity.getValue(DomeGradient, '_needsUpdate');\n if (needs) {\n await this.updateDomeGradient(entity, /*forIBL*/ false);\n entity.setValue(DomeGradient, '_needsUpdate', false);\n }\n }\n } catch (e) {\n console.error('[EnvironmentSystem] Failed background update:', e);\n }\n }\n\n private hasDomeTextureBackgroundChanged(entity: Entity): boolean {\n const src = entity.getValue(DomeTexture, 'src') || '';\n const changed = src !== this.state.backgroundSource;\n if (changed) {\n this.state.backgroundSource = src;\n }\n return changed;\n }\n\n private async updateDomeTextureBackground(entity: Entity): Promise<void> {\n const src = entity.getValue(DomeTexture, 'src') || '';\n if (!src) {\n this.scene.background = null;\n return;\n }\n const lower = src.toLowerCase();\n const isHDR = lower.endsWith('.hdr') || lower.endsWith('.exr');\n const url = CacheManager.resolveUrl(src);\n const texture = isHDR\n ? await AssetManager.loadHDRTexture(url)\n : await AssetManager.loadTexture(url);\n this.state.backgroundTexture = texture;\n // For LDR equirect backgrounds, ensure world-locked mapping; HDR/EXR already mapped by loader\n if (!isHDR) {\n texture.mapping = EquirectangularReflectionMapping;\n }\n this.scene.background = texture;\n }\n\n private updateBackgroundProps(entity: Entity): void {\n const blurriness = entity.getValue(DomeTexture, 'blurriness') ?? 0;\n const intensity = entity.getValue(DomeTexture, 'intensity') ?? 1;\n const rot = entity.getVectorView(DomeTexture, 'rotation');\n this.scene.backgroundBlurriness = blurriness;\n this.scene.backgroundIntensity = intensity;\n if (rot) {\n this.scene.backgroundRotation?.set(\n rot[0] || 0,\n (rot[1] || 0) + this.recenterYawOffset,\n rot[2] || 0,\n );\n }\n }\n\n private async updateDomeGradient(\n entity: Entity,\n forIBL: boolean,\n ): Promise<void> {\n const skyV = entity.getVectorView(DomeGradient, 'sky');\n const equatorV = entity.getVectorView(DomeGradient, 'equator');\n const groundV = entity.getVectorView(DomeGradient, 'ground');\n const intensity = entity.getValue(DomeGradient, 'intensity') || 1.0;\n\n const skyHex = this.tmpColor.setRGB(skyV[0], skyV[1], skyV[2]).getHex();\n const equatorHex = this.tmpColor\n .setRGB(equatorV[0], equatorV[1], equatorV[2])\n .getHex();\n const groundHex = this.tmpColor\n .setRGB(groundV[0], groundV[1], groundV[2])\n .getHex();\n\n if (!forIBL) {\n // Background gradient dome mesh\n this.ensureGradientDome(skyHex, equatorHex, groundHex, intensity);\n if (this.state.gradientDome) {\n this.state.gradientDome.userData.iwsdkSceneDomeGradient = {\n equator: Array.from(equatorV),\n ground: Array.from(groundV),\n intensity,\n sky: Array.from(skyV),\n };\n }\n }\n }\n\n // IBL handling\n private async processIBL(entity: Entity): Promise<void> {\n try {\n if (entity.hasComponent(IBLTexture)) {\n const needs = entity.getValue(IBLTexture, '_needsUpdate');\n if (needs) {\n const changed = this.hasIBLTextureChanged(entity);\n if (changed) {\n await this.updateIBLTexture(entity);\n }\n this.updateIBLProps(entity);\n entity.setValue(IBLTexture, '_needsUpdate', false);\n }\n } else if (entity.hasComponent(IBLGradient)) {\n const needs = entity.getValue(IBLGradient, '_needsUpdate');\n if (needs) {\n await this.updateIBLGradient(entity);\n entity.setValue(IBLGradient, '_needsUpdate', false);\n }\n }\n } catch (e) {\n console.error('[EnvironmentSystem] Failed IBL update:', e);\n }\n }\n\n private hasIBLTextureChanged(entity: Entity): boolean {\n const src = entity.getValue(IBLTexture, 'src') || '';\n const changed = src !== this.state.environmentSource;\n if (changed) {\n this.state.environmentSource = src;\n }\n return changed;\n }\n\n private async updateIBLTexture(entity: Entity): Promise<void> {\n const src = (entity.getValue(IBLTexture, 'src') || '').trim();\n if (!src) {\n this.setEnvironment(null);\n return;\n }\n if (src === 'room') {\n // Build RoomEnvironment scene and PMREM it\n const room = new RoomEnvironment();\n const target = this.pmrem.fromScene(room);\n room.dispose?.();\n this.setEnvironment(target);\n return;\n }\n const lower2 = src.toLowerCase();\n const isHDR = lower2.endsWith('.hdr') || lower2.endsWith('.exr');\n const url = CacheManager.resolveUrl(src);\n const tex = isHDR\n ? await AssetManager.loadHDRTexture(url)\n : await AssetManager.loadTexture(url);\n const target = this.pmrem.fromEquirectangular(tex);\n this.setEnvironment(target);\n }\n\n private updateIBLProps(entity: Entity): void {\n const intensity = entity.getValue(IBLTexture, 'intensity') ?? 1;\n const rot = entity.getVectorView(IBLTexture, 'rotation');\n this.scene.environmentIntensity = intensity;\n if (rot) {\n this.scene.environmentRotation?.set(\n rot[0] || 0,\n (rot[1] || 0) + this.recenterYawOffset,\n rot[2] || 0,\n );\n }\n }\n\n private async updateIBLGradient(entity: Entity): Promise<void> {\n const skyV = entity.getVectorView(IBLGradient, 'sky');\n const equatorV = entity.getVectorView(IBLGradient, 'equator');\n const groundV = entity.getVectorView(IBLGradient, 'ground');\n const intensity = entity.getValue(IBLGradient, 'intensity') || 1.0;\n // Reuse the shared scratch Color instead of allocating three new Color\n // objects every frame (updateDomeGradient already uses this.tmpColor).\n const { skyHex, equatorHex, groundHex } = computeGradientHexes(\n this.tmpColor,\n skyV,\n equatorV,\n groundV,\n );\n\n let gradientScene = this.state.gradientEnvironmentScene;\n if (!gradientScene) {\n gradientScene = new GradientEnvironment(\n skyHex,\n equatorHex,\n groundHex,\n intensity,\n );\n this.state.gradientEnvironmentScene = gradientScene;\n // Cache mesh for uniform updates\n this.state.gradientEnvironmentMesh = gradientScene.children.find(\n (o): o is Mesh => o instanceof Mesh,\n );\n } else {\n const mat = this.state.gradientEnvironmentMesh?.material as\n | ShaderMaterial\n | undefined;\n if (mat) {\n mat.uniforms.skyColor.value.setHex(skyHex).multiplyScalar(intensity);\n mat.uniforms.equatorColor.value\n .setHex(equatorHex)\n .multiplyScalar(intensity);\n mat.uniforms.groundColor.value\n .setHex(groundHex)\n .multiplyScalar(intensity);\n }\n }\n\n const target = this.pmrem.fromScene(gradientScene);\n target.texture.userData.iwsdkSceneIBLGradient = {\n equator: Array.from(equatorV),\n ground: Array.from(groundV),\n intensity,\n sky: Array.from(skyV),\n };\n this.setEnvironment(target);\n // Apply IBL intensity for gradient as well\n this.scene.environmentIntensity = intensity;\n }\n\n private setEnvironment(target: WebGLRenderTarget | null): void {\n this.state.environmentTarget?.dispose();\n this.state.environmentTarget = undefined;\n if (target) {\n this.state.environmentTarget = target;\n this.scene.environment = target.texture;\n } else {\n this.scene.environment = null;\n }\n }\n\n // XR recenter handling\n private onXRSessionStart = (): void => {\n this.recenterYawOffset = 0;\n const refSpace = this.xrManager.getReferenceSpace();\n if (refSpace) {\n this.attachResetListener(refSpace);\n } else {\n this.needsResetListener = true;\n }\n this.updateSceneARMode();\n };\n\n private attachResetListener(refSpace: XRReferenceSpace): void {\n const onReset = (event: XRReferenceSpaceEvent) => {\n this.onReferenceSpaceReset(event);\n };\n refSpace.addEventListener('reset', onReset);\n this.resetListenerCleanup = () => {\n refSpace.removeEventListener('reset', onReset);\n };\n }\n\n private onXRSessionEnd = (): void => {\n this.resetListenerCleanup?.();\n this.resetListenerCleanup = null;\n this.recenterYawOffset = 0;\n this.needsResetListener = false;\n this.updateSceneARMode(null);\n };\n\n private onReferenceSpaceReset(event: XRReferenceSpaceEvent): void {\n const transform = event.transform;\n if (!transform) {\n return;\n }\n\n const q = transform.orientation;\n const yaw = Math.atan2(\n 2 * (q.w * q.y + q.x * q.z),\n 1 - 2 * (q.y * q.y + q.z * q.z),\n );\n\n this.recenterYawOffset += yaw;\n this.applyRecenterCompensation();\n }\n\n private applyRecenterCompensation(): void {\n for (const entity of this.queries.iblTextures.entities) {\n const rot = entity.getVectorView(IBLTexture, 'rotation');\n if (rot) {\n this.scene.environmentRotation?.set(\n rot[0] || 0,\n (rot[1] || 0) + this.recenterYawOffset,\n rot[2] || 0,\n );\n }\n break;\n }\n\n for (const entity of this.queries.domeTextures.entities) {\n const rot = entity.getVectorView(DomeTexture, 'rotation');\n if (rot) {\n this.scene.backgroundRotation?.set(\n rot[0] || 0,\n (rot[1] || 0) + this.recenterYawOffset,\n rot[2] || 0,\n );\n }\n break;\n }\n }\n\n // Apply document AR overrides only while an actual AR session is active.\n private updateSceneARMode(sessionOverride?: XRSession | null): void {\n const managerSession = this.xrManager.getSession?.();\n const session =\n sessionOverride === undefined\n ? managerSession === undefined\n ? this.world.session\n : managerSession\n : sessionOverride;\n this.arEnvironment.update({\n session,\n authoredBackgrounds:\n this.state.gradientDome == null ? [] : [this.state.gradientDome],\n });\n }\n\n // Gradient dome mesh utilities (background)\n private ensureGradientDome(\n skyHex: number,\n equatorHex: number,\n groundHex: number,\n intensity: number,\n ): void {\n if (!this.gradientGeometry) {\n this.gradientGeometry = new SphereGeometry(1, 32, 15);\n }\n if (!this.state.gradientDome) {\n const material = createGradientMaterial(\n skyHex,\n equatorHex,\n groundHex,\n intensity,\n BackSide,\n );\n const dome = new Mesh(this.gradientGeometry, material);\n dome.renderOrder = -1e9;\n dome.frustumCulled = false;\n this.scene.add(dome);\n this.state.gradientDome = dome;\n } else {\n const mat = this.state.gradientDome.material as ShaderMaterial;\n mat.uniforms.skyColor.value.setHex(skyHex).multiplyScalar(intensity);\n mat.uniforms.equatorColor.value\n .setHex(equatorHex)\n .multiplyScalar(intensity);\n mat.uniforms.groundColor.value\n .setHex(groundHex)\n .multiplyScalar(intensity);\n }\n }\n\n private clearGradientDome(): void {\n if (this.state.gradientDome) {\n this.state.gradientDome.removeFromParent();\n (this.state.gradientDome.material as ShaderMaterial).dispose();\n this.state.gradientDome = undefined;\n }\n }\n\n private clearGradientEnvironment(): void {\n if (this.state.gradientEnvironmentScene) {\n this.state.gradientEnvironmentScene.dispose();\n this.state.gradientEnvironmentScene = undefined;\n }\n this.state.gradientEnvironmentMesh = undefined;\n }\n\n private clearBackgroundSource(): void {\n this.clearGradientDome();\n if (\n this.state.backgroundTexture != null &&\n this.scene.background === this.state.backgroundTexture\n ) {\n this.scene.background = null;\n }\n this.state.backgroundTexture = undefined;\n this.state.backgroundSource = undefined;\n }\n\n private clearIBLSource(): void {\n const target = this.state.environmentTarget;\n if (target != null && this.scene.environment === target.texture) {\n this.scene.environment = null;\n }\n target?.dispose();\n this.state.environmentTarget = undefined;\n this.state.environmentSource = undefined;\n this.clearGradientEnvironment();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gradient-environment.js","sources":["../../src/environment/gradient-environment.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAYH;;;AAGG;AACI,MAAM,eAAe,GAAG;IAC7B,YAAY,aAAa;;;;;;;;;;;;;AAaxB,EAAA,CAAA;IACD,cAAc,aAAa;;;;;;;;;;;;;;;;;;;;AAoB1B,EAAA,CAAA;;AAGH;;;;;;;;AAQG;AACG,SAAU,sBAAsB,CACpC,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,IAAA,GAA2C,SAAS,EAAA;IAEpD,OAAO,IAAI,cAAc,CAAC;AACxB,QAAA,QAAQ,EAAE;AACR,YAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AAChE,YAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACxE,YAAA,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACvE,SAAA;QACD,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,cAAc,EAAE,eAAe,CAAC,cAAc;QAC9C,IAAI;QACJ,UAAU,EAAE,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI;QAC5C,SAAS,EAAE,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI;AAC5C,KAAA,CAAC;AACJ;AAEA;;;;;;AAMG;AACG,MAAO,mBAAoB,SAAQ,KAAK,CAAA;IAC5C,WAAA,CACE,MAAA,GAAiB,QAAQ,EACzB,UAAA,GAAqB,QAAQ,EAC7B,SAAA,GAAoB,QAAQ,EAC5B,SAAA,GAAoB,GAAG,EAAA;AAEvB,QAAA,KAAK,EAAE;;QAGP,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAChD,QAAA,MAAM,QAAQ,GAAG,sBAAsB,CACrC,MAAM,EACN,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,CACT;QAED,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,QAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1B;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAO;AAEhC,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAW,KAAI;AAC5B,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9B,gBAAA,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,QAAQ,CAAC,OAAO,EAAE;QACpB;IACF;AACD;;;;"}
1
+ {"version":3,"file":"gradient-environment.js","sources":["../../src/environment/gradient-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 {\n BackSide,\n Color,\n FrontSide,\n Mesh,\n Scene,\n ShaderMaterial,\n SphereGeometry,\n} from '../runtime/index.js';\n\n/**\n * Gradient shader uniforms and code used for background domes and environments.\n * @category Environment & Lighting\n */\nexport const GRADIENT_SHADER = {\n vertexShader: /* glsl */ `\n varying vec3 vWorldDirection;\n void main() {\n // A sky is directional, not positional. Strip camera translation so the\n // dome follows every browser/XR camera without depending on its parent\n // transform, then pin it to clip-space depth to avoid near/far clipping.\n vec3 worldDirection = mat3(modelMatrix) * position;\n vWorldDirection = worldDirection;\n vec4 clipPosition = projectionMatrix\n * mat4(mat3(viewMatrix))\n * vec4(worldDirection, 1.0);\n gl_Position = clipPosition.xyww;\n }\n `,\n fragmentShader: /* glsl */ `\n uniform vec3 skyColor;\n uniform vec3 equatorColor;\n uniform vec3 groundColor;\n varying vec3 vWorldDirection;\n \n void main() {\n float h = normalize(vWorldDirection).y;\n vec3 color;\n \n if (h > 0.0) {\n // Sky to equator interpolation\n color = mix(equatorColor, skyColor, h);\n } else {\n // Equator to ground interpolation\n color = mix(equatorColor, groundColor, -h);\n }\n \n gl_FragColor = vec4(color, 1.0);\n }\n `,\n};\n\n/**\n * Create a gradient material with Unity‑style sky/equator/ground colors.\n * @param skyHex Sky color as hex.\n * @param equatorHex Equator color as hex.\n * @param groundHex Ground color as hex.\n * @param intensity Intensity multiplier applied to all colors.\n * @param side Material side (BackSide for background dome; FrontSide for env scene).\n * @category Environment & Lighting\n */\nexport function createGradientMaterial(\n skyHex: number,\n equatorHex: number,\n groundHex: number,\n intensity: number,\n side: typeof BackSide | typeof FrontSide = FrontSide,\n): ShaderMaterial {\n return new ShaderMaterial({\n uniforms: {\n skyColor: { value: new Color(skyHex).multiplyScalar(intensity) },\n equatorColor: { value: new Color(equatorHex).multiplyScalar(intensity) },\n groundColor: { value: new Color(groundHex).multiplyScalar(intensity) },\n },\n vertexShader: GRADIENT_SHADER.vertexShader,\n fragmentShader: GRADIENT_SHADER.fragmentShader,\n side,\n depthWrite: side === BackSide ? false : true,\n depthTest: side === BackSide ? false : true,\n });\n}\n\n/**\n * A Scene containing a gradient sphere for PMREM processing.\n *\n * @remarks\n * Uses the same shader as the background dome to ensure coherent lighting.\n * @category Environment & Lighting\n */\nexport class GradientEnvironment extends Scene {\n constructor(\n skyHex: number = 0x87ceeb,\n equatorHex: number = 0xffa500,\n groundHex: number = 0x228b22,\n intensity: number = 1.0,\n ) {\n super();\n\n // Create gradient sphere using shared gradient material\n const geometry = new SphereGeometry(100, 32, 15);\n const material = createGradientMaterial(\n skyHex,\n equatorHex,\n groundHex,\n intensity,\n BackSide,\n );\n\n const gradientSphere = new Mesh(geometry, material);\n this.add(gradientSphere);\n }\n\n dispose(): void {\n const resources = new Set<any>();\n\n this.traverse((object: any) => {\n if (object.isMesh) {\n resources.add(object.geometry);\n resources.add(object.material);\n }\n });\n\n for (const resource of resources) {\n resource.dispose();\n }\n }\n}\n"],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAYH;;;AAGG;AACI,MAAM,eAAe,GAAG;IAC7B,YAAY,aAAa;;;;;;;;;;;;;AAaxB,EAAA,CAAA;IACD,cAAc,aAAa;;;;;;;;;;;;;;;;;;;;AAoB1B,EAAA,CAAA;;AAGH;;;;;;;;AAQG;AACG,SAAU,sBAAsB,CACpC,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,IAAA,GAA2C,SAAS,EAAA;IAEpD,OAAO,IAAI,cAAc,CAAC;AACxB,QAAA,QAAQ,EAAE;AACR,YAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AAChE,YAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACxE,YAAA,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACvE,SAAA;QACD,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,cAAc,EAAE,eAAe,CAAC,cAAc;QAC9C,IAAI;QACJ,UAAU,EAAE,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI;QAC5C,SAAS,EAAE,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI;AAC5C,KAAA,CAAC;AACJ;AAEA;;;;;;AAMG;AACG,MAAO,mBAAoB,SAAQ,KAAK,CAAA;IAC5C,WAAA,CACE,MAAA,GAAiB,QAAQ,EACzB,UAAA,GAAqB,QAAQ,EAC7B,SAAA,GAAoB,QAAQ,EAC5B,SAAA,GAAoB,GAAG,EAAA;AAEvB,QAAA,KAAK,EAAE;;QAGP,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAChD,QAAA,MAAM,QAAQ,GAAG,sBAAsB,CACrC,MAAM,EACN,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,CACT;QAED,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,QAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1B;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAO;AAEhC,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAW,KAAI;AAC5B,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9B,gBAAA,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,QAAQ,CAAC,OAAO,EAAE;QACpB;IACF;AACD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ibl-gradient.js","sources":["../../src/environment/ibl-gradient.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;AAOG;AACI,MAAM,WAAW,GAAG,eAAe,CACxC,aAAa,EACb;AACE,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;AACjE,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;AACtE,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;IACpE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;IAChD,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;CACrD,EACD,2BAA2B;;;;"}
1
+ {"version":3,"file":"ibl-gradient.js","sources":["../../src/environment/ibl-gradient.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 * Image-based lighting from a procedural gradient (PMREM of a gradient scene).\n *\n * @remarks\n * - Only affects `scene.environment`.\n *\n * @category Environment & Lighting\n */\nexport const IBLGradient = createComponent(\n 'IBLGradient',\n {\n sky: { type: Types.Color, default: [0.6902, 0.749, 0.7843, 1.0] },\n equator: { type: Types.Color, default: [0.6584, 0.7084, 0.7913, 1.0] },\n ground: { type: Types.Color, default: [0.807, 0.7758, 0.7454, 1.0] },\n intensity: { type: Types.Float32, default: 1.0 },\n _needsUpdate: { type: Types.Boolean, default: true },\n },\n 'IBL from a gradient scene',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;AAOG;AACI,MAAM,WAAW,GAAG,eAAe,CACxC,aAAa,EACb;AACE,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;AACjE,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;AACtE,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;IACpE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;IAChD,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;CACrD,EACD,2BAA2B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ibl-texture.js","sources":["../../src/environment/ibl-texture.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;AASG;AACI,MAAM,UAAU,GAAG,eAAe,CACvC,YAAY,EACZ;AACE,IAAA,GAAG,EAAE;QACH,IAAI,EAAE,KAAK,CAAC,QAAQ;AACpB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,2BAA2B;AACtC,QAAA,SAAS,EAAE,UAAU;AACtB,KAAA;IACD,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;AAChD,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;CACrD,EACD,uDAAuD;;;;"}
1
+ {"version":3,"file":"ibl-texture.js","sources":["../../src/environment/ibl-texture.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 * Image‑based lighting from a texture or the built‑in Room environment.\n *\n * @remarks\n * - `src`: \"room\" | HDR/EXR equirect | LDR equirect. PMREM processed to `scene.environment`.\n * - `rotation` controls `scene.environmentRotation` in radians.\n * - Does not set `scene.background`.\n *\n * @category Environment & Lighting\n */\nexport const IBLTexture = createComponent(\n 'IBLTexture',\n {\n src: {\n type: Types.FilePath,\n default: 'room',\n fileTypes: '.png,.jpg,.ktx2,.hdr,.exr',\n subfolder: 'textures',\n },\n intensity: { type: Types.Float32, default: 1.0 },\n rotation: { type: Types.Vec3, default: [0, 0, 0] },\n _needsUpdate: { type: Types.Boolean, default: true },\n },\n 'Image‑based lighting from texture or Room environment',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;AASG;AACI,MAAM,UAAU,GAAG,eAAe,CACvC,YAAY,EACZ;AACE,IAAA,GAAG,EAAE;QACH,IAAI,EAAE,KAAK,CAAC,QAAQ;AACpB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,SAAS,EAAE,2BAA2B;AACtC,QAAA,SAAS,EAAE,UAAU;AACtB,KAAA;IACD,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;AAChD,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;CACrD,EACD,uDAAuD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"scene-ar-environment.js","sources":["../../src/environment/scene-ar-environment.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene-ar-environment.js","sources":["../../src/environment/scene-ar-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 { Object3D, Scene, WebGLRenderer } from '../runtime/index.js';\n\nexport interface ResolvedSceneAREnvironment {\n isAR: boolean;\n background: 'transparent' | 'environment';\n}\n\nexport interface SceneAREnvironmentUpdate {\n session?: XRSession | null;\n authoredBackgrounds?: readonly Object3D[];\n}\n\n/** Resolve the fixed transparent-background policy against the active session. */\nexport function resolveSceneAREnvironment(\n session: XRSession | null | undefined,\n): ResolvedSceneAREnvironment {\n const blendMode = session?.environmentBlendMode;\n const isAR = blendMode === 'alpha-blend' || blendMode === 'additive';\n\n if (!isAR) {\n return { isAR: false, background: 'environment' };\n }\n\n return {\n isAR: true,\n background: 'transparent',\n };\n}\n\n/**\n * Applies reversible AR-only background overrides.\n *\n * Entering AR snapshots the visible environment, hides it for passthrough,\n * and restores it exactly when the session ends.\n */\nexport class SceneAREnvironmentController {\n private backgroundSuppressed = false;\n private backgroundBase: Scene['background'] = null;\n private clearAlphaBase = 1;\n private readonly authoredBackgroundVisibility = new Map<Object3D, boolean>();\n\n constructor(\n private readonly scene: Scene,\n private readonly renderer: WebGLRenderer,\n ) {}\n\n update(update: SceneAREnvironmentUpdate): ResolvedSceneAREnvironment {\n const policy = resolveSceneAREnvironment(update.session);\n\n this.updateBackground(policy.isAR, update.authoredBackgrounds ?? []);\n return policy;\n }\n\n restore(): void {\n this.restoreBackground();\n this.restoreObjectVisibility(this.authoredBackgroundVisibility);\n }\n\n private updateBackground(\n suppress: boolean,\n authoredBackgrounds: readonly Object3D[],\n ): void {\n if (!suppress) {\n this.restoreBackground();\n this.restoreObjectVisibility(this.authoredBackgroundVisibility);\n return;\n }\n\n if (!this.backgroundSuppressed) {\n this.backgroundBase = this.scene.background;\n this.clearAlphaBase = this.renderer.getClearAlpha();\n this.backgroundSuppressed = true;\n } else {\n if (this.scene.background !== null) {\n this.backgroundBase = this.scene.background;\n }\n const clearAlpha = this.renderer.getClearAlpha();\n if (clearAlpha !== 0) {\n this.clearAlphaBase = clearAlpha;\n }\n }\n\n this.scene.background = null;\n this.renderer.setClearAlpha(0);\n this.suppressObjectVisibility(\n authoredBackgrounds,\n this.authoredBackgroundVisibility,\n );\n }\n\n private restoreBackground(): void {\n if (!this.backgroundSuppressed) {\n return;\n }\n this.scene.background = this.backgroundBase;\n this.renderer.setClearAlpha(this.clearAlphaBase);\n this.backgroundSuppressed = false;\n }\n\n private suppressObjectVisibility(\n objects: Iterable<Object3D>,\n visibility: Map<Object3D, boolean>,\n ): void {\n for (const object of objects) {\n if (!visibility.has(object)) {\n visibility.set(object, object.visible);\n }\n object.visible = false;\n }\n }\n\n private restoreObjectVisibility(visibility: Map<Object3D, boolean>): void {\n for (const [object, wasVisible] of visibility) {\n object.visible = wasVisible;\n }\n visibility.clear();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"environment-raycast.js","sources":["../../src/environment-raycast/environment-raycast.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;;;AAKG;AAQH;AACA,MAAM,UAAU,GAAG,IAAI,OAAO,EAAE;AAChC,MAAM,YAAY,GAAG,IAAI,OAAO,EAAE;AAClC,MAAM,cAAc,GAAG,IAAI,UAAU,EAAE;AACvC,MAAM,mBAAmB,GAAG,IAAI,UAAU,EAAE;AAC5C,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE;AAC/B,MAAM,UAAU,GAAG,IAAI,OAAO,EAAE;AAChC,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE;AACnC,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE;AACnC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAE9C;;;AAGG;AACG,MAAO,wBAAyB,SAAQ,YAAY,CAAC;AACzD,IAAA,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE;CAClD,CAAC,CAAA;AAFF,IAAA,WAAA,GAAA;;AAIU,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,GAAG,EAA4B;IAqexE;IAneE,IAAI,GAAA;QACF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAK;YACnD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AACzD,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;AACjD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC/C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AACnC,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS;AACtC,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;AACvC,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,MAAM,KAAI;AACtD,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AACnC,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,CAAC,MAAc,EAAE,KAAa,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;AAEzD,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE;YACxE;QACF;AAEA,QAAA,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,cAAc,CAAC;AAE3D,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAC3B,wBAAwB,EACxB,OAAO,CACQ;AAEjB,YAAA,IAAI,KAAK,KAAK,YAAY,CAAC,MAAM,EAAE;gBACjC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC;YACnE;iBAAO;gBACL,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC;YACpE;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,qBAAqB,CAC3B,MAAc,EACd,OAAkB,EAClB,KAAc,EACd,cAAgC,EAAA;QAEhC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAErD;QACb,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CACrC,wBAAwB,EACxB,kBAAkB,CACnB;AAED,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE;YAC/B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC;YAC1D;QACF;QAEA,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC;QAC1D;IACF;AAEQ,IAAA,oBAAoB,CAC1B,MAAc,EACd,OAAkB,EAClB,KAAc,EACd,cAAgC,EAAA;QAEhC,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CACrC,wBAAwB,EACxB,kBAAkB,CAC0B;QAC9C,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CACrC,wBAAwB,EACxB,kBAAkB,CACnB;AAED,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,EAAE;AACxC,YAAA,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC;YACnD;QACF;QAEA,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,6BAA6B,CAChC,MAAM,EACN,KAAK,EACL,cAAc,EACd,eAAe,CAChB;QACH;IACF;IAEQ,6BAA6B,CACnC,OAAkB,EAClB,cAAgC,EAAA;QAEhC,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,EAAE;YAC5C;QACF;QAEA,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAChE,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAC,UAAU,CAAC;YACnE,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC5C,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,KAAK,CAAC;gBACpE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC;YAC5D;QACF;IACF;AAEQ,IAAA,qBAAqB,CAAC,SAA2B,EAAA;;QACvD,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AACA,QAAA,IAAI,CAAC,qBAAqB;YACxB,CAAA,EAAA,GAAA,SAAS,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,UAAU,CAAC;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC;QAC1E;IACF;AAEQ,IAAA,MAAM,oBAAoB,CAChC,MAAc,EACd,OAAkB,EAClB,eAAiC,EAAA;AAEjC,QAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACjC;QACF;QAEA,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,IAAI,CAAC;AAEnE,QAAA,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAC3B,wBAAwB,EACxB,OAAO,CACQ;AAEjB,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;YACjE,IAAI,CAAC,OAAO,EAAE;gBACZ;YACF;;YAGA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAE7C,YAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC;AAChD,gBAAA,KAAK,EAAE,OAAO;gBACd,SAAS;AACV,aAAA,CAAC;YAEF,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,SAAS,EAAE,MAAM,CAAC;YAC5D,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,WAAW,EAAE,OAAO,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,KAAK,CAAC;QACtE;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CACX,qDAAqD,EACrD,KAAK,CACN;YACD,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,KAAK,CAAC;QACtE;IACF;AAEQ,IAAA,cAAc,CAAC,MAAc,EAAA;QACnC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CACpC,wBAAwB,EACxB,gBAAgB,CACM;QACxB,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CACtC,wBAAwB,EACxB,kBAAkB,CACO;;QAG3B,IAAI,gBAAgB,EAAE;YACpB,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC;QACxE;aAAO;AACL,YAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACtC;QAEA,MAAM,MAAM,GAAG;AACb,cAAE,IAAI,gBAAgB,CAClB,cAAc,CAAC,CAAC,EAChB,cAAc,CAAC,CAAC,EAChB,cAAc,CAAC,CAAC,EAChB,CAAC;AAEL,cAAE,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAEpC,QAAA,MAAM,SAAS,GAAG,IAAI,gBAAgB,CACpC,aAAa,CAAC,CAAC,EACf,aAAa,CAAC,CAAC,EACf,aAAa,CAAC,CAAC,EACf,CAAC,CACF;AAED,QAAA,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;IACrC;AAEQ,IAAA,MAAM,6BAA6B,CACzC,MAAc,EACd,OAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,OAAO,CAAC,qCAAqC,EAAE;YAClD;QACF;QAEA,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,IAAI,CAAC;AAEnE,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,qCAAqC,CAAC;AACjE,gBAAA,OAAO,EAAE,qBAAqB;AAC/B,aAAA,CAAC;YAEF,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,KAAK,CAAC;QACtE;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CACX,+DAA+D,EAC/D,KAAK,CACN;YACD,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,KAAK,CAAC;QACtE;IACF;AAEQ,IAAA,MAAM,cAAc,CAC1B,MAAc,EACd,KAAmB,EACnB,OAAkB,EAAA;QAElB,QAAQ,KAAK;YACX,KAAK,YAAY,CAAC,MAAM;AACtB,gBAAA,OAAO,MAAM,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YAEtD,KAAK,YAAY,CAAC,IAAI;AACtB,YAAA,KAAK,YAAY,CAAC,KAAK,EAAE;AACvB,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBAC9D,IAAI,WAAW,EAAE;oBACf,OAAO,WAAW,CAAC,cAAc;gBACnC;gBACA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;AAChD,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA;AACE,gBAAA,OAAO,MAAM,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;;IAE1D;AAEQ,IAAA,oBAAoB,CAC1B,MAAc,EACd,KAAc,EACd,cAAgC,EAAA;QAEhC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAErD;QACb,IAAI,CAAC,MAAM,EAAE;YACX;QACF;QAEA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,WAAW,CAEzD;AAEb,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CACjC,wBAAwB,EACxB,aAAa,CACJ;AAEX,QAAA,IAAI;YACF,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAE/C,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACrC;YACF;;AAGA,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;;AAGpE,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CACzC,OAAO,EACP,cAAc,EACd,WAAW,EACX,SAAS,CACV;YAED,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACrC;YACF;AAEA,YAAA,IAAI,CAAC,cAAc,CACjB,MAAM,EACN,QAAQ,EACR,WAAW,EACX,cAAc,EACd,SAAS,CACV;QACH;AAAE,QAAA,OAAA,EAAA,EAAM;AACN,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;QACnC;IACF;AAEQ,IAAA,6BAA6B,CACnC,MAAc,EACd,KAAc,EACd,cAAgC,EAChC,eAA8C,EAAA;AAE9C,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CACjC,wBAAwB,EACxB,aAAa,CACJ;AAEX,QAAA,IAAI;YACF,MAAM,gBAAgB,GACpB,KAAK,CAAC,kCAAkC,CAAC,eAAe,CAAC;AAE3D,YAAA,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE;AAC9C,gBAAA,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW;AAC/C,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CACjC,KAAK,EACL,cAAc,EACd,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,cAAc,CAC5B;AAED,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CACzC,eAAe,CAAC,OAAO,EACvB,cAAc,EACd,WAAW,EACX,SAAS,CACV;gBAED,IAAI,WAAW,EAAE;AACf,oBAAA,IAAI,CAAC,cAAc,CACjB,MAAM,EACN,QAAQ,EACR,WAAW,EACX,cAAc,EACd,WAAW,CACZ;oBACD;gBACF;YACF;;AAGA,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;QACvC;AAAE,QAAA,OAAA,EAAA,EAAM;AACN,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;QACnC;IACF;AAEQ,IAAA,YAAY,CAClB,KAAc,EACd,cAAgC,EAChC,QAA6B,EAAA;QAE7B,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI;QACb;QACA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;QACb;QACA,aAAa,CAAC,GAAG,CACf,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC5B,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC5B,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAC7B;AACD,QAAA,OAAO,aAAa;IACtB;AAEQ,IAAA,kBAAkB,CACxB,OAAmC,EACnC,cAAgC,EAChC,WAAmB,EACnB,SAAyB,EAAA;AAEzB,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;YAC3C,IAAI,CAAC,IAAI,EAAE;gBACT;YACF;YAEA,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC3C,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,CAAC;;YAG7D,IAAI,SAAS,EAAE;gBACb,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC;AACnD,gBAAA,IAAI,QAAQ,GAAG,WAAW,EAAE;oBAC1B;gBACF;YACF;AAEA,YAAA,OAAO,MAAM;QACf;AACA,QAAA,OAAO,IAAI;IACb;IAEQ,cAAc,CACpB,MAAc,EACd,QAA8B,EAC9B,MAAuB,EACvB,cAAgC,EAChC,WAAsC,EAAA;QAEtC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;YACrC;QACF;QAEA,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC3C,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,CAAC;AAC7D,QAAA,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;QAEvD,IAAI,QAAQ,EAAE;AACZ,YAAA,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;AACxC,YAAA,mBAAmB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC5D,YAAA,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACjD,YAAA,QAAQ,CAAC,OAAO,GAAG,IAAI;QACzB;QAEA,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,aAAa,EAAE,WAAW,CAAC;IACvE;IAEQ,cAAc,CAAC,MAAc,EAAE,QAA8B,EAAA;QACnE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,SAAS,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,aAAa,EAAE,SAAS,CAAC;QACnE,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,OAAO,GAAG,KAAK;QAC1B;IACF;AAEQ,IAAA,oBAAoB,CAAC,MAAc,EAAA;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAErD;QACb,IAAI,MAAM,EAAE;AACV,YAAA,IAAI;gBACF,MAAM,CAAC,MAAM,EAAE;YACjB;AAAE,YAAA,OAAA,EAAA,EAAM;;YAER;QACF;QAEA,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CACrC,wBAAwB,EACxB,kBAAkB,CAC0B;QAC9C,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI;gBACF,eAAe,CAAC,MAAM,EAAE;YAC1B;AAAE,YAAA,OAAA,EAAA,EAAM;;YAER;QACF;QAEA,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,SAAS,EAAE,SAAS,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,WAAW,EAAE,SAAS,CAAC;QACjE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,SAAS,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,KAAK,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,SAAS,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,aAAa,EAAE,SAAS,CAAC;AACnE,QAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC;AAE5C,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK;QACjC;IACF;AACD;;;;"}
1
+ {"version":3,"file":"environment-raycast.js","sources":["../../src/environment-raycast/environment-raycast.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 { Matrix4, Object3D, Quaternion, Vector3 } from '../runtime/index.js';\nimport { setWorldPosition, setWorldQuaternion } from '../transform/index.js';\nimport { EnvironmentRaycastTarget, RaycastSpace } from './raycast-target.js';\n\n// Reusable math objects to avoid allocations\nconst tempMatrix = new Matrix4();\nconst tempPosition = new Vector3();\nconst tempQuaternion = new Quaternion();\nconst tempWorldQuaternion = new Quaternion();\nconst tempScale = new Vector3();\nconst tempNormal = new Vector3();\nconst tempRayOrigin = new Vector3();\nconst tempDirection = new Vector3();\nconst upVector = new Vector3(0, 1, 0);\nconst defaultDirection = new Vector3(0, 0, -1);\n\n/**\n * System that manages environment raycasting.\n * @category Environment Raycast\n */\nexport class EnvironmentRaycastSystem extends createSystem({\n targets: { required: [EnvironmentRaycastTarget] },\n}) {\n private hitTestFeatureEnabled: boolean | undefined;\n private pendingControllerSources = new Map<Entity, 'left' | 'right'>();\n\n init(): void {\n this.xrManager.addEventListener('sessionstart', () => {\n this.updateEnabledFeatures(this.xrManager.getSession());\n });\n\n this.xrManager.addEventListener('sessionend', () => {\n this.queries.targets.entities.forEach((entity) => {\n this.cleanupRaycastSource(entity);\n });\n this.hitTestFeatureEnabled = undefined;\n this.pendingControllerSources.clear();\n });\n\n // Automatic cleanup when component is removed\n this.queries.targets.subscribe('disqualify', (entity) => {\n this.cleanupRaycastSource(entity);\n });\n }\n\n update(_delta: number, _time: number): void {\n const frame = this.xrFrame;\n const session = this.xrManager.getSession();\n const referenceSpace = this.xrManager.getReferenceSpace();\n\n if (!this.hitTestFeatureEnabled || !frame || !session || !referenceSpace) {\n return;\n }\n\n this.checkPendingControllerSources(session, referenceSpace);\n\n this.queries.targets.entities.forEach((entity) => {\n const space = entity.getValue(\n EnvironmentRaycastTarget,\n 'space',\n ) as RaycastSpace;\n\n if (space === RaycastSpace.Screen) {\n this.handleTransientInput(entity, session, frame, referenceSpace);\n } else {\n this.handleStandardRaycast(entity, session, frame, referenceSpace);\n }\n });\n }\n\n private handleStandardRaycast(\n entity: Entity,\n session: XRSession,\n frame: XRFrame,\n referenceSpace: XRReferenceSpace,\n ) {\n const source = entity.getValue(EnvironmentRaycastTarget, '_source') as\n | XRHitTestSource\n | undefined;\n const sourceRequested = entity.getValue(\n EnvironmentRaycastTarget,\n '_sourceRequested',\n );\n\n if (!source && !sourceRequested) {\n this.requestRaycastSource(entity, session, referenceSpace);\n return;\n }\n\n if (source) {\n this.updateRaycastResults(entity, frame, referenceSpace);\n }\n }\n\n private handleTransientInput(\n entity: Entity,\n session: XRSession,\n frame: XRFrame,\n referenceSpace: XRReferenceSpace,\n ) {\n const transientSource = entity.getValue(\n EnvironmentRaycastTarget,\n '_transientSource',\n ) as XRTransientInputHitTestSource | undefined;\n const sourceRequested = entity.getValue(\n EnvironmentRaycastTarget,\n '_sourceRequested',\n );\n\n if (!transientSource && !sourceRequested) {\n this.requestTransientRaycastSource(entity, session);\n return;\n }\n\n if (transientSource) {\n this.updateTransientRaycastResults(\n entity,\n frame,\n referenceSpace,\n transientSource,\n );\n }\n }\n\n private checkPendingControllerSources(\n session: XRSession,\n referenceSpace: XRReferenceSpace,\n ) {\n if (this.pendingControllerSources.size === 0) {\n return;\n }\n\n for (const [entity, handedness] of this.pendingControllerSources) {\n const inputSource = this.input.xr.getPrimaryInputSource(handedness);\n if (inputSource) {\n this.pendingControllerSources.delete(entity);\n entity.setValue(EnvironmentRaycastTarget, '_sourceRequested', false);\n this.requestRaycastSource(entity, session, referenceSpace);\n }\n }\n }\n\n private updateEnabledFeatures(xrSession: XRSession | null) {\n if (!xrSession) {\n return;\n }\n this.hitTestFeatureEnabled =\n xrSession.enabledFeatures?.includes('hit-test');\n if (!this.hitTestFeatureEnabled) {\n console.warn('[EnvironmentRaycastSystem] hit-test feature not enabled.');\n }\n }\n\n private async requestRaycastSource(\n entity: Entity,\n session: XRSession,\n _referenceSpace: XRReferenceSpace,\n ) {\n if (!session.requestHitTestSource) {\n return;\n }\n\n entity.setValue(EnvironmentRaycastTarget, '_sourceRequested', true);\n\n try {\n const space = entity.getValue(\n EnvironmentRaycastTarget,\n 'space',\n ) as RaycastSpace;\n\n const xrSpace = await this.resolveXRSpace(entity, space, session);\n if (!xrSpace) {\n return;\n }\n\n // Build offsetRay from component properties\n const offsetRay = this.buildOffsetRay(entity);\n\n const source = await session.requestHitTestSource({\n space: xrSpace,\n offsetRay,\n });\n\n entity.setValue(EnvironmentRaycastTarget, '_source', source);\n entity.setValue(EnvironmentRaycastTarget, '_raySpace', xrSpace);\n entity.setValue(EnvironmentRaycastTarget, '_sourceRequested', false);\n } catch (error) {\n console.error(\n '[EnvironmentRaycastSystem] Failed to create source:',\n error,\n );\n entity.setValue(EnvironmentRaycastTarget, '_sourceRequested', false);\n }\n }\n\n private buildOffsetRay(entity: Entity): XRRay {\n const offsetPosition = entity.getValue(\n EnvironmentRaycastTarget,\n 'offsetPosition',\n ) as Vector3 | undefined;\n const offsetQuaternion = entity.getValue(\n EnvironmentRaycastTarget,\n 'offsetQuaternion',\n ) as Quaternion | undefined;\n\n // Calculate direction from quaternion (apply to default -Z direction)\n if (offsetQuaternion) {\n tempDirection.copy(defaultDirection).applyQuaternion(offsetQuaternion);\n } else {\n tempDirection.copy(defaultDirection);\n }\n\n const origin = offsetPosition\n ? new DOMPointReadOnly(\n offsetPosition.x,\n offsetPosition.y,\n offsetPosition.z,\n 1,\n )\n : new DOMPointReadOnly(0, 0, 0, 1);\n\n const direction = new DOMPointReadOnly(\n tempDirection.x,\n tempDirection.y,\n tempDirection.z,\n 0,\n );\n\n return new XRRay(origin, direction);\n }\n\n private async requestTransientRaycastSource(\n entity: Entity,\n session: XRSession,\n ) {\n if (!session.requestHitTestSourceForTransientInput) {\n return;\n }\n\n entity.setValue(EnvironmentRaycastTarget, '_sourceRequested', true);\n\n try {\n const source = await session.requestHitTestSourceForTransientInput({\n profile: 'generic-touchscreen',\n });\n\n entity.setValue(EnvironmentRaycastTarget, '_transientSource', source);\n entity.setValue(EnvironmentRaycastTarget, '_sourceRequested', false);\n } catch (error) {\n console.error(\n '[EnvironmentRaycastSystem] Failed to create transient source:',\n error,\n );\n entity.setValue(EnvironmentRaycastTarget, '_sourceRequested', false);\n }\n }\n\n private async resolveXRSpace(\n entity: Entity,\n space: RaycastSpace,\n session: XRSession,\n ): Promise<XRSpace | null> {\n switch (space) {\n case RaycastSpace.Viewer:\n return await session.requestReferenceSpace('viewer');\n\n case RaycastSpace.Left:\n case RaycastSpace.Right: {\n const inputSource = this.input.xr.getPrimaryInputSource(space);\n if (inputSource) {\n return inputSource.targetRaySpace;\n }\n this.pendingControllerSources.set(entity, space);\n return null;\n }\n\n default:\n return await session.requestReferenceSpace('viewer');\n }\n }\n\n private updateRaycastResults(\n entity: Entity,\n frame: XRFrame,\n referenceSpace: XRReferenceSpace,\n ) {\n const source = entity.getValue(EnvironmentRaycastTarget, '_source') as\n | XRHitTestSource\n | undefined;\n if (!source) {\n return;\n }\n\n const raySpace = entity.getValue(EnvironmentRaycastTarget, '_raySpace') as\n | XRSpace\n | undefined;\n\n const object3D = entity.object3D;\n const maxDistance = entity.getValue(\n EnvironmentRaycastTarget,\n 'maxDistance',\n ) as number;\n\n try {\n const results = frame.getHitTestResults(source);\n\n if (results.length === 0) {\n this.clearHitResult(entity, object3D);\n return;\n }\n\n // Get ray origin for distance calculation\n const rayOrigin = this.getRayOrigin(frame, referenceSpace, raySpace);\n\n // Find first valid result within maxDistance\n const validResult = this.findValidHitResult(\n results,\n referenceSpace,\n maxDistance,\n rayOrigin,\n );\n\n if (!validResult) {\n this.clearHitResult(entity, object3D);\n return;\n }\n\n this.applyHitResult(\n entity,\n object3D,\n validResult,\n referenceSpace,\n undefined,\n );\n } catch {\n this.cleanupRaycastSource(entity);\n }\n }\n\n private updateTransientRaycastResults(\n entity: Entity,\n frame: XRFrame,\n referenceSpace: XRReferenceSpace,\n transientSource: XRTransientInputHitTestSource,\n ) {\n const object3D = entity.object3D;\n const maxDistance = entity.getValue(\n EnvironmentRaycastTarget,\n 'maxDistance',\n ) as number;\n\n try {\n const transientResults =\n frame.getHitTestResultsForTransientInput(transientSource);\n\n for (const transientResult of transientResults) {\n const inputSource = transientResult.inputSource;\n const rayOrigin = this.getRayOrigin(\n frame,\n referenceSpace,\n inputSource?.targetRaySpace,\n );\n\n const validResult = this.findValidHitResult(\n transientResult.results,\n referenceSpace,\n maxDistance,\n rayOrigin,\n );\n\n if (validResult) {\n this.applyHitResult(\n entity,\n object3D,\n validResult,\n referenceSpace,\n inputSource,\n );\n return;\n }\n }\n\n // No valid hit found in any transient result\n this.clearHitResult(entity, object3D);\n } catch {\n this.cleanupRaycastSource(entity);\n }\n }\n\n private getRayOrigin(\n frame: XRFrame,\n referenceSpace: XRReferenceSpace,\n raySpace: XRSpace | undefined,\n ): Vector3 | null {\n if (!raySpace) {\n return null;\n }\n const rayPose = frame.getPose(raySpace, referenceSpace);\n if (!rayPose) {\n return null;\n }\n tempRayOrigin.set(\n rayPose.transform.position.x,\n rayPose.transform.position.y,\n rayPose.transform.position.z,\n );\n return tempRayOrigin;\n }\n\n private findValidHitResult(\n results: readonly XRHitTestResult[],\n referenceSpace: XRReferenceSpace,\n maxDistance: number,\n rayOrigin: Vector3 | null,\n ): XRHitTestResult | null {\n for (const result of results) {\n const pose = result.getPose(referenceSpace);\n if (!pose) {\n continue;\n }\n\n tempMatrix.fromArray(pose.transform.matrix);\n tempMatrix.decompose(tempPosition, tempQuaternion, tempScale);\n\n // Only apply distance filter if we have a valid ray origin\n if (rayOrigin) {\n const distance = tempPosition.distanceTo(rayOrigin);\n if (distance > maxDistance) {\n continue;\n }\n }\n\n return result;\n }\n return null;\n }\n\n private applyHitResult(\n entity: Entity,\n object3D: Object3D | undefined,\n result: XRHitTestResult,\n referenceSpace: XRReferenceSpace,\n inputSource: XRInputSource | undefined,\n ) {\n const pose = result.getPose(referenceSpace);\n if (!pose) {\n this.clearHitResult(entity, object3D);\n return;\n }\n\n tempMatrix.fromArray(pose.transform.matrix);\n tempMatrix.decompose(tempPosition, tempQuaternion, tempScale);\n tempNormal.set(0, 1, 0).applyQuaternion(tempQuaternion);\n\n if (object3D) {\n setWorldPosition(object3D, tempPosition);\n tempWorldQuaternion.setFromUnitVectors(upVector, tempNormal);\n setWorldQuaternion(object3D, tempWorldQuaternion);\n object3D.visible = true;\n }\n\n entity.setValue(EnvironmentRaycastTarget, 'xrHitTestResult', result);\n entity.setValue(EnvironmentRaycastTarget, 'inputSource', inputSource);\n }\n\n private clearHitResult(entity: Entity, object3D: Object3D | undefined) {\n entity.setValue(EnvironmentRaycastTarget, 'xrHitTestResult', undefined);\n entity.setValue(EnvironmentRaycastTarget, 'inputSource', undefined);\n if (object3D) {\n object3D.visible = false;\n }\n }\n\n private cleanupRaycastSource(entity: Entity) {\n const source = entity.getValue(EnvironmentRaycastTarget, '_source') as\n | XRHitTestSource\n | undefined;\n if (source) {\n try {\n source.cancel();\n } catch {\n /* ignore */\n }\n }\n\n const transientSource = entity.getValue(\n EnvironmentRaycastTarget,\n '_transientSource',\n ) as XRTransientInputHitTestSource | undefined;\n if (transientSource) {\n try {\n transientSource.cancel();\n } catch {\n /* ignore */\n }\n }\n\n entity.setValue(EnvironmentRaycastTarget, '_source', undefined);\n entity.setValue(EnvironmentRaycastTarget, '_raySpace', undefined);\n entity.setValue(EnvironmentRaycastTarget, '_transientSource', undefined);\n entity.setValue(EnvironmentRaycastTarget, '_sourceRequested', false);\n entity.setValue(EnvironmentRaycastTarget, 'xrHitTestResult', undefined);\n entity.setValue(EnvironmentRaycastTarget, 'inputSource', undefined);\n this.pendingControllerSources.delete(entity);\n\n if (entity.object3D) {\n entity.object3D.visible = false;\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"raycast-target.js","sources":["../../src/environment-raycast/raycast-target.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;AAGG;AACI,MAAM,YAAY,GAAG;;AAE1B,IAAA,IAAI,EAAE,MAAM;;AAEZ,IAAA,KAAK,EAAE,OAAO;;AAEd,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,MAAM,EAAE,QAAQ;;AAKlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACI,MAAM,wBAAwB,GAAG,eAAe,CACrD,0BAA0B,EAC1B;;AAEE,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,KAAK;AAC5B,KAAA;;IAED,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAGlD,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAE1D,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAG5D,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAE3D,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAGvD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAEnD,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAErD,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAE5D,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CAC1D,EACD,+CAA+C;;;;"}
1
+ {"version":3,"file":"raycast-target.js","sources":["../../src/environment-raycast/raycast-target.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 * Ray source options for environment raycasting.\n * @category Environment Raycast\n */\nexport const RaycastSpace = {\n /** Use left controller's target ray */\n Left: 'left',\n /** Use right controller's target ray */\n Right: 'right',\n /** Use viewer/head position and gaze direction */\n Viewer: 'viewer',\n /** For phone AR - tracks screen touch for tap-to-place */\n Screen: 'screen',\n} as const;\n\nexport type RaycastSpace = (typeof RaycastSpace)[keyof typeof RaycastSpace];\n\n/**\n * Component that makes an entity follow environment raycast hit points.\n *\n * @remarks\n * The entity's Object3D is automatically positioned at the raycast hit point\n * and oriented to match the surface normal. When there's no hit, the Object3D\n * is hidden.\n *\n * Use `offsetPosition` and `offsetQuaternion` to offset the ray from the\n * space origin. This is useful for one-shot raycasts where you want to\n * cast from a specific position/orientation relative to the controller.\n *\n * @example Teleport reticle that follows controller ray\n * ```ts\n * const reticle = world.createTransformEntity(reticleMesh);\n * reticle.addComponent(EnvironmentRaycastTarget, { space: RaycastSpace.Right });\n * // Reticle automatically moves to where controller points\n * ```\n *\n * @example Place object on trigger press\n * ```ts\n * const xrResult = entity.getValue(EnvironmentRaycastTarget, 'xrHitTestResult');\n * if (xrResult && gamepad.getSelectStart()) {\n * spawnObject(entity.object3D.position.clone());\n * }\n * ```\n *\n * @category Environment Raycast\n */\nexport const EnvironmentRaycastTarget = createComponent(\n 'EnvironmentRaycastTarget',\n {\n /** Ray source: 'left', 'right', 'viewer', or 'screen'. @default 'right' */\n space: {\n type: Types.Enum,\n enum: RaycastSpace,\n default: RaycastSpace.Right,\n },\n /** Maximum raycast distance in meters. @default 100 */\n maxDistance: { type: Types.Float32, default: 100 },\n\n /** Offset position from the space origin. @default (0, 0, 0) */\n offsetPosition: { type: Types.Object, default: undefined },\n /** Offset quaternion to rotate the ray direction. @default identity */\n offsetQuaternion: { type: Types.Object, default: undefined },\n\n /** The XRHitTestResult when there's a hit, undefined otherwise. @readonly */\n xrHitTestResult: { type: Types.Object, default: undefined },\n /** For Screen mode: the input source that triggered the hit. @readonly */\n inputSource: { type: Types.Object, default: undefined },\n\n /** @internal */\n _source: { type: Types.Object, default: undefined },\n /** @internal */\n _raySpace: { type: Types.Object, default: undefined },\n /** @internal */\n _transientSource: { type: Types.Object, default: undefined },\n /** @internal */\n _sourceRequested: { type: Types.Boolean, default: false },\n },\n 'Entity follows environment raycast hit points',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;AAGG;AACI,MAAM,YAAY,GAAG;;AAE1B,IAAA,IAAI,EAAE,MAAM;;AAEZ,IAAA,KAAK,EAAE,OAAO;;AAEd,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,MAAM,EAAE,QAAQ;;AAKlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACI,MAAM,wBAAwB,GAAG,eAAe,CACrD,0BAA0B,EAC1B;;AAEE,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,KAAK;AAC5B,KAAA;;IAED,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAGlD,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAE1D,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAG5D,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAE3D,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAGvD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAEnD,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAErD,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;;IAE5D,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CAC1D,EACD,+CAA+C;;;;"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Types } from '../ecs/index.js';
8
+ declare const GazeSystem_base: import("elics").SystemConstructor<{
9
+ /**
10
+ * If true, gaze is suppressed whenever a near touch/grab pointer is in
11
+ * HOVER or SELECT. Set false to allow gaze to remain active concurrently.
12
+ * @default true
13
+ */
14
+ suppressWhenDirectPointerActive: {
15
+ type: Types.Boolean;
16
+ default: true;
17
+ };
18
+ /**
19
+ * 1€ filter min cutoff (lower = smoother, higher = more responsive).
20
+ * @default 1.5
21
+ */
22
+ filterMinCutoff: {
23
+ type: Types.Float32;
24
+ default: number;
25
+ };
26
+ /**
27
+ * 1€ filter beta (higher = less smoothing during fast saccades).
28
+ * @default 0.05
29
+ */
30
+ filterBeta: {
31
+ type: Types.Float32;
32
+ default: number;
33
+ };
34
+ /**
35
+ * Dwell window in seconds for consensus voting. `0` disables consensus.
36
+ * @default 0.15
37
+ */
38
+ dwellWindowSeconds: {
39
+ type: Types.Float32;
40
+ default: number;
41
+ };
42
+ /**
43
+ * Half-angle of the gaze selection cone, in degrees. Widening it makes
44
+ * small targets easier to acquire at the cost of more ambiguity between
45
+ * neighbours.
46
+ * @default 5
47
+ */
48
+ coneAngle: {
49
+ type: Types.Float32;
50
+ default: number;
51
+ };
52
+ /** Maximum gaze cone/raycast distance in meters. @default 30 */
53
+ maxRayLength: {
54
+ type: Types.Float32;
55
+ default: number;
56
+ };
57
+ /**
58
+ * On select commit, treat the pinching hand's ray space as the pointer
59
+ * origin instead of the eyes, so a gaze-initiated drag tracks the hand.
60
+ * @default true
61
+ */
62
+ pointerTransformFollowsHand: {
63
+ type: Types.Boolean;
64
+ default: true;
65
+ };
66
+ /**
67
+ * Emit `[iwsdk][gaze]` console diagnostics explaining why gaze is or isn't
68
+ * tracked, and whether the runtime's gaze ray actually separates from the
69
+ * head ray. Each message fires at most once per state change.
70
+ * @default true
71
+ */
72
+ logDiagnostics: {
73
+ type: Types.Boolean;
74
+ default: true;
75
+ };
76
+ /** Show a developer-only gaze hit reticle. @default false */
77
+ showDebugReticle: {
78
+ type: Types.Boolean;
79
+ default: false;
80
+ };
81
+ /** Keep gaze mode active briefly after tracking becomes invalid. @default 5 */
82
+ trackingLossGraceSeconds: {
83
+ type: Types.Float32;
84
+ default: number;
85
+ };
86
+ }, {}, import("../ecs/world.js").World, import("../ecs/system.js").System<{
87
+ /**
88
+ * If true, gaze is suppressed whenever a near touch/grab pointer is in
89
+ * HOVER or SELECT. Set false to allow gaze to remain active concurrently.
90
+ * @default true
91
+ */
92
+ suppressWhenDirectPointerActive: {
93
+ type: Types.Boolean;
94
+ default: true;
95
+ };
96
+ /**
97
+ * 1€ filter min cutoff (lower = smoother, higher = more responsive).
98
+ * @default 1.5
99
+ */
100
+ filterMinCutoff: {
101
+ type: Types.Float32;
102
+ default: number;
103
+ };
104
+ /**
105
+ * 1€ filter beta (higher = less smoothing during fast saccades).
106
+ * @default 0.05
107
+ */
108
+ filterBeta: {
109
+ type: Types.Float32;
110
+ default: number;
111
+ };
112
+ /**
113
+ * Dwell window in seconds for consensus voting. `0` disables consensus.
114
+ * @default 0.15
115
+ */
116
+ dwellWindowSeconds: {
117
+ type: Types.Float32;
118
+ default: number;
119
+ };
120
+ /**
121
+ * Half-angle of the gaze selection cone, in degrees. Widening it makes
122
+ * small targets easier to acquire at the cost of more ambiguity between
123
+ * neighbours.
124
+ * @default 5
125
+ */
126
+ coneAngle: {
127
+ type: Types.Float32;
128
+ default: number;
129
+ };
130
+ /** Maximum gaze cone/raycast distance in meters. @default 30 */
131
+ maxRayLength: {
132
+ type: Types.Float32;
133
+ default: number;
134
+ };
135
+ /**
136
+ * On select commit, treat the pinching hand's ray space as the pointer
137
+ * origin instead of the eyes, so a gaze-initiated drag tracks the hand.
138
+ * @default true
139
+ */
140
+ pointerTransformFollowsHand: {
141
+ type: Types.Boolean;
142
+ default: true;
143
+ };
144
+ /**
145
+ * Emit `[iwsdk][gaze]` console diagnostics explaining why gaze is or isn't
146
+ * tracked, and whether the runtime's gaze ray actually separates from the
147
+ * head ray. Each message fires at most once per state change.
148
+ * @default true
149
+ */
150
+ logDiagnostics: {
151
+ type: Types.Boolean;
152
+ default: true;
153
+ };
154
+ /** Show a developer-only gaze hit reticle. @default false */
155
+ showDebugReticle: {
156
+ type: Types.Boolean;
157
+ default: false;
158
+ };
159
+ /** Keep gaze mode active briefly after tracking becomes invalid. @default 5 */
160
+ trackingLossGraceSeconds: {
161
+ type: Types.Float32;
162
+ default: number;
163
+ };
164
+ }, {}>>;
165
+ /**
166
+ * GazeSystem — wires the global {@link GazePointer} to ECS interactables.
167
+ *
168
+ * @remarks
169
+ * - Owns configuration and diagnostics only. The pointer itself lives on
170
+ * {@link XRInputManager} (as `input.xr.gazePointer`) so `GrabSystem` can
171
+ * identify the selecting hand; registering this system is what flips
172
+ * `input.xr.gazeEnabled` and makes gaze cost anything at all.
173
+ * - Candidates come from the same ray-target snapshot used by hand rays.
174
+ * - The pointer samples the WebXR gaze target ray itself each frame;
175
+ * `logDiagnostics` explains missing sources and invalid poses.
176
+ * - Selection is committed by either hand's pinch, with per-hand mutual
177
+ * exclusion (the hand that started the pinch owns it until release).
178
+ * - Hover and selection flow through ordinary ray pointer events, so
179
+ * {@link InputSystem} owns the shared `Hovered` / `Pressed` state.
180
+ * - Hand/controller far rays are disabled while gaze is available. Gaze is
181
+ * optionally suppressed when a near touch/grab pointer is active, so direct
182
+ * manipulation wins without an incidental far-ray hit stealing focus.
183
+ *
184
+ * @category Input
185
+ */
186
+ export declare class GazeSystem extends GazeSystem_base {
187
+ /** One-shot latch for {@link GazeSystem.warnMissingFrame}. */
188
+ private warnedMissingFrame;
189
+ init(): void;
190
+ /**
191
+ * Push system config onto the shared pointer and its candidate provider.
192
+ *
193
+ * Cone geometry and dwell live on the provider rather than the pointer, and
194
+ * only the default {@link GazeConecaster} understands them — a custom
195
+ * provider installed via `setCandidateProvider` keeps its own tuning.
196
+ */
197
+ private applyGazeConfig;
198
+ update(): void;
199
+ /**
200
+ * There's a session but no frame or reference space, so the gaze pose can't
201
+ * be sampled at all this frame. Normally a one-frame startup blip; if it
202
+ * persists, gaze is unavailable and the developer should know.
203
+ */
204
+ private warnMissingFrame;
205
+ }
206
+ export {};
207
+ //# sourceMappingURL=gaze-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaze-system.d.ts","sourceRoot":"","sources":["../../src/gaze/gaze-system.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAgB,KAAK,EAAE,MAAM,iBAAiB,CAAC;;IA0BlD;;;;OAIG;;;;;IAEH;;;OAGG;;;;;IAEH;;;OAGG;;;;;IAEH;;;OAGG;;;;;IAEH;;;;;OAKG;;;;;IAEH,gEAAgE;;;;;IAEhE;;;;OAIG;;;;;IAEH;;;;;OAKG;;;;;IAEH,6DAA6D;;;;;IAE7D,+EAA+E;;;;;;IA7C/E;;;;OAIG;;;;;IAEH;;;OAGG;;;;;IAEH;;;OAGG;;;;;IAEH;;;OAGG;;;;;IAEH;;;;;OAKG;;;;;IAEH,gEAAgE;;;;;IAEhE;;;;OAIG;;;;;IAEH;;;;;OAKG;;;;;IAEH,6DAA6D;;;;;IAE7D,+EAA+E;;;;;;AArEnF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,UAAW,SAAQ,eAmD/B;IACC,8DAA8D;IAC9D,OAAO,CAAC,kBAAkB,CAAS;IAEnC,IAAI,IAAI,IAAI;IA6BZ;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAsBvB,MAAM,IAAI,IAAI;IAWd;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAUzB"}