@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":"stateful-keyboard.js","sources":["../../src/input/stateful-keyboard.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
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":[null],"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
+ {"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":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;AASG;AACI,MAAM,SAAS,GAAG,eAAe,CACtC,WAAW,EACX,EAAE,EACF,kDAAkD;;;;"}
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"level-scene-json-importer.js","sources":["../../src/level/level-scene-json-importer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"level-scene-json-importer.js","sources":["../../src/level/level-scene-json-importer.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n assertValidSceneDocument,\n hashRuntimeSceneDocument,\n type JsonObject,\n type SceneDocument,\n type SceneCompositionDependency,\n type SceneEntityReference,\n type SceneNode,\n type SceneNodeContent,\n type SceneNodeFramingRole,\n type Sha256,\n} from '@iwsdk/scene-composition';\nimport type { Entity } from '../ecs/entity.js';\nimport type { World } from '../ecs/world.js';\nimport { Object3D } from '../runtime/index.js';\nimport {\n LEVEL_COMPONENT_PREFIX,\n LevelComponentApplier,\n} from './level-component-applier.js';\nimport { getScenePlayerTargetEntity } from './level-player-rig.js';\nimport {\n disposeLoweredSceneNodes,\n lowerSceneDocumentObjects,\n resolveSceneDocumentForLowering,\n type SceneLoweredNode,\n type SceneLoweredVirtualNode,\n} from './level-scene-object.js';\n\nexport interface SceneJSONImportedNode {\n assetId?: string;\n componentTypes: string[];\n contentType?: SceneNodeContent['type'];\n entity: Entity;\n framingRole: SceneNodeFramingRole;\n instanceIndex?: number;\n metadata?: JsonObject;\n node: SceneNode;\n nodeId: string;\n object: Object3D;\n parentNodeId?: string;\n runtimeHash: Sha256;\n sourceNodeId: string;\n}\n\nexport interface SceneJSONLoadResult {\n dependencies: SceneCompositionDependency[];\n document: SceneDocument;\n nodes: Map<string, SceneJSONImportedNode>;\n playerAttachments: Entity[];\n rootEntities: Entity[];\n runtimeHash: Sha256;\n}\n\nexport interface SceneJSONImportOptions {}\n\ninterface PendingSceneComponents {\n components: Record<string, unknown>;\n entity: Entity;\n nodeId: string;\n}\n\n/**\n * Loads native IWSDK scene JSON documents into a level root.\n *\n * @category Scene\n */\nexport class SceneJSONImporter {\n static canLoadUrl(url: string): boolean {\n const pathname = parsePathname(url);\n return (\n pathname.endsWith('.iwsdk.scene.json') || pathname.endsWith('.scene.json')\n );\n }\n\n static async load(\n world: World,\n url: string,\n parentEntity: Entity,\n _options: SceneJSONImportOptions = {},\n ): Promise<SceneJSONLoadResult> {\n if (!this.canLoadUrl(url)) {\n throw new Error(\n `Unsupported level URL \"${url}\". Expected a native .iwsdk.scene.json or .scene.json document.`,\n );\n }\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Failed to load IWSDK scene \"${url}\": ${response.status} ${response.statusText}`,\n );\n }\n\n return this.loadDocument(\n world,\n await response.json(),\n parentEntity,\n response.url || url,\n _options,\n );\n }\n\n static async loadDocument(\n world: World,\n document: SceneDocument,\n parentEntity: Entity,\n documentUrl?: string,\n _options: SceneJSONImportOptions = {},\n ): Promise<SceneJSONLoadResult> {\n const sourceDocument = structuredClone(document);\n const authoringAssets = world.assets?.catalog?.();\n const validationOptions = {\n componentCatalog: world.componentCatalog,\n ...(authoringAssets == null\n ? {}\n : { knownAssetIds: authoringAssets.map((asset) => asset.id) }),\n // Authoring review completeness is not part of the runtime projection.\n // Draft scenes that the editor can render must remain runtime-loadable.\n validateAuthoringWorkflow: false,\n validateComponentLinks: false,\n };\n assertValidSceneDocument(sourceDocument, validationOptions);\n if ((sourceDocument.imports?.length ?? 0) > 0) {\n throw new Error(\n 'Scene imports are supported only by IWSDK authoring tools. Flatten this document before loading it at runtime with \"iwsdk scene flatten --input-json \\'{\\\"path\\\":\\\"public/scenes/source.iwsdk.scene.json\\\"}\\'\".',\n );\n }\n const runtimeHash = hashRuntimeSceneDocument(sourceDocument);\n const resolvedDocument = resolveSceneDocumentForLowering(sourceDocument);\n assertValidSceneDocument(resolvedDocument, validationOptions);\n const result: SceneJSONLoadResult = {\n dependencies: [],\n document: resolvedDocument,\n nodes: new Map(),\n playerAttachments: [],\n rootEntities: [],\n runtimeHash,\n };\n\n let roots: SceneLoweredNode[] = [];\n const createdEntities: Entity[] = [];\n const pendingComponents: PendingSceneComponents[] = [];\n try {\n roots = await lowerSceneDocumentObjects(resolvedDocument, {\n loadAsset: (assetId) => world.assets.instantiate(assetId),\n resolveAssetBounds: (assetId) => world.assets.bounds(assetId),\n runtimeHash,\n });\n for (const root of roots) {\n const playerTarget = root.node.parent?.target;\n const rootParent =\n playerTarget == null\n ? parentEntity\n : getScenePlayerTargetEntity(world, playerTarget);\n if (playerTarget != null) {\n root.object.userData.iwsdkSceneAuthoredVisible = root.object.visible;\n root.object.visible = false;\n }\n const entity = this.createEntityForLoweredNode(\n world,\n root,\n rootParent,\n documentUrl,\n result,\n createdEntities,\n pendingComponents,\n );\n result.rootEntities.push(entity);\n if (playerTarget != null) {\n result.playerAttachments.push(entity);\n }\n }\n const resolveEntityReference = createSceneEntityReferenceResolver(\n world,\n parentEntity,\n result.nodes,\n );\n if (resolvedDocument.components != null) {\n LevelComponentApplier.applyComponents(\n parentEntity,\n resolvedDocument.components,\n world,\n {\n nodeId: '$root',\n resolveEntityReference,\n strict: true,\n },\n );\n }\n for (const pending of pendingComponents) {\n LevelComponentApplier.applyComponents(\n pending.entity,\n pending.components,\n world,\n {\n nodeId: pending.nodeId,\n resolveEntityReference,\n strict: true,\n },\n );\n }\n const parentObject = parentEntity.object3D ?? world.getActiveRoot();\n parentObject.userData.iwsdkSceneRuntimeHash = runtimeHash;\n parentObject.userData.iwsdkSceneDocumentMetadata = cloneJson(\n resolvedDocument.metadata,\n );\n parentObject.userData.iwsdkSceneRootComponents = cloneJson(\n resolvedDocument.components,\n );\n parentObject.userData.iwsdkSceneEnvironment = cloneJson(\n resolvedDocument.environment,\n );\n } catch (error) {\n for (const entity of createdEntities.reverse()) {\n entity.destroy();\n }\n for (const root of roots) {\n root.object.removeFromParent();\n }\n disposeLoweredSceneNodes(...roots);\n throw error;\n }\n return result;\n }\n\n private static createEntityForLoweredNode(\n world: World,\n lowered: SceneLoweredNode,\n parentEntity: Entity,\n documentUrl: string | undefined,\n result: SceneJSONLoadResult,\n createdEntities: Entity[],\n pendingComponents: PendingSceneComponents[],\n ): Entity {\n const parentObject = parentEntity.object3D ?? world.getActiveRoot();\n if (lowered.object.parent !== parentObject) {\n parentObject.add(lowered.object);\n }\n lowered.object.traverse((object) => {\n object.userData.iwsdkSceneDocumentUrl = documentUrl;\n object.userData.iwsdkSceneRuntimeHash = result.runtimeHash;\n object.userData.iwsdkSceneLevelId = world.activeLevelId;\n });\n\n const entity = world.createTransformEntity(lowered.object, parentEntity);\n createdEntities.push(entity);\n const components = withoutIntrinsicVisibility(lowered.node.components);\n if (components != null) {\n pendingComponents.push({\n components,\n entity,\n nodeId: lowered.id,\n });\n }\n addImportedNode(result, lowered, entity);\n for (const virtual of lowered.virtualNodes) {\n addVirtualImportedNode(result, virtual, entity);\n }\n for (const child of lowered.children) {\n this.createEntityForLoweredNode(\n world,\n child,\n entity,\n documentUrl,\n result,\n createdEntities,\n pendingComponents,\n );\n }\n return entity;\n }\n}\n\nfunction withoutIntrinsicVisibility(\n components: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (components == null) {\n return undefined;\n }\n const result = Object.fromEntries(\n Object.entries(components).filter(\n ([name]) =>\n name !== 'Visibility' && name !== `${LEVEL_COMPONENT_PREFIX}Visibility`,\n ),\n );\n return Object.keys(result).length === 0 ? undefined : result;\n}\n\n/** Resolve stable scene JSON entity references after all scene entities exist. */\nexport function createSceneEntityReferenceResolver(\n world: World,\n levelRoot: Entity,\n nodes: ReadonlyMap<string, { entity: Entity }>,\n): (reference: unknown) => Entity | undefined {\n return (reference) => {\n if (!isSceneEntityReference(reference)) {\n return undefined;\n }\n if (reference.type === 'node') {\n return nodes.get(reference.id)?.entity;\n }\n if (reference.type === 'player-space') {\n return getScenePlayerTargetEntity(world, reference.target);\n }\n return levelRoot;\n };\n}\n\nfunction isSceneEntityReference(value: unknown): value is SceneEntityReference {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const reference = value as Record<string, unknown>;\n return (\n (reference.type === 'node' && typeof reference.id === 'string') ||\n (reference.type === 'player-space' &&\n typeof reference.target === 'string') ||\n reference.type === 'level-root'\n );\n}\n\n/** Reveal player-space attachments after their replacement level commits. */\nexport function activateScenePlayerAttachments(\n result: SceneJSONLoadResult | undefined,\n): void {\n for (const entity of result?.playerAttachments ?? []) {\n const object = entity.object3D;\n if (object == null) {\n continue;\n }\n object.visible = object.userData.iwsdkSceneAuthoredVisible !== false;\n delete object.userData.iwsdkSceneAuthoredVisible;\n }\n}\n\nfunction addImportedNode(\n result: SceneJSONLoadResult,\n lowered: SceneLoweredNode,\n entity: Entity,\n): void {\n assertUniqueRuntimeNodeId(result, lowered.id);\n const content = lowered.node.content;\n result.nodes.set(lowered.id, {\n assetId: content?.type === 'asset' ? content.asset : undefined,\n componentTypes: Object.keys(lowered.node.components ?? {}),\n contentType: content?.type,\n entity,\n framingRole:\n lowered.object.userData.iwsdkSceneFramingRole === 'support'\n ? 'support'\n : 'content',\n metadata: cloneJson(lowered.node.metadata),\n node: lowered.node,\n nodeId: lowered.id,\n object: lowered.object,\n parentNodeId: lowered.parentNodeId,\n runtimeHash: result.runtimeHash,\n sourceNodeId: lowered.sourceNodeId,\n });\n}\n\nfunction addVirtualImportedNode(\n result: SceneJSONLoadResult,\n lowered: SceneLoweredVirtualNode,\n entity: Entity,\n): void {\n assertUniqueRuntimeNodeId(result, lowered.id);\n const content = lowered.node.content;\n result.nodes.set(lowered.id, {\n componentTypes: [],\n contentType: content?.type,\n entity,\n framingRole:\n lowered.object.userData.iwsdkSceneFramingRole === 'support'\n ? 'support'\n : 'content',\n instanceIndex: lowered.instanceIndex,\n metadata: cloneJson(lowered.node.metadata),\n node: lowered.node,\n nodeId: lowered.id,\n object: lowered.object,\n parentNodeId: lowered.parentNodeId,\n runtimeHash: result.runtimeHash,\n sourceNodeId: lowered.sourceNodeId,\n });\n}\n\nfunction assertUniqueRuntimeNodeId(\n result: SceneJSONLoadResult,\n nodeId: string,\n): void {\n if (result.nodes.has(nodeId)) {\n throw new Error(`Duplicate lowered scene node id \"${nodeId}\"`);\n }\n}\n\nfunction parsePathname(url: string): string {\n try {\n return new URL(url, 'https://iwsdk.local').pathname.toLowerCase();\n } catch {\n return url.split(/[?#]/, 1)[0].toLowerCase();\n }\n}\n\nfunction cloneJson<T>(value: T): T {\n if (value === undefined) {\n return value;\n }\n return JSON.parse(JSON.stringify(value)) as T;\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"level-scene-material.js","sources":["../../src/level/level-scene-material.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"level-scene-material.js","sources":["../../src/level/level-scene-material.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n generateSceneProceduralTexture,\n type SceneMaterial,\n type SceneMaterialTextures,\n type SceneProceduralTextureDescriptor,\n type SceneProceduralTextureChannel,\n} from '@iwsdk/scene-composition';\nimport {\n BackSide,\n ClampToEdgeWrapping,\n DataTexture,\n DoubleSide,\n FrontSide,\n LinearFilter,\n LinearMipmapLinearFilter,\n Material,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n MirroredRepeatWrapping,\n NoColorSpace,\n RepeatWrapping,\n RGBAFormat,\n SRGBColorSpace,\n Texture,\n UnsignedByteType,\n Vector2,\n} from '../runtime/index.js';\n\nconst MATERIAL_TEXTURE_PROPERTIES = [\n 'map',\n 'emissiveMap',\n 'roughnessMap',\n 'metalnessMap',\n 'aoMap',\n 'alphaMap',\n 'normalMap',\n 'bumpMap',\n] as const;\n\n/** One immutable Three.js material instance per declared resource ID. */\nexport class SceneMaterialPool {\n private readonly materials = new Map<string, Material>();\n private readonly roots = new Set<object>();\n private disposed = false;\n\n get(spec: SceneMaterial): Material {\n if (this.disposed) {\n throw new Error(\n 'Cannot resolve a material from a disposed scene material pool',\n );\n }\n const existing = this.materials.get(spec.id);\n if (existing != null) {\n return existing;\n }\n const material = createSceneMaterial(spec);\n material.userData.iwsdkSceneMaterialPooled = true;\n this.materials.set(spec.id, material);\n return material;\n }\n\n retain(root: object): void {\n if (!this.disposed) {\n this.roots.add(root);\n }\n }\n\n release(root: object): void {\n this.roots.delete(root);\n if (this.roots.size === 0) {\n this.dispose();\n }\n }\n\n dispose(): void {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n const textures = new Set<Texture>();\n for (const material of this.materials.values()) {\n collectSceneMaterialTextures(material, textures);\n material.dispose();\n }\n for (const texture of textures) {\n texture.dispose();\n }\n this.materials.clear();\n this.roots.clear();\n }\n}\n\n/** Build a Three.js built-in material from a closed scene material resource. */\nexport function createSceneMaterial(spec: SceneMaterial): Material {\n const opacity = spec.opacity ?? 1;\n const textures = 'textures' in spec ? spec.textures : undefined;\n const generated = createMaterialTextures(spec.id, textures);\n const common = {\n ...(generated.alpha == null ? {} : { alphaMap: generated.alpha }),\n color: spec.baseColor ?? (generated.albedo == null ? '#8aa0ad' : '#ffffff'),\n ...(generated.albedo == null ? {} : { map: generated.albedo }),\n opacity,\n side: resolveMaterialSide(spec.side),\n transparent: opacity < 1 || generated.alpha != null,\n };\n let material: Material;\n if (spec.model === 'basic') {\n material = new MeshBasicMaterial(common);\n } else {\n const pbr = {\n ...common,\n ...(generated.ambientOcclusion == null\n ? {}\n : { aoMap: generated.ambientOcclusion }),\n ...(generated.bump == null\n ? {}\n : { bumpMap: generated.bump, bumpScale: textures?.bump?.scale ?? 1 }),\n emissive:\n spec.emissive ?? (generated.emissive == null ? '#000000' : '#ffffff'),\n emissiveIntensity: spec.emissiveIntensity ?? 1,\n ...(generated.emissive == null\n ? {}\n : { emissiveMap: generated.emissive }),\n flatShading: spec.flatShading ?? false,\n metalness: spec.metalness ?? (generated.metalness == null ? 0 : 1),\n ...(generated.metalness == null\n ? {}\n : { metalnessMap: generated.metalness }),\n ...(generated.normal == null\n ? {}\n : {\n normalMap: generated.normal,\n normalScale: new Vector2(...(textures?.normal?.scale ?? [1, 1])),\n }),\n roughness: spec.roughness ?? (generated.roughness == null ? 0.7 : 1),\n ...(generated.roughness == null\n ? {}\n : { roughnessMap: generated.roughness }),\n };\n material =\n spec.model === 'physical'\n ? new MeshPhysicalMaterial({\n ...pbr,\n anisotropy: spec.anisotropy ?? 0,\n anisotropyRotation:\n ((spec.anisotropyRotationDeg ?? 0) * Math.PI) / 180,\n attenuationColor: spec.attenuationColor ?? '#ffffff',\n attenuationDistance: spec.attenuationDistance ?? Infinity,\n clearcoat: spec.clearcoat ?? 0,\n clearcoatRoughness: spec.clearcoatRoughness ?? 0,\n envMapIntensity: spec.envMapIntensity ?? 1,\n ior: spec.ior ?? 1.5,\n sheen: spec.sheen ?? 0,\n sheenColor: spec.sheenColor ?? '#000000',\n sheenRoughness: spec.sheenRoughness ?? 1,\n specularColor: spec.specularColor ?? '#ffffff',\n specularIntensity: spec.specularIntensity ?? 1,\n thickness: spec.thickness ?? 0,\n transmission: spec.transmission ?? 0,\n })\n : new MeshStandardMaterial(pbr);\n }\n material.name = spec.id;\n material.userData.iwsdkSceneMaterialId = spec.id;\n material.userData.iwsdkSceneMaterialModel = spec.model;\n return material;\n}\n\nexport function disposeStandaloneSceneMaterial(material: Material): void {\n if (material.userData.iwsdkSceneMaterialPooled === true) {\n return;\n }\n const textures = new Set<Texture>();\n collectSceneMaterialTextures(material, textures);\n material.dispose();\n for (const texture of textures) {\n texture.dispose();\n }\n}\n\nfunction createMaterialTextures(\n materialId: string,\n textures: SceneMaterialTextures | undefined,\n): Partial<Record<SceneProceduralTextureChannel, DataTexture>> {\n const result: Partial<Record<SceneProceduralTextureChannel, DataTexture>> =\n {};\n if (textures == null) {\n return result;\n }\n for (const [channel, descriptor] of Object.entries(textures) as [\n SceneProceduralTextureChannel,\n SceneProceduralTextureDescriptor | undefined,\n ][]) {\n if (descriptor == null) {\n continue;\n }\n result[channel] = createProceduralDataTexture(\n materialId,\n channel,\n descriptor,\n );\n }\n return result;\n}\n\nfunction createProceduralDataTexture(\n materialId: string,\n channel: SceneProceduralTextureChannel,\n descriptor: SceneProceduralTextureDescriptor,\n): DataTexture {\n const generated = generateSceneProceduralTexture(channel, descriptor);\n const texture = new DataTexture(\n generated.data,\n generated.width,\n generated.height,\n RGBAFormat,\n UnsignedByteType,\n );\n texture.name = `${materialId}:${channel}`;\n texture.colorSpace =\n channel === 'albedo' || channel === 'emissive'\n ? SRGBColorSpace\n : NoColorSpace;\n texture.flipY = false;\n texture.generateMipmaps = true;\n texture.magFilter = LinearFilter;\n texture.minFilter = LinearMipmapLinearFilter;\n const sampler = descriptor.sampler;\n texture.wrapS = resolveTextureWrap(sampler?.wrapU);\n texture.wrapT = resolveTextureWrap(sampler?.wrapV);\n texture.repeat.set(...(sampler?.repeat ?? [1, 1]));\n texture.offset.set(...(sampler?.offset ?? [0, 0]));\n texture.center.set(0.5, 0.5);\n texture.rotation = ((sampler?.rotationDeg ?? 0) * Math.PI) / 180;\n texture.anisotropy = sampler?.anisotropy ?? 1;\n texture.userData.iwsdkSceneProceduralTexture = {\n algorithm: descriptor.algorithm,\n channel,\n dataHash: generated.dataHash,\n height: generated.height,\n recipeHash: generated.recipeHash,\n width: generated.width,\n };\n texture.needsUpdate = true;\n return texture;\n}\n\nfunction collectSceneMaterialTextures(\n material: Material,\n textures: Set<Texture>,\n): void {\n const candidate = material as Material & Record<string, unknown>;\n for (const property of MATERIAL_TEXTURE_PROPERTIES) {\n const texture = candidate[property];\n if (texture instanceof Texture) {\n textures.add(texture);\n }\n }\n}\n\nfunction resolveTextureWrap(wrap: string | undefined) {\n switch (wrap) {\n case 'clamp':\n return ClampToEdgeWrapping;\n case 'mirror':\n return MirroredRepeatWrapping;\n default:\n return RepeatWrapping;\n }\n}\n\nfunction resolveMaterialSide(side: SceneMaterial['side']) {\n switch (side) {\n case 'back':\n return BackSide;\n case 'double':\n return DoubleSide;\n default:\n return FrontSide;\n }\n}\n"],"names":[],"mappings":"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"}