@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":"physicsShape.js","sources":["../../src/physics/physicsShape.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;AACO,MAAM,gBAAgB,GAAG;;AAE9B,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,GAAG,EAAE,KAAK;;AAEV,IAAA,QAAQ,EAAE,UAAU;AACpB;;AAE8C;AAC9C,IAAA,QAAQ,EAAE,UAAU;AACpB;;AAEmH;AACnH,IAAA,UAAU,EAAE,YAAY;AACxB;AAC+H;AAC/H,IAAA,OAAO,EAAE,SAAS;AAClB;;;;;;AAMG;AACH,IAAA,IAAI,EAAE,MAAM;;AAGP,MAAM,eAAe,GAAG;AACxB,MAAM,mBAAmB,GAAG;AAC5B,MAAM,gBAAgB,GAAG;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;AACI,MAAM,YAAY,GAAG,eAAe,CACzC,cAAc,EACd;;AAEE,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,gBAAgB,CAAC,IAAI;AAC/B,KAAA;;AAED,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;;IAE1D,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAE9C,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAElD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;IAC/C,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;CAClD,EACD,iDAAiD;;;;"}
1
+ {"version":3,"file":"physicsShape.js","sources":["../../src/physics/physicsShape.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/** Available physics shape types for {@link PhysicsShape}. @category Physics */\nexport const PhysicsShapeType = {\n /** The sphere is described by just the radius in dimensions[0]. Efficient for round objects. */\n Sphere: 'Sphere',\n /** A box shape is described by the `dimensions` as [width, height, depth]. Good for rectangular objects. */\n Box: 'Box',\n /** A cylinder shape is defined by the radius in dimensions[0] and height in dimensions[1]. */\n Cylinder: 'Cylinder',\n /** Capsules are similar to cylinders, but have two half-spheres on each end.\n * A Capsules shape uses radius in dimensions[0] and total end-to-end height in dimensions[1],\n * which must be at least twice the radius. */\n Capsules: 'Capsules',\n /** A convex is a shape that, if two points are part of the shape, then the segment between these two points is\n * also part of the shape. The physics engine would creates a convex wrapper around the mesh. This is a great\n * approximation for most objects since it's more accurate than primitives and much more efficient than TriMesh. */\n ConvexHull: 'ConvexHull',\n /** Uses exact mesh geometry in the physics engine. This will give the closest match to your render geometry but\n * may cause expensive compute load when two complex mesh shapes collide with each other. Typically used for static objects. */\n TriMesh: 'TriMesh',\n /** Automatically detects the best shape from the entity's Three.js geometry. The shape type mapping is\n * SphereGeometry -> PhysicsShapeType.Sphere,\n * BoxGeometry | PlaneGeometry -> PhysicsShapeType.Box,\n * CylinderGeometry -> PhysicsShapeType.Cylinder,\n * default -> PhysicsShapeType.ConvexHull,\n * When this type is selected, the dimensions field in PhysicsShape will be overridden by the size of the Three.js geometry.\n */\n Auto: 'Auto',\n} as const;\n\nexport const DEFAULT_DENSITY = 1.0;\nexport const DEFAULT_RESTITUTION = 0.0;\nexport const DEFAULT_FRICTION = 0.5;\n\n/**\n * Component for defining the collision shape and material properties of a physics entity.\n *\n * @remarks\n * - Material properties (density, restitution, friction) affect physics behavior.\n * - Higher density increases mass, affecting how the object responds to forces.\n *\n * @example Auto‑detect shape from geometry\n * ```ts\n * entity.addComponent(PhysicsShape, {\n * shape: PhysicsShapeType.Auto\n * })\n * ```\n *\n * @example Create a bouncy sphere\n * ```ts\n * entity.addComponent(PhysicsShape, {\n * shape: PhysicsShapeType.Sphere,\n * dimensions: [0.5, 0, 0], // radius = 0.5\n * restitution: 0.8, // bouncy\n * friction: 0.1 // low friction\n * })\n * ```\n *\n * @example Create a heavy box\n * ```ts\n * entity.addComponent(PhysicsShape, {\n * shape: PhysicsShapeType.Box,\n * dimensions: [2, 1, 1], // 2x1x1 meters\n * density: 5.0, // high density\n * friction: 0.9 // high friction\n * })\n * ```\n *\n * @category Physics\n * @see {@link PhysicsSystem}\n * @see {@link PhysicsBody}\n */\nexport const PhysicsShape = createComponent(\n 'PhysicsShape',\n {\n /** The type of the shape defined in the Physics engine. {@link PhysicsShapeType} */\n shape: {\n type: Types.Enum,\n enum: PhysicsShapeType,\n default: PhysicsShapeType.Auto,\n },\n /** The dimension of the physics shape. The definition of it is based on the selection of {@link PhysicsShapeType}. */\n dimensions: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },\n /** The density of the physics shape. It is used to calculate the mass. */\n density: { type: Types.Float32, default: 1.0 },\n /** Restitution controls bounciness (0 = no bounce, 1 = perfect bounce). */\n restitution: { type: Types.Float32, default: 0.0 },\n /** Friction to define the sliding behavior on surfaces. */\n friction: { type: Types.Float32, default: 0.5 },\n _engineShape: { type: Types.Float64, default: 0 },\n },\n 'Component to define physics shape of an entity.',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;AACO,MAAM,gBAAgB,GAAG;;AAE9B,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,GAAG,EAAE,KAAK;;AAEV,IAAA,QAAQ,EAAE,UAAU;AACpB;;AAE8C;AAC9C,IAAA,QAAQ,EAAE,UAAU;AACpB;;AAEmH;AACnH,IAAA,UAAU,EAAE,YAAY;AACxB;AAC+H;AAC/H,IAAA,OAAO,EAAE,SAAS;AAClB;;;;;;AAMG;AACH,IAAA,IAAI,EAAE,MAAM;;AAGP,MAAM,eAAe,GAAG;AACxB,MAAM,mBAAmB,GAAG;AAC5B,MAAM,gBAAgB,GAAG;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;AACI,MAAM,YAAY,GAAG,eAAe,CACzC,cAAc,EACd;;AAEE,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,gBAAgB,CAAC,IAAI;AAC/B,KAAA;;AAED,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;;IAE1D,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAE9C,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAElD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;IAC/C,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;CAClD,EACD,iDAAiD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/physics/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/physics/utils.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { mergeGeometries } from 'three/examples/jsm/utils/BufferGeometryUtils.js';\nimport {\n Vector3,\n Mesh,\n BoxGeometry,\n SphereGeometry,\n CylinderGeometry,\n PlaneGeometry,\n BufferGeometry,\n Box3,\n Object3D,\n Matrix4,\n Quaternion,\n} from '../runtime/index.js';\nimport { PhysicsShapeType } from './physicsShape';\n\nconst tempVec1 = new Vector3();\nconst tempVec2 = new Vector3();\nconst tempQuat = new Quaternion();\nconst tempMatrix = new Matrix4();\nconst tempMatrix2 = new Matrix4();\n\nconst UNIT_SCALE = new Vector3(1, 1, 1);\n\n/**\n * Build a sequential index buffer (`0, 1, 2, ...`) for a non-indexed geometry.\n *\n * Three.js `BufferGeometry.index` is `null` for non-indexed geometry, where the\n * position attribute already lists vertices in triangle order. Tri-mesh\n * colliders need an explicit index list, so synthesize the implicit one.\n *\n * @param vertexCount Number of vertices (i.e. `geometry.attributes.position.count`).\n */\nexport function sequentialIndices(vertexCount: number): Uint32Array {\n const indices = new Uint32Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n indices[i] = i;\n }\n return indices;\n}\n\nexport interface ShapeDetectionResult {\n shapeType: string;\n dimensions: [number, number, number] | null;\n}\n\n/**\n * Automatically detects the best physics shape type and calculates dimensions based on the entity's Three.js geometry\n */\nexport function detectShapeFromGeometry(\n object3D: Object3D,\n): ShapeDetectionResult {\n // When object3D is not a Mesh we build a merged geometry purely to inspect\n // it; it must be disposed before returning so shape auto-detection doesn't\n // leak one merged geometry per call. A Mesh's own geometry stays in use and\n // is never owned here. The try/finally guarantees disposal on every return.\n const ownsGeometry = !(object3D instanceof Mesh);\n const geometry =\n object3D instanceof Mesh\n ? object3D.geometry\n : generateMergedGeometry(object3D);\n\n try {\n // Check for specific geometry types and calculate their dimensions\n if (geometry instanceof SphereGeometry) {\n const radius = geometry.parameters.radius ?? 1;\n return {\n shapeType: PhysicsShapeType.Sphere,\n dimensions: [radius, 0, 0], // Only radius is needed for sphere\n };\n }\n\n if (geometry instanceof BoxGeometry) {\n const width = geometry.parameters.width ?? 1;\n const height = geometry.parameters.height ?? 1;\n const depth = geometry.parameters.depth ?? 1;\n return {\n shapeType: PhysicsShapeType.Box,\n dimensions: [width, height, depth],\n };\n }\n\n if (geometry instanceof PlaneGeometry) {\n const width = geometry.parameters.width ?? 1;\n const height = geometry.parameters.height ?? 1;\n const thickness = 0.01; // Thin plane\n return {\n shapeType: PhysicsShapeType.Box,\n dimensions: [width, height, thickness],\n };\n }\n\n if (geometry instanceof CylinderGeometry) {\n const radiusTop = geometry.parameters.radiusTop ?? 1;\n const radiusBottom = geometry.parameters.radiusBottom ?? 1;\n if (radiusTop !== radiusBottom) {\n console.warn(\n 'PhysicsSystem: detected cylinder with different radiusTop and radiusBottom. Using average radius for the physics shape.',\n );\n }\n const height = geometry.parameters.height ?? 1;\n const avgRadius = (radiusTop + radiusBottom) / 2;\n return {\n shapeType: PhysicsShapeType.Cylinder,\n dimensions: [avgRadius, height, 0], // Approximate bounding dimensions\n };\n }\n\n // For generic BufferGeometry, fall back to the default ConvexHull shape type for better perf\n if (geometry instanceof BufferGeometry) {\n console.log(\n `PhysicsSystem: BufferGeometry detected for object ${object3D}, using ConvexHull.`,\n );\n return {\n shapeType: PhysicsShapeType.ConvexHull,\n dimensions: null,\n };\n }\n\n // Fallback for unknown geometry types\n console.warn(\n `PhysicsSystem: Unknown geometry type for object ${object3D}, falling back to Box`,\n );\n return {\n shapeType: PhysicsShapeType.Box,\n dimensions: calculateObject3DBounds(object3D),\n };\n } finally {\n if (ownsGeometry) {\n geometry.dispose();\n }\n }\n}\n\n/**\n * Calculates bounding box dimensions from Object3D for fallback cases\n */\nexport function calculateObject3DBounds(\n object3D: Object3D,\n): [number, number, number] {\n try {\n // Create a bounding box for the object\n const box = new Box3().setFromObject(object3D);\n\n if (!box.isEmpty()) {\n const size = new Vector3();\n box.getSize(size);\n\n // Convert to half-extents and ensure minimum size\n const dimensions: [number, number, number] = [\n Math.max(size.x, 0.01),\n Math.max(size.y, 0.01),\n Math.max(size.z, 0.01),\n ];\n\n console.log(\n `PhysicsSystem: Calculated Object3D bounds: [${dimensions.join(', ')}]`,\n );\n return dimensions;\n } else {\n console.warn(\n 'PhysicsSystem: Object3D bounding box is empty, using default dimensions',\n );\n }\n } catch (error) {\n console.warn('PhysicsSystem: Failed to calculate Object3D bounds:', error);\n }\n\n // Final fallback if bounding box calculation fails\n return [1, 1, 1];\n}\n\nexport function generateMergedGeometry(object3D: Object3D): BufferGeometry {\n object3D.updateMatrixWorld(true);\n\n tempMatrix.copy(object3D.matrixWorld);\n\n tempMatrix.decompose(tempVec1, tempQuat, tempVec2);\n tempMatrix.compose(tempVec1, tempQuat, UNIT_SCALE);\n\n const geometries: BufferGeometry[] = [];\n object3D.traverse((child) => {\n if ((child as Mesh).isMesh && (child as Mesh).geometry) {\n const geometry = (child as Mesh).geometry.clone();\n geometry.applyMatrix4(child.matrixWorld);\n geometries.push(geometry);\n }\n });\n const mergedGeometry = mergeGeometries(geometries);\n // The per-child clones were only working copies for the merge; their data is\n // now copied into mergedGeometry, so free them to avoid leaking a clone of\n // every child geometry each time a merged collider is built.\n for (const geometry of geometries) {\n geometry.dispose();\n }\n tempMatrix2.copy(tempMatrix).invert();\n mergedGeometry.applyMatrix4(tempMatrix2);\n\n object3D.matrixWorld.copy(tempMatrix);\n\n return mergedGeometry;\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/project/normalize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAEV,2BAA2B,EAC3B,6BAA6B,EAE7B,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAUpB;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,6BAA6B,CAwC/B;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,2BAA2B,CAyC7B;AAED,6EAA6E;AAC7E,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,mEAAmE;AACnE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAEvE"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/project/normalize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAEV,2BAA2B,EAC3B,6BAA6B,EAE7B,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAUpB;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,6BAA6B,CAwC/B;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,2BAA2B,CAgD7B;AAED,6EAA6E;AAC7E,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,mEAAmE;AACnE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAEvE"}
@@ -57,6 +57,7 @@ function normalizeProjectWorldOptions(value) {
57
57
  }
58
58
  /** Normalize manifest-owned development settings for Vite/plugin consumers. */
59
59
  function normalizeProjectDevOptions(value) {
60
+ var _a;
60
61
  assertValidIwsdkProjectManifest(value);
61
62
  const manifest = value;
62
63
  const dev = manifest.dev;
@@ -92,6 +93,13 @@ function normalizeProjectDevOptions(value) {
92
93
  };
93
94
  return {
94
95
  ...(emulator == null ? {} : { emulator }),
96
+ ...(dev.targetDevicePreview == null
97
+ ? {}
98
+ : {
99
+ targetDevicePreview: {
100
+ gazeSimulation: (_a = dev.targetDevicePreview.gazeSimulation) !== null && _a !== void 0 ? _a : 'head',
101
+ },
102
+ }),
95
103
  };
96
104
  }
97
105
  /** Normalize an assets/components module declaration for Vite resolution. */
@@ -181,6 +189,9 @@ function normalizeFeatures(source) {
181
189
  ? source.grabbing
182
190
  : { ...source.grabbing };
183
191
  }
192
+ if (source.gaze != null) {
193
+ features.gaze = { ...source.gaze };
194
+ }
184
195
  if (source.physics != null) {
185
196
  features.physics =
186
197
  typeof source.physics === 'boolean'
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","sources":["../../src/project/normalize.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalize.js","sources":["../../src/project/normalize.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 { WorldOptions } from '../init/world-initializer.js';\nimport {\n normalizeProjectSourcePath,\n projectSceneSourcePathToRuntimeUrl,\n} from './paths.js';\nimport type {\n IwsdkProjectManifestV1,\n NormalizedProjectDevOptions,\n NormalizedProjectWorldOptions,\n ProjectFeatureOptions,\n ProjectRegexSpec,\n ProjectXRFeatureOptions,\n} from './types.js';\nimport { assertValidIwsdkProjectManifest } from './validation.js';\n\ntype RuntimeXROptions = Exclude<NonNullable<WorldOptions['xr']>, false>;\n\nconst TURNING_METHOD = {\n snap: 1,\n smooth: 2,\n} as const;\n\n/**\n * Normalize the JSON-safe world contract into the existing `World.create`\n * option shape. Asset and component values are intentionally not injected.\n */\nexport function normalizeProjectWorldOptions(\n value: unknown,\n): NormalizedProjectWorldOptions {\n assertValidIwsdkProjectManifest(value);\n const manifest = value as IwsdkProjectManifestV1;\n const source = manifest.world;\n const xr = normalizeXR(source.xr);\n\n return {\n level: projectSceneSourcePathToRuntimeUrl(manifest.scene),\n xr,\n ...(source.input == null\n ? {}\n : {\n input: {\n ...(typeof source.input.canvasPointerEvents === 'object'\n ? {\n canvasPointerEvents: {\n ...source.input.canvasPointerEvents,\n },\n }\n : 'canvasPointerEvents' in source.input\n ? {\n canvasPointerEvents: source.input.canvasPointerEvents,\n }\n : {}),\n },\n }),\n ...(source.render == null\n ? {}\n : {\n render: {\n ...source.render,\n ...(source.render.camera == null\n ? {}\n : { camera: { ...source.render.camera } }),\n },\n }),\n ...(source.features == null\n ? {}\n : { features: normalizeFeatures(source.features) }),\n };\n}\n\n/** Normalize manifest-owned development settings for Vite/plugin consumers. */\nexport function normalizeProjectDevOptions(\n value: unknown,\n): NormalizedProjectDevOptions {\n assertValidIwsdkProjectManifest(value);\n const manifest = value as IwsdkProjectManifestV1;\n const dev = manifest.dev;\n if (dev == null) {\n return {};\n }\n const sourceEmulator = dev.emulator;\n const emulator: NormalizedProjectDevOptions['emulator'] =\n sourceEmulator == null\n ? undefined\n : {\n ...(sourceEmulator.device == null\n ? {}\n : { device: sourceEmulator.device }),\n ...(sourceEmulator.iwer == null ? {} : { iwer: sourceEmulator.iwer }),\n ...(sourceEmulator.environment == null\n ? {}\n : { environment: sourceEmulator.environment }),\n ...(sourceEmulator.activation == null\n ? {}\n : {\n activation:\n typeof sourceEmulator.activation === 'object'\n ? projectRegexSpecToRegExp(sourceEmulator.activation)\n : sourceEmulator.activation,\n }),\n ...(sourceEmulator.injectOnBuild == null\n ? {}\n : { injectOnBuild: sourceEmulator.injectOnBuild }),\n ...(sourceEmulator.userAgentException == null\n ? {}\n : {\n userAgentException: projectRegexSpecToRegExp(\n sourceEmulator.userAgentException,\n ),\n }),\n };\n return {\n ...(emulator == null ? {} : { emulator }),\n ...(dev.targetDevicePreview == null\n ? {}\n : {\n targetDevicePreview: {\n gazeSimulation: dev.targetDevicePreview.gazeSimulation ?? 'head',\n },\n }),\n };\n}\n\n/** Normalize an assets/components module declaration for Vite resolution. */\nexport function normalizeProjectModuleSourcePath(sourcePath: string): string {\n return normalizeProjectSourcePath(sourcePath, 'module');\n}\n\n/** Reconstruct a validated JSON regular-expression declaration. */\nexport function projectRegexSpecToRegExp(spec: ProjectRegexSpec): RegExp {\n return new RegExp(spec.source, spec.flags ?? '');\n}\n\nfunction normalizeXR(\n source: IwsdkProjectManifestV1['world']['xr'],\n): NonNullable<WorldOptions['xr']> {\n if (source === false) {\n return false;\n }\n const sessionMode = (\n source.mode === 'vr' ? 'immersive-vr' : 'immersive-ar'\n ) as RuntimeXROptions['sessionMode'];\n return {\n sessionMode,\n ...(source.offer == null ? {} : { offer: source.offer }),\n ...(source.referenceSpace == null\n ? {}\n : {\n referenceSpace: cloneReferenceSpace(\n source.referenceSpace,\n ) as RuntimeXROptions['referenceSpace'],\n }),\n ...(source.restoreCameraOnExit == null\n ? {}\n : { restoreCameraOnExit: source.restoreCameraOnExit }),\n ...(source.launchOnSessionGranted == null\n ? {}\n : { launchOnSessionGranted: source.launchOnSessionGranted }),\n ...(source.features == null\n ? {}\n : { features: cloneXRFeatures(source.features) }),\n };\n}\n\nfunction cloneReferenceSpace(\n source: NonNullable<\n Exclude<IwsdkProjectManifestV1['world']['xr'], false>['referenceSpace']\n >,\n) {\n return typeof source === 'string'\n ? source\n : {\n ...source,\n ...(source.fallbackOrder == null\n ? {}\n : { fallbackOrder: [...source.fallbackOrder] }),\n };\n}\n\nfunction cloneXRFeatures(\n source: ProjectXRFeatureOptions,\n): NonNullable<RuntimeXROptions['features']> {\n return Object.fromEntries(\n Object.entries(source).map(([key, value]) => [\n key,\n value != null && typeof value === 'object' ? { ...value } : value,\n ]),\n ) as NonNullable<RuntimeXROptions['features']>;\n}\n\nfunction normalizeFeatures(\n source: ProjectFeatureOptions,\n): NonNullable<WorldOptions['features']> {\n const features: NonNullable<WorldOptions['features']> = {};\n if (source.locomotion != null) {\n if (typeof source.locomotion === 'boolean') {\n features.locomotion = source.locomotion;\n } else {\n const { browserControls, initialPlayerPosition, turningMethod, ...rest } =\n source.locomotion;\n features.locomotion = {\n ...rest,\n ...(initialPlayerPosition == null\n ? {}\n : {\n initialPlayerPosition: [...initialPlayerPosition],\n }),\n ...(typeof browserControls === 'object'\n ? {\n browserControls: {\n ...browserControls,\n },\n }\n : browserControls == null\n ? {}\n : { browserControls }),\n ...(turningMethod == null\n ? {}\n : {\n turningMethod: TURNING_METHOD[turningMethod],\n }),\n } as Exclude<\n NonNullable<WorldOptions['features']>['locomotion'],\n boolean | undefined\n >;\n }\n }\n if (source.grabbing != null) {\n features.grabbing =\n typeof source.grabbing === 'boolean'\n ? source.grabbing\n : { ...source.grabbing };\n }\n if (source.gaze != null) {\n features.gaze = { ...source.gaze };\n }\n if (source.physics != null) {\n features.physics =\n typeof source.physics === 'boolean'\n ? source.physics\n : { ...source.physics };\n }\n if (source.sceneUnderstanding != null) {\n features.sceneUnderstanding =\n typeof source.sceneUnderstanding === 'boolean'\n ? source.sceneUnderstanding\n : { ...source.sceneUnderstanding };\n }\n if (source.environmentRaycast != null) {\n features.environmentRaycast = source.environmentRaycast;\n }\n if (source.camera != null) {\n features.camera = source.camera;\n }\n if (source.spatialUI != null) {\n features.spatialUI =\n typeof source.spatialUI === 'boolean'\n ? source.spatialUI\n : { ...source.spatialUI };\n }\n return features;\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sources":["../../src/project/paths.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AAIH;AACM,MAAO,sBAAuB,SAAQ,KAAK,CAAA;AAC/C,IAAA,WAAA,CACW,UAAkB,EAClB,IAA2B,EACpC,OAAe,EAAA;QAEf,KAAK,CAAC,OAAO,CAAC;QAJL,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,IAAI,GAAJ,IAAI;AAIb,QAAA,IAAI,CAAC,IAAI,GAAG,wBAAwB;IACtC;AACD;AAED;;;AAGG;AACG,SAAU,0BAA0B,CACxC,UAAkB,EAClB,IAA2B,EAAA;AAE3B,IAAA,MAAM,IAAI,GAAG,CAAC,OAAe,KAAW;QACtC,MAAM,IAAI,sBAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC;AAC7D,IAAA,CAAC;AAED,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7D,QAAA,OAAO,IAAI,CAAC,CAAA,EAAG,IAAI,CAAA,uBAAA,CAAyB,CAAC;IAC/C;AACA,IAAA,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE;AACpC,QAAA,OAAO,IAAI,CAAC,CAAA,EAAG,IAAI,CAAA,kDAAA,CAAoD,CAAC;IAC1E;AACA,IAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7B,QAAA,OAAO,IAAI,CAAC,CAAA,EAAG,IAAI,CAAA,kCAAA,CAAoC,CAAC;IAC1D;AACA,IAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7B,QAAA,OAAO,IAAI,CAAC,CAAA,EAAG,IAAI,CAAA,8BAAA,CAAgC,CAAC;IACtD;AACA,IAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxD,QAAA,OAAO,IAAI,CAAC,CAAA,EAAG,IAAI,CAAA,0CAAA,CAA4C,CAAC;IAClE;AACA,IAAA,IACE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;AAC1B,QAAA,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3B,QAAA,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,EAC5C;AACA,QAAA,OAAO,IAAI,CAAC,CAAA,EAAG,IAAI,CAAA,2CAAA,CAA6C,CAAC;IACnE;AAEA,IAAA,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI;AAC9C,UAAE,UAAU,CAAC,KAAK,CAAC,CAAC;UAClB,UAAU;IACd,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AACzC,IAAA,IACE,QAAQ,CAAC,MAAM,KAAK,CAAC;QACrB,QAAQ,CAAC,IAAI,CACX,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,CACzE,EACD;AACA,QAAA,OAAO,IAAI,CAAC,CAAA,EAAG,IAAI,CAAA,mDAAA,CAAqD,CAAC;IAC3E;AAEA,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,QAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACxD,YAAA,OAAO,IAAI,CAAC,4CAA4C,CAAC;QAC3D;QACA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAChD,YAAA,OAAO,IAAI,CAAC,4CAA4C,CAAC;QAC3D;IACF;SAAO;QACL,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAE;AACjC,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,mCAAmC,CAAC;QAClD;IACF;IAEA,OAAO,CAAA,EAAA,EAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAClC;AAEA;AACM,SAAU,kCAAkC,CAAC,UAAkB,EAAA;IACnE,MAAM,UAAU,GAAG,0BAA0B,CAAC,UAAU,EAAE,OAAO,CAAC;IAClE,OAAO,CAAA,EAAA,EAAK,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA,CAAE;AACpD;;;;"}
1
+ {"version":3,"file":"paths.js","sources":["../../src/project/paths.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 type ProjectSourcePathKind = 'module' | 'scene';\n\n/** Error raised when a project source path is not lexically root-confined. */\nexport class ProjectSourcePathError extends Error {\n constructor(\n readonly sourcePath: string,\n readonly kind: ProjectSourcePathKind,\n message: string,\n ) {\n super(message);\n this.name = 'ProjectSourcePathError';\n }\n}\n\n/**\n * Validate and normalize a project-owned source path without filesystem or\n * Node dependencies. Returned paths always begin with `./` and use `/`.\n */\nexport function normalizeProjectSourcePath(\n sourcePath: string,\n kind: ProjectSourcePathKind,\n): string {\n const fail = (message: string): never => {\n throw new ProjectSourcePathError(sourcePath, kind, message);\n };\n\n if (sourcePath.length === 0 || sourcePath.trim().length === 0) {\n return fail(`${kind} path must not be blank`);\n }\n if (sourcePath !== sourcePath.trim()) {\n return fail(`${kind} path must not have leading or trailing whitespace`);\n }\n if (sourcePath.includes('\\0')) {\n return fail(`${kind} path must not contain a null byte`);\n }\n if (sourcePath.includes('\\\\')) {\n return fail(`${kind} path must use forward slashes`);\n }\n if (sourcePath.includes('?') || sourcePath.includes('#')) {\n return fail(`${kind} path must not contain a query or fragment`);\n }\n if (\n sourcePath.startsWith('/') ||\n sourcePath.startsWith('//') ||\n /^[A-Za-z][A-Za-z\\d+.-]*:/u.test(sourcePath)\n ) {\n return fail(`${kind} path must be a local project-relative path`);\n }\n\n const withoutPrefix = sourcePath.startsWith('./')\n ? sourcePath.slice(2)\n : sourcePath;\n const segments = withoutPrefix.split('/');\n if (\n segments.length === 0 ||\n segments.some(\n (segment) => segment.length === 0 || segment === '.' || segment === '..',\n )\n ) {\n return fail(`${kind} path must not contain empty, \".\", or \"..\" segments`);\n }\n\n if (kind === 'scene') {\n if (segments[0] !== 'public' || segments[1] !== 'scenes') {\n return fail('scene path must stay inside public/scenes/');\n }\n if (!withoutPrefix.endsWith('.iwsdk.scene.json')) {\n return fail('scene path must end with .iwsdk.scene.json');\n }\n } else {\n const fileName = segments.at(-1)!;\n if (fileName.startsWith('.') || fileName.includes('.')) {\n return fail('module path must be extensionless');\n }\n }\n\n return `./${segments.join('/')}`;\n}\n\n/** Convert a validated public scene source path into its runtime URL. */\nexport function projectSceneSourcePathToRuntimeUrl(sourcePath: string): string {\n const normalized = normalizeProjectSourcePath(sourcePath, 'scene');\n return `./${normalized.slice('./public/'.length)}`;\n}\n"],"names":[],"mappings":"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"}
@@ -32,6 +32,9 @@ export interface ProjectXRFeatureOptions {
32
32
  depthSensing?: ProjectDepthSensingFlag;
33
33
  layers?: ProjectXRFeatureFlag;
34
34
  unbounded?: ProjectXRFeatureFlag;
35
+ gazeTracking?: ProjectXRFeatureFlag;
36
+ /** @deprecated Alias of {@link ProjectXRFeatureOptions.gazeTracking}. */
37
+ eyeTracking?: ProjectXRFeatureFlag;
35
38
  }
36
39
  export type ProjectReferenceSpaceSpec = ProjectReferenceSpaceType | {
37
40
  type?: ProjectReferenceSpaceType;
@@ -90,6 +93,23 @@ export type ProjectPhysicsOptions = boolean | {
90
93
  export type ProjectSceneUnderstandingOptions = boolean | {
91
94
  showWireFrame?: boolean;
92
95
  };
96
+ /**
97
+ * Tuning for gaze + pinch. `GazeSystem` registration is driven by the
98
+ * `xr.features.gazeTracking` session feature, not by this entry — these values
99
+ * only override the system's defaults when gaze is already active.
100
+ */
101
+ export interface ProjectGazeOptions {
102
+ coneAngle?: number;
103
+ maxRayLength?: number;
104
+ dwellWindowSeconds?: number;
105
+ filterMinCutoff?: number;
106
+ filterBeta?: number;
107
+ suppressWhenDirectPointerActive?: boolean;
108
+ pointerTransformFollowsHand?: boolean;
109
+ logDiagnostics?: boolean;
110
+ showDebugReticle?: boolean;
111
+ trackingLossGraceSeconds?: number;
112
+ }
93
113
  export type ProjectSpatialUIOptions = boolean | {
94
114
  forwardHtmlEvents?: boolean;
95
115
  kit?: 'default' | 'horizon';
@@ -98,6 +118,7 @@ export type ProjectSpatialUIOptions = boolean | {
98
118
  export interface ProjectFeatureOptions {
99
119
  locomotion?: ProjectLocomotionOptions;
100
120
  grabbing?: ProjectGrabbingOptions;
121
+ gaze?: ProjectGazeOptions;
101
122
  physics?: ProjectPhysicsOptions;
102
123
  sceneUnderstanding?: ProjectSceneUnderstandingOptions;
103
124
  environmentRaycast?: boolean;
@@ -110,7 +131,7 @@ export interface ProjectWorldConfiguration {
110
131
  render?: ProjectRenderOptions;
111
132
  features?: ProjectFeatureOptions;
112
133
  }
113
- export type ProjectEmulatorDevice = 'metaQuest2' | 'metaQuest3' | 'metaQuestPro' | 'oculusQuest1';
134
+ export type ProjectEmulatorDevice = 'metaQuest2' | 'metaQuest3' | 'metaQuestPro' | 'metaVRGlasses' | 'oculusQuest1';
114
135
  export type ProjectEmulatorEnvironment = 'living_room' | 'meeting_room' | 'music_room' | 'office_large' | 'office_small';
115
136
  export interface ProjectEmulatorOptions {
116
137
  device?: ProjectEmulatorDevice;
@@ -120,8 +141,14 @@ export interface ProjectEmulatorOptions {
120
141
  injectOnBuild?: boolean;
121
142
  userAgentException?: ProjectRegexSpec;
122
143
  }
144
+ export interface ProjectTargetDevicePreviewOptions {
145
+ /** Add a viewer-directed gaze source when the app requests gaze. @defaultValue 'head' */
146
+ gazeSimulation?: 'head' | false;
147
+ }
123
148
  export interface ProjectDevOptions {
124
149
  emulator?: ProjectEmulatorOptions;
150
+ /** Development-only preview layered on the browser's native XR session. */
151
+ targetDevicePreview?: ProjectTargetDevicePreviewOptions;
125
152
  }
126
153
  export interface ProjectModuleDeclaration {
127
154
  /** Extensionless, project-root-confined browser module source path. */
@@ -151,8 +178,11 @@ export interface NormalizedProjectDevOptions {
151
178
  injectOnBuild?: boolean;
152
179
  userAgentException?: RegExp;
153
180
  };
181
+ targetDevicePreview?: {
182
+ gazeSimulation: 'head' | false;
183
+ };
154
184
  }
155
- export type ProjectManifestValidationIssueCode = 'enum' | 'invalid-path' | 'invalid-regex' | 'required' | 'type' | 'unknown-key';
185
+ export type ProjectManifestValidationIssueCode = 'enum' | 'invalid-path' | 'invalid-regex' | 'range' | 'required' | 'type' | 'unknown-key';
156
186
  export interface ProjectManifestValidationIssue {
157
187
  path: string;
158
188
  code: ProjectManifestValidationIssueCode;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/project/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/project/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../src/project/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AAIH;AACO,MAAM,8BAA8B,GAAG;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../src/project/types.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 { WorldOptions } from '../init/world-initializer.js';\n\n/** Version discriminator for the first IWSDK project manifest contract. */\nexport const IWSDK_PROJECT_MANIFEST_VERSION = 'iwsdk.project.v1' as const;\n\n/** JSON representation of a regular expression used by development tooling. */\nexport interface ProjectRegexSpec {\n source: string;\n flags?: string;\n}\n\nexport type ProjectXRMode = 'vr' | 'ar';\nexport type ProjectXROffer = 'none' | 'once' | 'always';\nexport type ProjectReferenceSpaceType =\n | 'bounded-floor'\n | 'local'\n | 'local-floor'\n | 'unbounded'\n | 'viewer';\n\nexport type ProjectXRFeatureFlag = boolean | { required?: boolean };\n\nexport type ProjectDepthSensingFlag =\n | boolean\n | {\n required?: boolean;\n usage?: 'cpu-optimized' | 'gpu-optimized';\n format?: 'luminance-alpha' | 'float32';\n };\n\nexport interface ProjectXRFeatureOptions {\n handTracking?: ProjectXRFeatureFlag;\n anchors?: ProjectXRFeatureFlag;\n hitTest?: ProjectXRFeatureFlag;\n planeDetection?: ProjectXRFeatureFlag;\n meshDetection?: ProjectXRFeatureFlag;\n depthSensing?: ProjectDepthSensingFlag;\n layers?: ProjectXRFeatureFlag;\n unbounded?: ProjectXRFeatureFlag;\n gazeTracking?: ProjectXRFeatureFlag;\n /** @deprecated Alias of {@link ProjectXRFeatureOptions.gazeTracking}. */\n eyeTracking?: ProjectXRFeatureFlag;\n}\n\nexport type ProjectReferenceSpaceSpec =\n | ProjectReferenceSpaceType\n | {\n type?: ProjectReferenceSpaceType;\n required?: boolean;\n fallbackOrder?: ProjectReferenceSpaceType[];\n };\n\nexport interface ProjectXROptions {\n mode: ProjectXRMode;\n offer?: ProjectXROffer;\n referenceSpace?: ProjectReferenceSpaceSpec;\n restoreCameraOnExit?: boolean;\n launchOnSessionGranted?: boolean;\n features?: ProjectXRFeatureOptions;\n}\n\nexport interface ProjectCameraOptions {\n position?: [number, number, number];\n rotation?: [number, number, number];\n quaternion?: [number, number, number, number];\n lookAt?: [number, number, number];\n}\n\nexport interface ProjectRenderOptions {\n fov?: number;\n near?: number;\n far?: number;\n stencil?: boolean;\n camera?: ProjectCameraOptions;\n}\n\nexport type ProjectCanvasPointerEventsOption =\n | boolean\n | {\n enabled?: boolean;\n activeDuringXR?: boolean;\n };\n\nexport interface ProjectInputOptions {\n canvasPointerEvents?: ProjectCanvasPointerEventsOption;\n}\n\nexport type ProjectBrowserLocomotionControls =\n | boolean\n | {\n keyboard?: boolean;\n gamepad?: boolean;\n };\n\nexport type ProjectTurningMethod = 'snap' | 'smooth';\n\nexport type ProjectLocomotionOptions =\n | boolean\n | {\n useWorker?: boolean;\n initialPlayerPosition?: [number, number, number];\n comfortAssistLevel?: number;\n turningMethod?: ProjectTurningMethod;\n enableJumping?: boolean;\n browserControls?: ProjectBrowserLocomotionControls;\n };\n\nexport type ProjectGrabbingOptions =\n | boolean\n | { useHandPinchForGrab?: boolean };\n\nexport type ProjectPhysicsOptions =\n | boolean\n | {\n useWorker?: boolean;\n updateFrequency?: number;\n interpolation?: boolean;\n };\n\nexport type ProjectSceneUnderstandingOptions =\n | boolean\n | { showWireFrame?: boolean };\n\n/**\n * Tuning for gaze + pinch. `GazeSystem` registration is driven by the\n * `xr.features.gazeTracking` session feature, not by this entry — these values\n * only override the system's defaults when gaze is already active.\n */\nexport interface ProjectGazeOptions {\n coneAngle?: number;\n maxRayLength?: number;\n dwellWindowSeconds?: number;\n filterMinCutoff?: number;\n filterBeta?: number;\n suppressWhenDirectPointerActive?: boolean;\n pointerTransformFollowsHand?: boolean;\n logDiagnostics?: boolean;\n showDebugReticle?: boolean;\n trackingLossGraceSeconds?: number;\n}\n\nexport type ProjectSpatialUIOptions =\n | boolean\n | {\n forwardHtmlEvents?: boolean;\n kit?: 'default' | 'horizon';\n preferredColorScheme?: 'system' | 'light' | 'dark';\n };\n\nexport interface ProjectFeatureOptions {\n locomotion?: ProjectLocomotionOptions;\n grabbing?: ProjectGrabbingOptions;\n gaze?: ProjectGazeOptions;\n physics?: ProjectPhysicsOptions;\n sceneUnderstanding?: ProjectSceneUnderstandingOptions;\n environmentRaycast?: boolean;\n camera?: boolean;\n spatialUI?: ProjectSpatialUIOptions;\n}\n\nexport interface ProjectWorldConfiguration {\n xr: false | ProjectXROptions;\n input?: ProjectInputOptions;\n render?: ProjectRenderOptions;\n features?: ProjectFeatureOptions;\n}\n\nexport type ProjectEmulatorDevice =\n | 'metaQuest2'\n | 'metaQuest3'\n | 'metaQuestPro'\n | 'metaVRGlasses'\n | 'oculusQuest1';\n\nexport type ProjectEmulatorEnvironment =\n | 'living_room'\n | 'meeting_room'\n | 'music_room'\n | 'office_large'\n | 'office_small';\n\nexport interface ProjectEmulatorOptions {\n device?: ProjectEmulatorDevice;\n iwer?: boolean;\n environment?: ProjectEmulatorEnvironment;\n activation?: 'localhost' | 'always' | ProjectRegexSpec;\n injectOnBuild?: boolean;\n userAgentException?: ProjectRegexSpec;\n}\n\nexport interface ProjectTargetDevicePreviewOptions {\n /** Add a viewer-directed gaze source when the app requests gaze. @defaultValue 'head' */\n gazeSimulation?: 'head' | false;\n}\n\nexport interface ProjectDevOptions {\n emulator?: ProjectEmulatorOptions;\n /** Development-only preview layered on the browser's native XR session. */\n targetDevicePreview?: ProjectTargetDevicePreviewOptions;\n}\n\nexport interface ProjectModuleDeclaration {\n /** Extensionless, project-root-confined browser module source path. */\n module: string;\n}\n\n/** Declarative, JSON-safe IWSDK project authority. */\nexport interface IwsdkProjectManifestV1 {\n $schema?: string;\n version: typeof IWSDK_PROJECT_MANIFEST_VERSION;\n /** Project source path under public/ ending in .iwsdk.scene.json. */\n scene: string;\n assets?: ProjectModuleDeclaration;\n components?: ProjectModuleDeclaration;\n world: ProjectWorldConfiguration;\n dev?: ProjectDevOptions;\n}\n\n/** World options produced before Vite injects executable asset/component manifests. */\nexport type NormalizedProjectWorldOptions = Omit<\n WorldOptions,\n 'assets' | 'components'\n> & {\n level: string;\n};\n\nexport interface NormalizedProjectDevOptions {\n emulator?: {\n device?: ProjectEmulatorDevice;\n iwer?: boolean;\n environment?: ProjectEmulatorEnvironment;\n activation?: 'localhost' | 'always' | RegExp;\n injectOnBuild?: boolean;\n userAgentException?: RegExp;\n };\n targetDevicePreview?: {\n gazeSimulation: 'head' | false;\n };\n}\n\nexport type ProjectManifestValidationIssueCode =\n | 'enum'\n | 'invalid-path'\n | 'invalid-regex'\n | 'range'\n | 'required'\n | 'type'\n | 'unknown-key';\n\nexport interface ProjectManifestValidationIssue {\n path: string;\n code: ProjectManifestValidationIssueCode;\n message: string;\n}\n\nexport interface ProjectManifestValidationResult {\n valid: boolean;\n issues: ProjectManifestValidationIssue[];\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAIH;AACO,MAAM,8BAA8B,GAAG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/project/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,EAEnC,KAAK,+BAA+B,EACrC,MAAM,YAAY,CAAC;AA0BpB,gEAAgE;AAChE,qBAAa,8BAA+B,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,8BAA8B,EAAE;gBAAjD,MAAM,EAAE,SAAS,8BAA8B,EAAE;CAQvE;AAED,4DAA4D;AAC5D,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,+BAA+B,CAoCjC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,sBAAsB,CAEjC;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAKzC"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/project/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,EAEnC,KAAK,+BAA+B,EACrC,MAAM,YAAY,CAAC;AA2BpB,gEAAgE;AAChE,qBAAa,8BAA+B,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,8BAA8B,EAAE;gBAAjD,MAAM,EAAE,SAAS,8BAA8B,EAAE;CAQvE;AAED,4DAA4D;AAC5D,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,+BAA+B,CAoCjC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,sBAAsB,CAEjC;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAKzC"}
@@ -19,6 +19,7 @@ const DEVICES = [
19
19
  'metaQuest2',
20
20
  'metaQuest3',
21
21
  'metaQuestPro',
22
+ 'metaVRGlasses',
22
23
  'oculusQuest1',
23
24
  ];
24
25
  const ENVIRONMENTS = [
@@ -159,6 +160,8 @@ function validateXRFeatures(value, path, issues) {
159
160
  'depthSensing',
160
161
  'layers',
161
162
  'unbounded',
163
+ 'gazeTracking',
164
+ 'eyeTracking',
162
165
  ];
163
166
  const features = objectValue(value, path, featureNames, [], issues);
164
167
  if (features == null) {
@@ -258,6 +261,7 @@ function validateFeatures(value, path, issues) {
258
261
  const features = objectValue(value, path, [
259
262
  'locomotion',
260
263
  'grabbing',
264
+ 'gaze',
261
265
  'physics',
262
266
  'sceneUnderstanding',
263
267
  'environmentRaycast',
@@ -273,6 +277,9 @@ function validateFeatures(value, path, issues) {
273
277
  if ('grabbing' in features) {
274
278
  validateBooleanOrObject(features.grabbing, `${path}.grabbing`, ['useHandPinchForGrab'], issues);
275
279
  }
280
+ if ('gaze' in features) {
281
+ validateGaze(features.gaze, `${path}.gaze`, issues);
282
+ }
276
283
  if ('physics' in features) {
277
284
  validatePhysics(features.physics, `${path}.physics`, issues);
278
285
  }
@@ -356,6 +363,49 @@ function validateBrowserControls(value, path, issues) {
356
363
  }
357
364
  }
358
365
  }
366
+ const GAZE_NUMBER_KEYS = [
367
+ 'coneAngle',
368
+ 'maxRayLength',
369
+ 'dwellWindowSeconds',
370
+ 'filterMinCutoff',
371
+ 'filterBeta',
372
+ 'trackingLossGraceSeconds',
373
+ ];
374
+ const GAZE_BOOLEAN_KEYS = [
375
+ 'suppressWhenDirectPointerActive',
376
+ 'pointerTransformFollowsHand',
377
+ 'logDiagnostics',
378
+ 'showDebugReticle',
379
+ ];
380
+ function validateGaze(value, path, issues) {
381
+ const gaze = objectValue(value, path, [...GAZE_NUMBER_KEYS, ...GAZE_BOOLEAN_KEYS], [], issues);
382
+ if (gaze == null) {
383
+ return;
384
+ }
385
+ for (const key of GAZE_NUMBER_KEYS) {
386
+ if (key in gaze) {
387
+ const property = `${path}.${key}`;
388
+ if (numberValue(gaze[key], property, issues)) {
389
+ const allowsZero = key === 'dwellWindowSeconds' ||
390
+ key === 'filterBeta' ||
391
+ key === 'trackingLossGraceSeconds';
392
+ const number = gaze[key];
393
+ const invalidMinimum = allowsZero ? number < 0 : number <= 0;
394
+ const invalidMaximum = key === 'coneAngle' && number >= 180;
395
+ if (invalidMinimum || invalidMaximum) {
396
+ addIssue(issues, property, 'range', key === 'coneAngle'
397
+ ? 'expected a number greater than 0 and less than 180'
398
+ : `expected a ${allowsZero ? 'non-negative' : 'positive'} number`);
399
+ }
400
+ }
401
+ }
402
+ }
403
+ for (const key of GAZE_BOOLEAN_KEYS) {
404
+ if (key in gaze) {
405
+ booleanValue(gaze[key], `${path}.${key}`, issues);
406
+ }
407
+ }
408
+ }
359
409
  function validateSpatialUI(value, path, issues) {
360
410
  if (typeof value === 'boolean') {
361
411
  return;
@@ -388,8 +438,19 @@ function validateBooleanOrObject(value, path, booleanKeys, issues) {
388
438
  }
389
439
  }
390
440
  }
441
+ function validateTargetDevicePreview(value, path, issues) {
442
+ const preview = objectValue(value, path, ['gazeSimulation'], [], issues);
443
+ if (preview == null) {
444
+ return;
445
+ }
446
+ if ('gazeSimulation' in preview) {
447
+ if (preview.gazeSimulation !== false) {
448
+ enumValue(preview.gazeSimulation, `${path}.gazeSimulation`, ['head'], issues);
449
+ }
450
+ }
451
+ }
391
452
  function validateDev(value, path, issues) {
392
- const dev = objectValue(value, path, ['emulator'], [], issues);
453
+ const dev = objectValue(value, path, ['emulator', 'targetDevicePreview'], [], issues);
393
454
  if (dev == null) {
394
455
  return;
395
456
  }
@@ -428,6 +489,9 @@ function validateDev(value, path, issues) {
428
489
  }
429
490
  }
430
491
  }
492
+ if ('targetDevicePreview' in dev) {
493
+ validateTargetDevicePreview(dev.targetDevicePreview, `${path}.targetDevicePreview`, issues);
494
+ }
431
495
  }
432
496
  function validateRegexSpec(value, path, issues) {
433
497
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sources":["../../src/project/validation.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sources":["../../src/project/validation.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 { normalizeProjectSourcePath } from './paths.js';\nimport {\n IWSDK_PROJECT_MANIFEST_VERSION,\n type IwsdkProjectManifestV1,\n type ProjectManifestValidationIssue,\n type ProjectManifestValidationIssueCode,\n type ProjectManifestValidationResult,\n} from './types.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst REFERENCE_SPACE_TYPES = [\n 'bounded-floor',\n 'local',\n 'local-floor',\n 'unbounded',\n 'viewer',\n] as const;\nconst OFFER_VALUES = ['none', 'once', 'always'] as const;\nconst DEVICES = [\n 'metaQuest2',\n 'metaQuest3',\n 'metaQuestPro',\n 'metaVRGlasses',\n 'oculusQuest1',\n] as const;\nconst ENVIRONMENTS = [\n 'living_room',\n 'meeting_room',\n 'music_room',\n 'office_large',\n 'office_small',\n] as const;\n\n/** Error containing every issue found in a project manifest. */\nexport class ProjectManifestValidationError extends Error {\n constructor(readonly issues: readonly ProjectManifestValidationIssue[]) {\n super(\n `Invalid IWSDK project manifest:\\n${issues\n .map((issue) => `${issue.path}: ${issue.message}`)\n .join('\\n')}`,\n );\n this.name = 'ProjectManifestValidationError';\n }\n}\n\n/** Validate the closed `iwsdk.project.v1` JSON contract. */\nexport function validateIwsdkProjectManifest(\n value: unknown,\n): ProjectManifestValidationResult {\n const issues: ProjectManifestValidationIssue[] = [];\n const root = objectValue(\n value,\n '$',\n ['$schema', 'version', 'scene', 'assets', 'components', 'world', 'dev'],\n ['version', 'scene', 'world'],\n issues,\n );\n if (root == null) {\n return { valid: false, issues };\n }\n\n if ('$schema' in root) {\n stringValue(root.$schema, '$.$schema', issues);\n }\n enumValue(\n root.version,\n '$.version',\n [IWSDK_PROJECT_MANIFEST_VERSION],\n issues,\n `unsupported project manifest version; expected \"${IWSDK_PROJECT_MANIFEST_VERSION}\"`,\n );\n validateSourcePath(root.scene, '$.scene', 'scene', issues);\n if ('assets' in root) {\n validateModuleDeclaration(root.assets, '$.assets', issues);\n }\n if ('components' in root) {\n validateModuleDeclaration(root.components, '$.components', issues);\n }\n validateWorld(root.world, '$.world', issues);\n if ('dev' in root) {\n validateDev(root.dev, '$.dev', issues);\n }\n\n return { valid: issues.length === 0, issues };\n}\n\nexport function isIwsdkProjectManifest(\n value: unknown,\n): value is IwsdkProjectManifestV1 {\n return validateIwsdkProjectManifest(value).valid;\n}\n\nexport function assertValidIwsdkProjectManifest(\n value: unknown,\n): asserts value is IwsdkProjectManifestV1 {\n const result = validateIwsdkProjectManifest(value);\n if (!result.valid) {\n throw new ProjectManifestValidationError(result.issues);\n }\n}\n\nfunction validateModuleDeclaration(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const declaration = objectValue(value, path, ['module'], ['module'], issues);\n if (declaration != null) {\n validateSourcePath(declaration.module, `${path}.module`, 'module', issues);\n }\n}\n\nfunction validateWorld(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const world = objectValue(\n value,\n path,\n ['xr', 'input', 'render', 'features'],\n ['xr'],\n issues,\n );\n if (world == null) {\n return;\n }\n validateXR(world.xr, `${path}.xr`, issues);\n if ('input' in world) {\n validateInput(world.input, `${path}.input`, issues);\n }\n if ('render' in world) {\n validateRender(world.render, `${path}.render`, issues);\n }\n if ('features' in world) {\n validateFeatures(world.features, `${path}.features`, issues);\n }\n}\n\nfunction validateXR(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (value === false) {\n return;\n }\n const xr = objectValue(\n value,\n path,\n [\n 'mode',\n 'offer',\n 'referenceSpace',\n 'restoreCameraOnExit',\n 'launchOnSessionGranted',\n 'features',\n ],\n ['mode'],\n issues,\n );\n if (xr == null) {\n return;\n }\n enumValue(xr.mode, `${path}.mode`, ['vr', 'ar'], issues);\n if ('offer' in xr) {\n enumValue(xr.offer, `${path}.offer`, OFFER_VALUES, issues);\n }\n if ('referenceSpace' in xr) {\n validateReferenceSpace(xr.referenceSpace, `${path}.referenceSpace`, issues);\n }\n if ('restoreCameraOnExit' in xr) {\n booleanValue(xr.restoreCameraOnExit, `${path}.restoreCameraOnExit`, issues);\n }\n if ('launchOnSessionGranted' in xr) {\n booleanValue(\n xr.launchOnSessionGranted,\n `${path}.launchOnSessionGranted`,\n issues,\n );\n }\n if ('features' in xr) {\n validateXRFeatures(xr.features, `${path}.features`, issues);\n }\n}\n\nfunction validateReferenceSpace(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'string') {\n enumValue(value, path, REFERENCE_SPACE_TYPES, issues);\n return;\n }\n const reference = objectValue(\n value,\n path,\n ['type', 'required', 'fallbackOrder'],\n [],\n issues,\n );\n if (reference == null) {\n return;\n }\n if ('type' in reference) {\n enumValue(reference.type, `${path}.type`, REFERENCE_SPACE_TYPES, issues);\n }\n if ('required' in reference) {\n booleanValue(reference.required, `${path}.required`, issues);\n }\n if ('fallbackOrder' in reference) {\n if (!Array.isArray(reference.fallbackOrder)) {\n addIssue(issues, `${path}.fallbackOrder`, 'type', 'expected an array');\n } else {\n reference.fallbackOrder.forEach((entry, index) =>\n enumValue(\n entry,\n `${path}.fallbackOrder[${index}]`,\n REFERENCE_SPACE_TYPES,\n issues,\n ),\n );\n }\n }\n}\n\nfunction validateXRFeatures(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const featureNames = [\n 'handTracking',\n 'anchors',\n 'hitTest',\n 'planeDetection',\n 'meshDetection',\n 'depthSensing',\n 'layers',\n 'unbounded',\n 'gazeTracking',\n 'eyeTracking',\n ] as const;\n const features = objectValue(value, path, featureNames, [], issues);\n if (features == null) {\n return;\n }\n for (const name of featureNames) {\n if (!(name in features)) {\n continue;\n }\n if (name === 'depthSensing') {\n validateDepthSensing(features[name], `${path}.${name}`, issues);\n } else {\n validateFeatureFlag(features[name], `${path}.${name}`, issues);\n }\n }\n}\n\nfunction validateFeatureFlag(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const flag = objectValue(value, path, ['required'], [], issues);\n if (flag != null && 'required' in flag) {\n booleanValue(flag.required, `${path}.required`, issues);\n }\n}\n\nfunction validateDepthSensing(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const depth = objectValue(\n value,\n path,\n ['required', 'usage', 'format'],\n [],\n issues,\n );\n if (depth == null) {\n return;\n }\n if ('required' in depth) {\n booleanValue(depth.required, `${path}.required`, issues);\n }\n if ('usage' in depth) {\n enumValue(\n depth.usage,\n `${path}.usage`,\n ['cpu-optimized', 'gpu-optimized'],\n issues,\n );\n }\n if ('format' in depth) {\n enumValue(\n depth.format,\n `${path}.format`,\n ['luminance-alpha', 'float32'],\n issues,\n );\n }\n}\n\nfunction validateInput(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const input = objectValue(value, path, ['canvasPointerEvents'], [], issues);\n if (input == null || !('canvasPointerEvents' in input)) {\n return;\n }\n const pointer = input.canvasPointerEvents;\n if (typeof pointer === 'boolean') {\n return;\n }\n const pointerOptions = objectValue(\n pointer,\n `${path}.canvasPointerEvents`,\n ['enabled', 'activeDuringXR'],\n [],\n issues,\n );\n if (pointerOptions == null) {\n return;\n }\n if ('enabled' in pointerOptions) {\n booleanValue(\n pointerOptions.enabled,\n `${path}.canvasPointerEvents.enabled`,\n issues,\n );\n }\n if ('activeDuringXR' in pointerOptions) {\n booleanValue(\n pointerOptions.activeDuringXR,\n `${path}.canvasPointerEvents.activeDuringXR`,\n issues,\n );\n }\n}\n\nfunction validateRender(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const render = objectValue(\n value,\n path,\n ['fov', 'near', 'far', 'stencil', 'camera'],\n [],\n issues,\n );\n if (render == null) {\n return;\n }\n for (const key of ['fov', 'near', 'far'] as const) {\n if (key in render) {\n numberValue(render[key], `${path}.${key}`, issues);\n }\n }\n if ('stencil' in render) {\n booleanValue(render.stencil, `${path}.stencil`, issues);\n }\n if ('camera' in render) {\n const camera = objectValue(\n render.camera,\n `${path}.camera`,\n ['position', 'rotation', 'quaternion', 'lookAt'],\n [],\n issues,\n );\n if (camera != null) {\n if ('position' in camera) {\n vectorValue(camera.position, `${path}.camera.position`, 3, issues);\n }\n if ('rotation' in camera) {\n vectorValue(camera.rotation, `${path}.camera.rotation`, 3, issues);\n }\n if ('quaternion' in camera) {\n vectorValue(camera.quaternion, `${path}.camera.quaternion`, 4, issues);\n }\n if ('lookAt' in camera) {\n vectorValue(camera.lookAt, `${path}.camera.lookAt`, 3, issues);\n }\n }\n }\n}\n\nfunction validateFeatures(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const features = objectValue(\n value,\n path,\n [\n 'locomotion',\n 'grabbing',\n 'gaze',\n 'physics',\n 'sceneUnderstanding',\n 'environmentRaycast',\n 'camera',\n 'spatialUI',\n ],\n [],\n issues,\n );\n if (features == null) {\n return;\n }\n if ('locomotion' in features) {\n validateLocomotion(features.locomotion, `${path}.locomotion`, issues);\n }\n if ('grabbing' in features) {\n validateBooleanOrObject(\n features.grabbing,\n `${path}.grabbing`,\n ['useHandPinchForGrab'],\n issues,\n );\n }\n if ('gaze' in features) {\n validateGaze(features.gaze, `${path}.gaze`, issues);\n }\n if ('physics' in features) {\n validatePhysics(features.physics, `${path}.physics`, issues);\n }\n for (const key of ['environmentRaycast', 'camera'] as const) {\n if (key in features) {\n booleanValue(features[key], `${path}.${key}`, issues);\n }\n }\n if ('sceneUnderstanding' in features) {\n validateBooleanOrObject(\n features.sceneUnderstanding,\n `${path}.sceneUnderstanding`,\n ['showWireFrame'],\n issues,\n );\n }\n if ('spatialUI' in features) {\n validateSpatialUI(features.spatialUI, `${path}.spatialUI`, issues);\n }\n}\n\nfunction validatePhysics(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const physics = objectValue(\n value,\n path,\n ['useWorker', 'updateFrequency', 'interpolation'],\n [],\n issues,\n );\n if (physics == null) {\n return;\n }\n if ('useWorker' in physics) {\n booleanValue(physics.useWorker, `${path}.useWorker`, issues);\n }\n if (\n 'updateFrequency' in physics &&\n numberValue(physics.updateFrequency, `${path}.updateFrequency`, issues) &&\n ((physics.updateFrequency as number) <= 0 ||\n (physics.updateFrequency as number) > 240)\n ) {\n addIssue(\n issues,\n `${path}.updateFrequency`,\n 'type',\n 'expected a number greater than 0 and at most 240',\n );\n }\n if ('interpolation' in physics) {\n booleanValue(physics.interpolation, `${path}.interpolation`, issues);\n }\n}\n\nfunction validateLocomotion(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const locomotion = objectValue(\n value,\n path,\n [\n 'useWorker',\n 'initialPlayerPosition',\n 'comfortAssistLevel',\n 'turningMethod',\n 'enableJumping',\n 'browserControls',\n ],\n [],\n issues,\n );\n if (locomotion == null) {\n return;\n }\n for (const key of ['useWorker', 'enableJumping'] as const) {\n if (key in locomotion) {\n booleanValue(locomotion[key], `${path}.${key}`, issues);\n }\n }\n if ('initialPlayerPosition' in locomotion) {\n vectorValue(\n locomotion.initialPlayerPosition,\n `${path}.initialPlayerPosition`,\n 3,\n issues,\n );\n }\n if ('comfortAssistLevel' in locomotion) {\n numberValue(\n locomotion.comfortAssistLevel,\n `${path}.comfortAssistLevel`,\n issues,\n );\n }\n if ('turningMethod' in locomotion) {\n enumValue(\n locomotion.turningMethod,\n `${path}.turningMethod`,\n ['snap', 'smooth'],\n issues,\n );\n }\n if ('browserControls' in locomotion) {\n validateBrowserControls(\n locomotion.browserControls,\n `${path}.browserControls`,\n issues,\n );\n }\n}\n\nfunction validateBrowserControls(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const controls = objectValue(\n value,\n path,\n ['keyboard', 'gamepad'],\n [],\n issues,\n );\n if (controls == null) {\n return;\n }\n for (const key of ['keyboard', 'gamepad'] as const) {\n if (key in controls) {\n booleanValue(controls[key], `${path}.${key}`, issues);\n }\n }\n}\n\nconst GAZE_NUMBER_KEYS = [\n 'coneAngle',\n 'maxRayLength',\n 'dwellWindowSeconds',\n 'filterMinCutoff',\n 'filterBeta',\n 'trackingLossGraceSeconds',\n] as const;\n\nconst GAZE_BOOLEAN_KEYS = [\n 'suppressWhenDirectPointerActive',\n 'pointerTransformFollowsHand',\n 'logDiagnostics',\n 'showDebugReticle',\n] as const;\n\nfunction validateGaze(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const gaze = objectValue(\n value,\n path,\n [...GAZE_NUMBER_KEYS, ...GAZE_BOOLEAN_KEYS],\n [],\n issues,\n );\n if (gaze == null) {\n return;\n }\n for (const key of GAZE_NUMBER_KEYS) {\n if (key in gaze) {\n const property = `${path}.${key}`;\n if (numberValue(gaze[key], property, issues)) {\n const allowsZero =\n key === 'dwellWindowSeconds' ||\n key === 'filterBeta' ||\n key === 'trackingLossGraceSeconds';\n const number = gaze[key] as number;\n const invalidMinimum = allowsZero ? number < 0 : number <= 0;\n const invalidMaximum = key === 'coneAngle' && number >= 180;\n if (invalidMinimum || invalidMaximum) {\n addIssue(\n issues,\n property,\n 'range',\n key === 'coneAngle'\n ? 'expected a number greater than 0 and less than 180'\n : `expected a ${allowsZero ? 'non-negative' : 'positive'} number`,\n );\n }\n }\n }\n }\n for (const key of GAZE_BOOLEAN_KEYS) {\n if (key in gaze) {\n booleanValue(gaze[key], `${path}.${key}`, issues);\n }\n }\n}\n\nfunction validateSpatialUI(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const spatialUI = objectValue(\n value,\n path,\n ['forwardHtmlEvents', 'kit', 'preferredColorScheme'],\n [],\n issues,\n );\n if (spatialUI == null) {\n return;\n }\n if ('forwardHtmlEvents' in spatialUI) {\n booleanValue(\n spatialUI.forwardHtmlEvents,\n `${path}.forwardHtmlEvents`,\n issues,\n );\n }\n if ('kit' in spatialUI) {\n enumValue(spatialUI.kit, `${path}.kit`, ['default', 'horizon'], issues);\n }\n if ('preferredColorScheme' in spatialUI) {\n enumValue(\n spatialUI.preferredColorScheme,\n `${path}.preferredColorScheme`,\n ['system', 'light', 'dark'],\n issues,\n );\n }\n}\n\nfunction validateBooleanOrObject(\n value: unknown,\n path: string,\n booleanKeys: readonly string[],\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const object = objectValue(value, path, booleanKeys, [], issues);\n if (object == null) {\n return;\n }\n for (const key of booleanKeys) {\n if (key in object) {\n booleanValue(object[key], `${path}.${key}`, issues);\n }\n }\n}\n\nfunction validateTargetDevicePreview(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const preview = objectValue(value, path, ['gazeSimulation'], [], issues);\n if (preview == null) {\n return;\n }\n if ('gazeSimulation' in preview) {\n if (preview.gazeSimulation !== false) {\n enumValue(\n preview.gazeSimulation,\n `${path}.gazeSimulation`,\n ['head'],\n issues,\n );\n }\n }\n}\n\nfunction validateDev(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const dev = objectValue(\n value,\n path,\n ['emulator', 'targetDevicePreview'],\n [],\n issues,\n );\n if (dev == null) {\n return;\n }\n if ('emulator' in dev) {\n const emulator = objectValue(\n dev.emulator,\n `${path}.emulator`,\n [\n 'device',\n 'iwer',\n 'environment',\n 'activation',\n 'injectOnBuild',\n 'userAgentException',\n ],\n [],\n issues,\n );\n if (emulator != null) {\n if ('device' in emulator) {\n enumValue(emulator.device, `${path}.emulator.device`, DEVICES, issues);\n }\n if ('iwer' in emulator) {\n booleanValue(emulator.iwer, `${path}.emulator.iwer`, issues);\n }\n if ('environment' in emulator) {\n enumValue(\n emulator.environment,\n `${path}.emulator.environment`,\n ENVIRONMENTS,\n issues,\n );\n }\n if ('activation' in emulator) {\n if (typeof emulator.activation === 'string') {\n enumValue(\n emulator.activation,\n `${path}.emulator.activation`,\n ['localhost', 'always'],\n issues,\n );\n } else {\n validateRegexSpec(\n emulator.activation,\n `${path}.emulator.activation`,\n issues,\n );\n }\n }\n if ('injectOnBuild' in emulator) {\n booleanValue(\n emulator.injectOnBuild,\n `${path}.emulator.injectOnBuild`,\n issues,\n );\n }\n if ('userAgentException' in emulator) {\n validateRegexSpec(\n emulator.userAgentException,\n `${path}.emulator.userAgentException`,\n issues,\n );\n }\n }\n }\n if ('targetDevicePreview' in dev) {\n validateTargetDevicePreview(\n dev.targetDevicePreview,\n `${path}.targetDevicePreview`,\n issues,\n );\n }\n}\n\nfunction validateRegexSpec(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const regex = objectValue(\n value,\n path,\n ['source', 'flags'],\n ['source'],\n issues,\n );\n if (regex == null) {\n return;\n }\n const sourceValid = stringValue(regex.source, `${path}.source`, issues);\n if (sourceValid && (regex.source as string).length === 0) {\n addIssue(\n issues,\n `${path}.source`,\n 'invalid-regex',\n 'regular expression source must not be blank',\n );\n return;\n }\n const flagsValid =\n !('flags' in regex) || stringValue(regex.flags, `${path}.flags`, issues);\n if (!sourceValid || !flagsValid) {\n return;\n }\n try {\n new RegExp(\n regex.source as string,\n (regex.flags as string | undefined) ?? '',\n );\n } catch (error) {\n addIssue(\n issues,\n path,\n 'invalid-regex',\n error instanceof Error ? error.message : String(error),\n );\n }\n}\n\nfunction validateSourcePath(\n value: unknown,\n path: string,\n kind: 'module' | 'scene',\n issues: ProjectManifestValidationIssue[],\n): void {\n if (!stringValue(value, path, issues)) {\n return;\n }\n try {\n normalizeProjectSourcePath(value as string, kind);\n } catch (error) {\n addIssue(\n issues,\n path,\n 'invalid-path',\n error instanceof Error ? error.message : String(error),\n );\n }\n}\n\nfunction objectValue(\n value: unknown,\n path: string,\n allowedKeys: readonly string[],\n requiredKeys: readonly string[],\n issues: ProjectManifestValidationIssue[],\n): JsonObject | undefined {\n if (!isPlainObject(value)) {\n addIssue(issues, path, 'type', 'expected an object');\n return undefined;\n }\n const allowed = new Set(allowedKeys);\n for (const key of Object.keys(value)) {\n if (!allowed.has(key)) {\n addIssue(\n issues,\n propertyPath(path, key),\n 'unknown-key',\n `unknown property \"${key}\"`,\n );\n }\n }\n for (const key of requiredKeys) {\n if (!(key in value)) {\n addIssue(\n issues,\n propertyPath(path, key),\n 'required',\n 'required property is missing',\n );\n }\n }\n return value;\n}\n\nfunction isPlainObject(value: unknown): value is JsonObject {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction stringValue(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): boolean {\n if (typeof value !== 'string') {\n addIssue(issues, path, 'type', 'expected a string');\n return false;\n }\n return true;\n}\n\nfunction booleanValue(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): boolean {\n if (typeof value !== 'boolean') {\n addIssue(issues, path, 'type', 'expected a boolean');\n return false;\n }\n return true;\n}\n\nfunction numberValue(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): boolean {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n addIssue(issues, path, 'type', 'expected a finite number');\n return false;\n }\n return true;\n}\n\nfunction vectorValue(\n value: unknown,\n path: string,\n length: number,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (\n !Array.isArray(value) ||\n value.length !== length ||\n value.some((entry) => typeof entry !== 'number' || !Number.isFinite(entry))\n ) {\n addIssue(issues, path, 'type', `expected a finite ${length}-number tuple`);\n }\n}\n\nfunction enumValue<T extends string>(\n value: unknown,\n path: string,\n allowedValues: readonly T[],\n issues: ProjectManifestValidationIssue[],\n message?: string,\n): value is T {\n if (typeof value !== 'string' || !allowedValues.includes(value as T)) {\n addIssue(\n issues,\n path,\n 'enum',\n message ??\n `expected one of ${allowedValues.map((entry) => `\"${entry}\"`).join(', ')}`,\n );\n return false;\n }\n return true;\n}\n\nfunction propertyPath(path: string, key: string): string {\n return /^[A-Za-z_$][A-Za-z\\d_$]*$/u.test(key)\n ? `${path}.${key}`\n : `${path}[${JSON.stringify(key)}]`;\n}\n\nfunction addIssue(\n issues: ProjectManifestValidationIssue[],\n path: string,\n code: ProjectManifestValidationIssueCode,\n message: string,\n): void {\n issues.push({ path, code, message });\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"three.js","sources":["../../src/runtime/three.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AAWH,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB;AACpE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB;AACpE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB;AAEjD,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,wBAAwB;AACxE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,wBAAwB;AACxE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB;AAIxD"}
1
+ {"version":3,"file":"three.js","sources":["../../src/runtime/three.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 * as THREE from 'three';\nimport {\n acceleratedRaycast,\n computeBatchedBoundsTree,\n computeBoundsTree,\n disposeBatchedBoundsTree,\n disposeBoundsTree,\n} from 'three-mesh-bvh';\n\nTHREE.BufferGeometry.prototype.computeBoundsTree = computeBoundsTree;\nTHREE.BufferGeometry.prototype.disposeBoundsTree = disposeBoundsTree;\nTHREE.Mesh.prototype.raycast = acceleratedRaycast;\n\nTHREE.BatchedMesh.prototype.computeBoundsTree = computeBatchedBoundsTree;\nTHREE.BatchedMesh.prototype.disposeBoundsTree = disposeBatchedBoundsTree;\nTHREE.BatchedMesh.prototype.raycast = acceleratedRaycast;\n\nexport * from 'three';\n\n// export * as Addons from 'three/examples/jsm/Addons.js';\n"],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AAWH,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB;AACpE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB;AACpE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB;AAEjD,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,wBAAwB;AACxE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,wBAAwB;AACxE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB;AAIxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.js","sources":["../../src/scene-understanding/anchor.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AAEI,MAAM,QAAQ,GAAG,eAAe,CACrC,UAAU,EACV;IACE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CAClD,EACD,8CAA8C;;;;"}
1
+ {"version":3,"file":"anchor.js","sources":["../../src/scene-understanding/anchor.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 * Component for anchoring entities to stable real‑world positions in AR/VR.\n *\n * @remarks\n * - Anchors provide persistent, stable positioning relative to the real world.\n * - Entities with this component are automatically managed by {@link SceneUnderstandingSystem}.\n * - The entity's `object3D` will be attached to a world‑anchored group for stable tracking.\n * - Requires WebXR session with 'anchor' feature enabled.\n * - Anchors persist across tracking loss and help maintain consistent positioning.\n * - Once attached, the entity's transform is managed relative to the anchor's reference frame.\n * - Internal `attached` property tracks whether the entity has been processed by the system.\n *\n * @example Create an anchored object\n * ```ts\n * const marker = world.createEntity()\n * marker.addComponent(XRAnchor) // Will be anchored to current world position\n * ```\n *\n * @example Place content at a specific anchor point\n * ```ts\n * const hologram = world.createTransformEntity(hologramMesh)\n * hologram.addComponent(XRAnchor)\n * // The SceneUnderstandingSystem will anchor this at the current reference position\n * ```\n *\n * @category Scene Understanding\n * @see {@link SceneUnderstandingSystem}\n */\n\nexport const XRAnchor = createComponent(\n 'XRAnchor',\n {\n attached: { type: Types.Boolean, default: false },\n },\n 'Component for anchoring objects in the scene',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AAEI,MAAM,QAAQ,GAAG,eAAe,CACrC,UAAU,EACV;IACE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CAClD,EACD,8CAA8C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"mesh.js","sources":["../../src/scene-understanding/mesh.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AAEI,MAAM,MAAM,GAAG,eAAe,CACnC,QAAQ,EACR;IACE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;IACjD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;AAClD,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;CACrD,EACD,+CAA+C;;;;"}
1
+ {"version":3,"file":"mesh.js","sources":["../../src/scene-understanding/mesh.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 * Component representing detected real‑world 3D mesh geometry in AR/VR environments. This component\n * should be attached to entities by the SceneUnderstandingSystem and be queried by custom systems.\n *\n * @remarks\n * - Automatically created by {@link SceneUnderstandingSystem} when meshes are detected.\n * - Represents complex 3D geometry like furniture, objects, and room structure.\n * - Supports both bounded 3D objects (furniture, objects) and global mesh (room structure).\n * - Bounded meshes include semantic labels, bounding boxes, and calculated dimensions.\n * - Global meshes represent overall room structure without semantic classification.\n * - Entities are destroyed when the corresponding real‑world mesh is no longer detected.\n * - Requires WebXR session with 'mesh‑detection' feature enabled.\n * - Users should not manually create entities with this component and let the scene understanding\n * system manage them.\n *\n * @example React to detected meshes\n * ```ts\n * your-system.query({ required: [XRMesh] }).subscribe('qualify', (entity) => {\n * const isBounded = entity.getValue(XRMesh, 'isBounded3D')\n * const semanticLabel = entity.getValue(XRMesh, 'semanticLabel')\n *\n * if (isBounded && semanticLabel === 'table') {\n * console.log('Table detected!')\n * const dimensions = entity.getValue(XRMesh, 'dimensions')\n * console.log('Table size:', dimensions)\n * }\n * })\n * ```\n *\n * @category Scene Understanding\n * @see {@link SceneUnderstandingSystem}\n * @see {@link XRPlane}\n */\n\nexport const XRMesh = createComponent(\n 'XRMesh',\n {\n _mesh: { type: Types.Object, default: undefined },\n isBounded3D: { type: Types.Boolean, default: false },\n semanticLabel: { type: Types.String, default: '' },\n min: { type: Types.Vec3, default: [0, 0, 0] },\n max: { type: Types.Vec3, default: [0, 0, 0] },\n dimensions: { type: Types.Vec3, default: [0, 0, 0] },\n },\n 'Component for managing 3D meshes in the scene',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AAEI,MAAM,MAAM,GAAG,eAAe,CACnC,QAAQ,EACR;IACE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;IACjD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;AAClD,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;CACrD,EACD,+CAA+C;;;;"}