@iwsdk/core 1.0.0-rc.0 → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asset/asset-manager.js.map +1 -1
- package/dist/asset/cache-manager.js.map +1 -1
- package/dist/asset/loaders/audio-loader.js.map +1 -1
- package/dist/asset/loaders/cached-asset-load.js.map +1 -1
- package/dist/asset/loaders/gltf-loader.js.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
- package/dist/asset/loaders/texture-loader.js.map +1 -1
- package/dist/asset/loaders/uikitml-loader.js.map +1 -1
- package/dist/audio/audio-pool.js.map +1 -1
- package/dist/audio/audio-system.js.map +1 -1
- package/dist/audio/audio-utils.js.map +1 -1
- package/dist/audio/audio.js.map +1 -1
- package/dist/camera/camera-source.js.map +1 -1
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/camera/camera-utils.js.map +1 -1
- package/dist/camera/types.js.map +1 -1
- package/dist/depth/depth-occludable.js.map +1 -1
- package/dist/depth/depth-sensing-system.js.map +1 -1
- package/dist/depth/depth-textures.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
- package/dist/ecs/builtin-components.js.map +1 -1
- package/dist/ecs/component-editor-metadata.js.map +1 -1
- package/dist/ecs/component-manifest.js.map +1 -1
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/system.js.map +1 -1
- package/dist/ecs/world.js.map +1 -1
- package/dist/environment/dome-gradient.js.map +1 -1
- package/dist/environment/dome-texture.js.map +1 -1
- package/dist/environment/environment-system.js.map +1 -1
- package/dist/environment/gradient-environment.js.map +1 -1
- package/dist/environment/ibl-gradient.js.map +1 -1
- package/dist/environment/ibl-texture.js.map +1 -1
- package/dist/environment/scene-ar-environment.js.map +1 -1
- package/dist/environment-raycast/environment-raycast.js.map +1 -1
- package/dist/environment-raycast/raycast-target.js.map +1 -1
- package/dist/gaze/gaze-system.d.ts +207 -0
- package/dist/gaze/gaze-system.d.ts.map +1 -0
- package/dist/gaze/gaze-system.js +168 -0
- package/dist/gaze/gaze-system.js.map +1 -0
- package/dist/gaze/index.d.ts +8 -0
- package/dist/gaze/index.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-helpers.d.ts +7 -6
- package/dist/grab/grab-helpers.d.ts.map +1 -1
- package/dist/grab/grab-helpers.js +12 -7
- package/dist/grab/grab-helpers.js.map +1 -1
- package/dist/grab/grab-system.d.ts.map +1 -1
- package/dist/grab/grab-system.js +2 -1
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/grab-warnings.js.map +1 -1
- package/dist/grab/grabbed.js.map +1 -1
- package/dist/grab/handles.d.ts +10 -1
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +29 -6
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/index.js.map +1 -1
- package/dist/grab/one-hand-grabbable.js.map +1 -1
- package/dist/grab/pointer-events-patch.js.map +1 -1
- package/dist/grab/two-hands-grabbable.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/init/browser-camera.js.map +1 -1
- package/dist/init/player-camera.js.map +1 -1
- package/dist/init/session-grant.js.map +1 -1
- package/dist/init/world-initializer.d.ts +49 -0
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +23 -11
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +14 -0
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +19 -0
- package/dist/init/xr.js.map +1 -1
- package/dist/input/canvas-pointer-system.js.map +1 -1
- package/dist/input/input-actions.js.map +1 -1
- package/dist/input/input-manager.js.map +1 -1
- package/dist/input/input-system.d.ts +3 -0
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +72 -6
- package/dist/input/input-system.js.map +1 -1
- package/dist/input/state-tags.d.ts.map +1 -1
- package/dist/input/state-tags.js +2 -0
- package/dist/input/state-tags.js.map +1 -1
- package/dist/input/stateful-browser-gamepad.js.map +1 -1
- package/dist/input/stateful-keyboard.js.map +1 -1
- package/dist/layers/xr-cylinder-layer.js.map +1 -1
- package/dist/layers/xr-layer-init.js.map +1 -1
- package/dist/layers/xr-layer-state.js.map +1 -1
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/layers/xr-layer-transform.js.map +1 -1
- package/dist/layers/xr-quad-layer.js.map +1 -1
- package/dist/level/level-component-applier.js.map +1 -1
- package/dist/level/level-player-rig.js.map +1 -1
- package/dist/level/level-root.js.map +1 -1
- package/dist/level/level-scene-environment.js.map +1 -1
- package/dist/level/level-scene-json-importer.js.map +1 -1
- package/dist/level/level-scene-material.js.map +1 -1
- package/dist/level/level-scene-object.js.map +1 -1
- package/dist/level/level-scene-primitive.js.map +1 -1
- package/dist/level/level-system.js.map +1 -1
- package/dist/level/level-tag.js.map +1 -1
- package/dist/lighting/light-binding.js.map +1 -1
- package/dist/lighting/light-components.js.map +1 -1
- package/dist/lighting/light-system.js.map +1 -1
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
- package/dist/locomotion/locomotion-environment.js.map +1 -1
- package/dist/locomotion/locomotion-input-provider.js.map +1 -1
- package/dist/locomotion/locomotion.js.map +1 -1
- package/dist/locomotion/materials/line.js.map +1 -1
- package/dist/locomotion/slide.js.map +1 -1
- package/dist/locomotion/teleport.js.map +1 -1
- package/dist/locomotion/turn.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.js.map +1 -1
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/scene-tools.js.map +1 -1
- package/dist/mcp/ui-debug-tools.js.map +1 -1
- package/dist/physics/physics-runtime.js.map +1 -1
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physics-transport.js.map +1 -1
- package/dist/physics/physics-worker-protocol.js.map +1 -1
- package/dist/physics/physics-worker-utils.js.map +1 -1
- package/dist/physics/physics-worker.js.map +1 -1
- package/dist/physics/physicsBody.js.map +1 -1
- package/dist/physics/physicsManipulation.js.map +1 -1
- package/dist/physics/physicsShape.js.map +1 -1
- package/dist/physics/utils.js.map +1 -1
- package/dist/project/normalize.d.ts.map +1 -1
- package/dist/project/normalize.js +11 -0
- package/dist/project/normalize.js.map +1 -1
- package/dist/project/paths.js.map +1 -1
- package/dist/project/types.d.ts +32 -2
- package/dist/project/types.d.ts.map +1 -1
- package/dist/project/types.js.map +1 -1
- package/dist/project/validation.d.ts.map +1 -1
- package/dist/project/validation.js +65 -1
- package/dist/project/validation.js.map +1 -1
- package/dist/runtime/three.js.map +1 -1
- package/dist/scene-understanding/anchor.js.map +1 -1
- package/dist/scene-understanding/mesh.js.map +1 -1
- package/dist/scene-understanding/plane.js.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/schemas/iwsdk-project.v1.schema.json +45 -3
- package/dist/transform/synced-euler.js.map +1 -1
- package/dist/transform/synced-quaternion.js.map +1 -1
- package/dist/transform/synced-vector3.js.map +1 -1
- package/dist/transform/transform-component.js.map +1 -1
- package/dist/transform/transform-utils.js.map +1 -1
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/document.js.map +1 -1
- package/dist/ui/follow-component.js.map +1 -1
- package/dist/ui/follow.js.map +1 -1
- package/dist/ui/panel-components.js.map +1 -1
- package/dist/ui/screenspace-component.js.map +1 -1
- package/dist/ui/screenspace.js.map +1 -1
- package/dist/ui/ui.js.map +1 -1
- package/dist/ui/uikitml-asset.js.map +1 -1
- package/dist/ui/uikitml.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/visibility/visibility-component.js.map +1 -1
- package/dist/visibility/visibility.js.map +1 -1
- package/package.json +4 -4
package/dist/grab/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/grab/index.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/grab/index.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 { RayIntersector, SphereIntersector } from '@pmndrs/pointer-events';\nimport {\n patchedExecuteIntersection,\n patchedIntersectRayPointerCapture,\n patchedIntersectSpherePointerCapture,\n} from './pointer-events-patch.js';\n\nexport * from './grab-system.js';\nexport * from './grabbed.js';\nexport * from './one-hand-grabbable.js';\nexport * from './two-hands-grabbable.js';\nexport * from './distance-grabbable.js';\nexport { MovementMode } from './handles.js';\n\n// Apply monkeypatch once\nRayIntersector.prototype.intersectPointerCapture =\n patchedIntersectRayPointerCapture;\nSphereIntersector.prototype.intersectPointerCapture =\n patchedIntersectSpherePointerCapture;\nSphereIntersector.prototype.executeIntersection = patchedExecuteIntersection;\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;AAKG;AAgBH;AACA,cAAc,CAAC,SAAS,CAAC,uBAAuB;AAC9C,IAAA,iCAAiC;AACnC,iBAAiB,CAAC,SAAS,CAAC,uBAAuB;AACjD,IAAA,oCAAoC;AACtC,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,GAAG,0BAA0B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"one-hand-grabbable.js","sources":["../../src/grab/one-hand-grabbable.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"one-hand-grabbable.js","sources":["../../src/grab/one-hand-grabbable.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 enabling single‑hand object grabbing and manipulation.\n *\n * @remarks\n * - Allows users to grab and manipulate objects using a single VR controller or hand input.\n * - Supports independent control of rotation and translation (movement) axes.\n * - Rotation and translation can be constrained using min/max limits per axis.\n * - Works with the {@link GrabSystem} to automatically create interaction handles.\n * - Grab components are mutually exclusive per entity. Choose exactly one of\n * {@link OneHandGrabbable}, {@link TwoHandsGrabbable}, or\n * {@link DistanceGrabbable}; {@link GrabSystem} creates only one handle and\n * ignores additional grab components. Do not rely on which component wins\n * when multiple modes are present.\n * - Requires the entity to have an `object3D` for the interaction to work.\n *\n * @example Basic single‑hand grabbable object\n * ```ts\n * entity.addComponent(OneHandGrabbable, {})\n * ```\n *\n * @example Constrained manipulation (rotation‑only on Y axis)\n * ```ts\n * entity.addComponent(OneHandGrabbable, {\n * rotate: true,\n * rotateMin: [0, -Math.PI, 0],\n * rotateMax: [0, Math.PI, 0],\n * translate: false\n * })\n * ```\n *\n * @example Limited movement range\n * ```ts\n * entity.addComponent(OneHandGrabbable, {\n * rotate: true,\n * translate: true,\n * translateMin: [-2, 0, -2],\n * translateMax: [2, 3, 2]\n * })\n * ```\n *\n * @category Grab\n * @see {@link GrabSystem}\n * @see {@link TwoHandsGrabbable}\n * @see {@link DistanceGrabbable}\n */\n\nexport const OneHandGrabbable = createComponent(\n 'OneHandGrabbable',\n {\n /** A boolean value to set whether rotating the object is allowed. */\n rotate: { type: Types.Boolean, default: true },\n /** An optional vector to define the maximum angle of the allowed rotation in [x, y, z] axes. */\n rotateMax: {\n type: Types.Vec3,\n default: [Infinity, Infinity, Infinity],\n },\n /** An optional vector to define the minimum angle of the allowed rotation in [x, y, z] axes. */\n rotateMin: {\n type: Types.Vec3,\n default: [-Infinity, -Infinity, -Infinity],\n },\n /** A boolean value to set whether moving the object's position is allowed. */\n translate: { type: Types.Boolean, default: true },\n /** An optional vector to define the maximum allowed position in [x, y, z] axes. */\n translateMax: {\n type: Types.Vec3,\n default: [Infinity, Infinity, Infinity],\n },\n /** An optional vector to define the minimum allowed position in [x, y, z] axes. */\n translateMin: {\n type: Types.Vec3,\n default: [-Infinity, -Infinity, -Infinity],\n },\n },\n 'Component for single-hand object grabbing and manipulation',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CG;AAEI,MAAM,gBAAgB,GAAG,eAAe,CAC7C,kBAAkB,EAClB;;IAEE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAE9C,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;IAED,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAEjD,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;CACF,EACD,4DAA4D;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer-events-patch.js","sources":["../../src/grab/pointer-events-patch.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pointer-events-patch.js","sources":["../../src/grab/pointer-events-patch.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\n// Monkeypatch @pmndrs/pointer-events RayIntersector to skip expensive UV recomputation\n// during pointer capture. This keeps grabbing performant on dense meshes.\n\nimport {\n Plane,\n Vector3,\n Quaternion,\n Object3D,\n Sphere,\n Matrix4,\n InstancedMesh,\n Mesh,\n} from '../runtime/index.js';\n\ntype PointerCapture = { intersection: any; object: Object3D };\n\nconst planeHelper = new Plane();\nconst helperSphere: Sphere = new Sphere();\n\nconst rayDirectionHelperMap = new Map<any, Vector3>();\nconst pointerPositionHelperMap = new Map<any, Vector3>();\nconst pointerQuaternionHelperMap = new Map<any, Quaternion>();\n\nconst oldInputDevicePointOffset = new Vector3();\nconst inputDeviceQuaternionOffset = new Quaternion();\n\nconst vectorHelper = new Vector3();\nconst matrixHelper = new Matrix4();\nconst boxSizeHelper = new Vector3();\nconst boxCenterHelper = new Vector3();\nconst vec0_0001 = new Vector3(0.0001, 0.0001, 0.0001);\nconst invertedMatrixHelper = new Matrix4();\n\nexport function patchedIntersectRayPointerCapture(\n this: any,\n { intersection, object }: PointerCapture,\n) {\n const details = intersection.details;\n if (details.type !== 'ray') {\n throw new Error(\n `unable to process a pointer capture of type \"${details.type}\" with a ray intersector`,\n );\n }\n if (!this.prepareTransformation()) {\n return intersection;\n }\n\n object.updateWorldMatrix(true, false);\n\n // Recompute the plane in world space using the stored localPoint and normal/face\n const normal = intersection.normal ?? intersection.face?.normal;\n if (normal != null && intersection.localPoint != null) {\n planeHelper.setFromNormalAndCoplanarPoint(normal, intersection.localPoint);\n planeHelper.applyMatrix4(object.matrixWorld);\n } else {\n // Fallback: face-on plane at previous world point\n planeHelper.setFromNormalAndCoplanarPoint(\n new Vector3(0, 0, 1),\n intersection.point,\n );\n }\n\n const { ray } = this.raycaster;\n const pointOnFace =\n ray.intersectPlane(planeHelper, new Vector3()) ?? intersection.point;\n\n let rayDirectionHelper = rayDirectionHelperMap.get(this);\n if (!rayDirectionHelper) {\n rayDirectionHelper = new Vector3();\n rayDirectionHelperMap.set(this, rayDirectionHelper);\n }\n\n let pointerPositionHelper = pointerPositionHelperMap.get(this);\n if (!pointerPositionHelper) {\n pointerPositionHelper = new Vector3();\n pointerPositionHelperMap.set(this, pointerPositionHelper);\n }\n\n let pointerQuaternionHelper = pointerQuaternionHelperMap.get(this);\n if (!pointerQuaternionHelper) {\n pointerQuaternionHelper = new Quaternion();\n pointerQuaternionHelperMap.set(this, pointerQuaternionHelper);\n }\n\n // Preserve distance along the ray from previous intersection\n const distanceAlongRay = intersection.pointerPosition.distanceTo(\n intersection.point,\n );\n const point = rayDirectionHelper\n .copy(ray.direction)\n .multiplyScalar(distanceAlongRay)\n .add(ray.origin);\n\n // NOTE: We intentionally skip UV recomputation here for performance.\n return {\n ...intersection,\n object,\n pointOnFace,\n point,\n pointerPosition: pointerPositionHelper.copy(ray.origin),\n pointerQuaternion: pointerQuaternionHelper.copy(this.raycasterQuaternion),\n };\n}\n\nexport function patchedIntersectSpherePointerCapture(\n this: any,\n { intersection, object }: PointerCapture,\n) {\n const details = intersection.details;\n if (details.type !== 'sphere') {\n throw new Error(\n `unable to process a pointer capture of type \"${details.type}\" with a ray intersector`,\n );\n }\n if (!this.prepareTransformation()) {\n return intersection;\n }\n\n //compute old inputDevicePosition-point offset\n oldInputDevicePointOffset\n .copy(intersection.point)\n .sub(intersection.pointerPosition);\n //compute oldInputDeviceQuaternion-newInputDeviceQuaternion offset\n inputDeviceQuaternionOffset\n .copy(intersection.pointerQuaternion)\n .invert()\n .multiply(this.fromQuaternion);\n\n //apply quaternion offset to old inputDevicePosition-point offset and add to new inputDevicePosition\n const point = oldInputDevicePointOffset\n .clone()\n .applyQuaternion(inputDeviceQuaternionOffset)\n .add(this.fromPosition);\n object.updateWorldMatrix(true, false);\n // Recompute the plane in world space using the stored localPoint and normal/face\n const normal = intersection.normal ?? intersection.face?.normal;\n if (normal != null && intersection.localPoint != null) {\n planeHelper.setFromNormalAndCoplanarPoint(normal, intersection.localPoint);\n planeHelper.applyMatrix4(object.matrixWorld);\n } else {\n // Fallback: face-on plane at previous world point\n planeHelper.setFromNormalAndCoplanarPoint(\n new Vector3(0, 0, 1),\n intersection.point,\n );\n }\n const pointOnFace = planeHelper.projectPoint(\n this.fromPosition,\n new Vector3(),\n );\n\n let pointerPositionHelper = pointerPositionHelperMap.get(this);\n if (!pointerPositionHelper) {\n pointerPositionHelper = new Vector3();\n pointerPositionHelperMap.set(this, pointerPositionHelper);\n }\n\n let pointerQuaternionHelper = pointerQuaternionHelperMap.get(this);\n if (!pointerQuaternionHelper) {\n pointerQuaternionHelper = new Quaternion();\n pointerQuaternionHelperMap.set(this, pointerQuaternionHelper);\n }\n\n // NOTE: We intentionally skip UV recomputation here for performance.\n return {\n details: {\n type: 'sphere',\n },\n distance: point.distanceTo(pointOnFace),\n pointerPosition: pointerPositionHelper.copy(this.fromPosition),\n pointerQuaternion: pointerQuaternionHelper.copy(this.fromQuaternion),\n object,\n point,\n pointOnFace,\n face: intersection.face,\n localPoint: intersection.localPoint,\n };\n}\n\nfunction maximizeAxisVector(vec: Vector3) {\n const absX = Math.abs(vec.x);\n const absY = Math.abs(vec.y);\n const absZ = Math.abs(vec.z);\n if (absX >= absY && absX >= absZ) {\n //x biggest\n vec.set(vec.x < 0 ? -1 : 1, 0, 0);\n return;\n }\n if (absY >= absX && absY >= absZ) {\n //y biggest\n vec.set(0, vec.y < 0 ? -1 : 1, 0);\n return;\n }\n //z biggest\n vec.set(0, 0, vec.z < 0 ? -1 : 1);\n}\n\nfunction patchedIsSphereIntersectingMesh(\n pointerSphere: any,\n { geometry }: Mesh,\n meshMatrixWorld: Matrix4,\n) {\n if (geometry.boundingSphere == null) {\n geometry.computeBoundingSphere();\n }\n helperSphere\n .copy(geometry.boundingSphere ?? new Sphere())\n .applyMatrix4(meshMatrixWorld);\n return (\n helperSphere.center.distanceToSquared(pointerSphere.center) <\n (pointerSphere.radius + helperSphere.radius) ** 2\n );\n}\n\nfunction patchedIntersectSphereWithObject(\n pointerSphere: any,\n object: Object3D,\n target: any,\n) {\n object.updateWorldMatrix(true, false);\n if (object.spherecast != null) {\n object.spherecast(pointerSphere, target);\n return;\n }\n if (object instanceof InstancedMesh) {\n if (object.geometry.boundingSphere == null) {\n object.geometry.computeBoundingSphere();\n }\n if (object.geometry.boundingBox == null) {\n object.geometry.computeBoundingBox();\n }\n for (let i = 0; i < object.count; i++) {\n object.getMatrixAt(i, matrixHelper);\n matrixHelper.premultiply(object.matrixWorld);\n if (\n !patchedIsSphereIntersectingMesh(pointerSphere, object, matrixHelper)\n ) {\n continue;\n }\n const intersection = patchedIntersectSphereMesh(\n pointerSphere,\n object,\n matrixHelper,\n i,\n );\n if (intersection == null) {\n continue;\n }\n target.push(intersection);\n }\n }\n if (!(object instanceof Mesh)) {\n return;\n }\n if (\n !patchedIsSphereIntersectingMesh(pointerSphere, object, object.matrixWorld)\n ) {\n return;\n }\n invertedMatrixHelper.copy(object.matrixWorld).invert();\n const intersection = patchedIntersectSphereMesh(\n pointerSphere,\n object,\n object.matrixWorld,\n );\n if (intersection == null) {\n return;\n }\n target.push(intersection);\n}\n\nfunction patchedIntersectSphereMesh(\n pointerSphere: any,\n mesh: Mesh,\n meshMatrixWorld: Matrix4,\n instanceId?: number,\n) {\n invertedMatrixHelper.copy(meshMatrixWorld).invert();\n helperSphere.copy(pointerSphere).applyMatrix4(invertedMatrixHelper);\n const { geometry } = mesh;\n if (geometry.boundingBox == null) {\n geometry.computeBoundingBox();\n }\n geometry.boundingBox?.getSize(boxSizeHelper);\n geometry.boundingBox?.getCenter(boxCenterHelper);\n geometry.boundingBox?.clampPoint(helperSphere.center, vectorHelper);\n vectorHelper.applyMatrix4(meshMatrixWorld); //world coordinates\n const distanceToSphereCenterSquared = vectorHelper.distanceToSquared(\n pointerSphere.center,\n );\n if (\n distanceToSphereCenterSquared >\n pointerSphere.radius * pointerSphere.radius\n ) {\n return undefined;\n }\n boxSizeHelper.max(vec0_0001);\n const normal = helperSphere.center.clone().sub(boxCenterHelper);\n normal.divide(boxSizeHelper);\n maximizeAxisVector(normal);\n const point = vectorHelper.clone();\n\n return {\n distance: Math.sqrt(distanceToSphereCenterSquared),\n face: {\n a: 0,\n b: 0,\n c: 0,\n materialIndex: 0,\n normal,\n },\n normal,\n point,\n instanceId,\n object: mesh,\n };\n}\n\nexport function patchedExecuteIntersection(this: any, object: Object3D) {\n if (!this.isReady()) {\n return;\n }\n patchedIntersectSphereWithObject(\n this.collisionSphere,\n object,\n this.intersects,\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"two-hands-grabbable.js","sources":["../../src/grab/two-hands-grabbable.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"two-hands-grabbable.js","sources":["../../src/grab/two-hands-grabbable.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 enabling two‑handed object grabbing and manipulation.\n *\n * @remarks\n * - Enables advanced manipulation using both VR controllers or hand inputs simultaneously.\n * - Supports rotation, translation, and **scaling** operations (scaling requires two hands).\n * - Distance between hands controls scaling: spreading hands apart scales up, bringing them together scales down.\n * - The position of first controller that grabbed the objects determines the object's position during translation.\n * - Rotation is calculated from the relative orientation between the two hands.\n * - All transformations can be independently enabled/disabled and constrained per axis.\n * - Works with the {@link GrabSystem} to automatically create multitouch interaction handles.\n * - Grab components are mutually exclusive per entity. Choose exactly one of\n * {@link OneHandGrabbable}, {@link TwoHandsGrabbable}, or\n * {@link DistanceGrabbable}; {@link GrabSystem} creates only one handle and\n * ignores additional grab components. Do not rely on which component wins\n * when multiple modes are present.\n *\n * @example Basic two‑handed grabbable object\n * ```ts\n * entity.addComponent(TwoHandsGrabbable, {})\n * ```\n *\n * @example Scaling‑only with constraints\n * ```ts\n * entity.addComponent(TwoHandsGrabbable, {\n * rotate: false,\n * translate: false,\n * scale: true,\n * scaleMin: [0.1, 0.1, 0.1],\n * scaleMax: [5, 5, 5]\n * })\n * ```\n *\n * @example Precise manipulation with limits\n * ```ts\n * entity.addComponent(TwoHandsGrabbable, {\n * rotate: true,\n * translate: true,\n * scale: true,\n * rotateMin: [-Math.PI/4, -Math.PI/2, -Math.PI/4],\n * rotateMax: [Math.PI/4, Math.PI/2, Math.PI/4],\n * translateMin: [-1, 0, -1],\n * translateMax: [1, 2, 1],\n * scaleMin: [0.5, 0.5, 0.5],\n * scaleMax: [2, 2, 2]\n * })\n * ```\n *\n * @category Grab\n * @see {@link GrabSystem}\n * @see {@link OneHandGrabbable}\n * @see {@link DistanceGrabbable}\n */\n\nexport const TwoHandsGrabbable = createComponent(\n 'TwoHandsGrabbable',\n {\n /** A boolean value to set whether rotating the object is allowed. */\n rotate: { type: Types.Boolean, default: true },\n /** An optional vector to define the maximum angle of the allowed rotation in [x, y, z] axes. */\n rotateMax: {\n type: Types.Vec3,\n default: [Infinity, Infinity, Infinity],\n },\n /** An optional vector to define the minimum angle of the allowed rotation in [x, y, z] axes. */\n rotateMin: {\n type: Types.Vec3,\n default: [-Infinity, -Infinity, -Infinity],\n },\n /** A boolean value to set whether moving the object's position is allowed. */\n translate: { type: Types.Boolean, default: true },\n /** An optional vector to define the maximum allowed position in [x, y, z] axes. */\n translateMax: {\n type: Types.Vec3,\n default: [Infinity, Infinity, Infinity],\n },\n /** An optional vector to define the minimum allowed position in [x, y, z] axes. */\n translateMin: {\n type: Types.Vec3,\n default: [-Infinity, -Infinity, -Infinity],\n },\n /** A boolean value to set whether scaling the object up and down is allowed. */\n scale: { type: Types.Boolean, default: true },\n /** An optional vector to define the maximum allowed scaling in [x, y, z] axes. */\n scaleMax: {\n type: Types.Vec3,\n default: [Infinity, Infinity, Infinity],\n },\n /** An optional vector to define the minimum allowed scaling in [x, y, z] axes. */\n scaleMin: {\n type: Types.Vec3,\n default: [-Infinity, -Infinity, -Infinity],\n },\n },\n 'Component for two-handed object grabbing and manipulation',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDG;AAEI,MAAM,iBAAiB,GAAG,eAAe,CAC9C,mBAAmB,EACnB;;IAEE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAE9C,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;IAED,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAEjD,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;IAED,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAE7C,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;CACF,EACD,2DAA2D;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export * from './ui/index.js';
|
|
|
15
15
|
export * from './init/index.js';
|
|
16
16
|
export * from './grab/index.js';
|
|
17
17
|
export * from './input/index.js';
|
|
18
|
+
export * from './gaze/index.js';
|
|
18
19
|
export * from './environment/index.js';
|
|
19
20
|
export * from './level/index.js';
|
|
20
21
|
export * from './scene-understanding/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,MAAM,GACP,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,MAAM,GACP,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -39,6 +39,7 @@ export { CanvasPointerSystem } from './input/canvas-pointer-system.js';
|
|
|
39
39
|
export { StatefulKeyboard } from './input/stateful-keyboard.js';
|
|
40
40
|
export { BrowserGamepadAxis, BrowserGamepadButton, StatefulBrowserGamepad } from './input/stateful-browser-gamepad.js';
|
|
41
41
|
export { Hovered, Interactable, PokeInteractable, Pressed, RayInteractable } from './input/state-tags.js';
|
|
42
|
+
export { GazeSystem } from './gaze/gaze-system.js';
|
|
42
43
|
export { DomeTexture } from './environment/dome-texture.js';
|
|
43
44
|
export { DomeGradient } from './environment/dome-gradient.js';
|
|
44
45
|
export { IBLTexture } from './environment/ibl-texture.js';
|
|
@@ -77,15 +78,13 @@ export { DepthSensingSystem } from './depth/depth-sensing-system.js';
|
|
|
77
78
|
export { XRQuadLayer } from './layers/xr-quad-layer.js';
|
|
78
79
|
export { XRCylinderLayer } from './layers/xr-cylinder-layer.js';
|
|
79
80
|
export { XRLayerSystem } from './layers/xr-layer-system.js';
|
|
80
|
-
export { LightBinding } from './lighting/light-binding.js';
|
|
81
|
-
export { AmbientLightComponent, DirectionalLightComponent, HemisphereLightComponent, IWSDK_LIGHT_COMPONENTS, LightShadowMapSize, PointLightComponent, RectAreaLightComponent, SpotLightComponent } from './lighting/light-components.js';
|
|
82
|
-
export { LightSystem, lightSpecFromComponentValue, readLightSpec } from './lighting/light-system.js';
|
|
83
81
|
export { MCPRuntime } from './mcp/mcp-runtime.js';
|
|
84
82
|
export * from '@iwsdk/xr-input';
|
|
85
83
|
export * from '@iwsdk/locomotor';
|
|
86
84
|
import * as uikit from '@pmndrs/uikit';
|
|
87
85
|
export { uikit as UIKit };
|
|
88
86
|
export { Signal, batch, computed, effect, signal, untracked } from '@preact/signals-core';
|
|
87
|
+
export { AmbientLightComponent, DirectionalLightComponent, HemisphereLightComponent, IWSDK_LIGHT_COMPONENTS, LightShadowMapSize, PointLightComponent, RectAreaLightComponent, SpotLightComponent } from './lighting/light-components.js';
|
|
89
88
|
export { AssetLoadTimeoutError, DEFAULT_ASSET_LOAD_TIMEOUT_MS } from './asset/loaders/cached-asset-load.js';
|
|
90
89
|
export { ColorSchemeType, PanelDocument, PanelUI } from './ui/panel-components.js';
|
|
91
90
|
export { DEFAULT_MAX_MODEL_PAYLOAD_BYTES, DEFAULT_MAX_TOTAL_MODEL_PAYLOAD_BYTES, GLTFPayloadLimitError } from './asset/loaders/gltf-loader.js';
|
|
@@ -94,6 +93,8 @@ export { FollowBehavior, Follower } from './ui/follow-component.js';
|
|
|
94
93
|
export { GrabSystem } from './grab/grab-system.js';
|
|
95
94
|
export { Grabbed } from './grab/grabbed.js';
|
|
96
95
|
export { IWSDK_PROJECT_MANIFEST_VERSION } from './project/types.js';
|
|
96
|
+
export { LightBinding } from './lighting/light-binding.js';
|
|
97
|
+
export { LightSystem, lightSpecFromComponentValue, readLightSpec } from './lighting/light-system.js';
|
|
97
98
|
export { LocomotionEnvironment } from './locomotion/locomotion-environment.js';
|
|
98
99
|
export { MAX_SCENE_PATTERN_INSTANCES, deriveSceneInstanceNodeId, deriveScenePatternNodeId, generateScenePatternTransforms } from '@iwsdk/scene-composition';
|
|
99
100
|
export { MovementMode } from './grab/handles.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.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 { VERSION as EliCSVersion } from 'elics';\nimport { REVISION } from 'three';\nimport { VERSION } from './version.js';\n\nexport * from './runtime/index.js';\nexport * from './ecs/index.js';\nexport * from './transform/index.js';\nexport * from './asset/index.js';\nexport * from './locomotion/index.js';\nexport * from './visibility/index.js';\nexport * from './ui/index.js';\nexport * from './init/index.js';\nexport * from './grab/index.js';\nexport * from './input/index.js';\nexport * from './gaze/index.js';\nexport * from './environment/index.js';\nexport * from './level/index.js';\nexport * from './scene-understanding/index.js';\nexport * from './environment-raycast/index.js';\nexport * from './audio/index.js';\nexport * from './physics/index.js';\nexport * from './camera/index.js';\nexport * from './depth/index.js';\nexport * from './layers/index.js';\nexport * from './lighting/index.js';\nexport * from './mcp/index.js';\nexport * from './project/index.js';\n\n// re-exports\nexport * from '@iwsdk/xr-input';\nexport * from '@iwsdk/locomotor';\nexport * as UIKit from '@pmndrs/uikit';\nexport {\n signal,\n effect,\n computed,\n batch,\n untracked,\n Signal,\n} from '@preact/signals-core';\nexport type { ReadonlySignal } from '@preact/signals-core';\n\nexport { VERSION };\n\nconsole.log(` \n▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄▄ ▄▄▄ \n▀▀██▀▀ ██ ██ ▄█▀▀▀▀█ ██▀▀▀██ ██ ██▀ \n ██ ▀█▄ ██ ▄█▀ ██▄ ██ ██ ██▄██ \n ██ ██ ██ ██ ▀████▄ ██ ██ █████ \n ██ ███▀▀███ ▀██ ██ ██ ██ ██▄ \n▄▄██▄▄ ███ ███ █▄▄▄▄▄█▀ ██▄▄▄██ ██ ██▄ \n▀▀▀▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀ ▀▀ \n===============================================\nImmersive Web SDK v${VERSION}\nThree.js r${REVISION}\nEliCS v${EliCSVersion}`);\n"],"names":["EliCSVersion"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AA8CH,OAAO,CAAC,GAAG,CAAC,CAAA;;;;;;;;;qBASS,OAAO;YAChB,QAAQ;SACXA,SAAY,CAAA,CAAE,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-camera.js","sources":["../../src/init/browser-camera.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"browser-camera.js","sources":["../../src/init/browser-camera.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 Quaternion,\n Vector3,\n type PerspectiveCamera,\n} from '../runtime/index.js';\n\n/**\n * @internal\n * Snapshot of the local-space camera state captured before an XR session\n * starts, used to undo the head-pose / projection mutations that\n * `WebGLRenderer.xr` writes into the camera each frame.\n */\nexport interface BrowserCameraSnapshot {\n position: Vector3;\n quaternion: Quaternion;\n scale: Vector3;\n aspect: number;\n fov: number;\n near: number;\n far: number;\n zoom: number;\n}\n\n/**\n * @internal\n * Capture the local transform and projection of `camera`.\n */\nexport function snapshotBrowserCamera(\n camera: PerspectiveCamera,\n): BrowserCameraSnapshot {\n return {\n position: camera.position.clone(),\n quaternion: camera.quaternion.clone(),\n scale: camera.scale.clone(),\n aspect: camera.aspect,\n fov: camera.fov,\n near: camera.near,\n far: camera.far,\n zoom: camera.zoom,\n };\n}\n\n/**\n * @internal\n * Apply a snapshot back to `camera`, refreshing both projection and world\n * matrices. Safe to call regardless of XR state.\n */\nexport function applyBrowserCameraSnapshot(\n camera: PerspectiveCamera,\n snapshot: BrowserCameraSnapshot,\n): void {\n camera.position.copy(snapshot.position);\n camera.quaternion.copy(snapshot.quaternion);\n camera.scale.copy(snapshot.scale);\n camera.aspect = snapshot.aspect;\n camera.fov = snapshot.fov;\n camera.near = snapshot.near;\n camera.far = snapshot.far;\n camera.zoom = snapshot.zoom;\n camera.updateProjectionMatrix();\n camera.updateMatrixWorld(true);\n}\n\n/**\n * @internal\n * Snapshot the camera now and restore it when `session` ends. The restore\n * is deferred one `requestAnimationFrame` tick because `WebXRManager` is\n * still tearing down render targets / camera-auto-update on the same tick\n * the session fires `'end'` — overwriting the camera mid-teardown produces\n * a frame at the wrong projection.\n */\nexport function attachBrowserCameraRestore(\n camera: PerspectiveCamera,\n session: XRSession,\n): void {\n const snapshot = snapshotBrowserCamera(camera);\n const onEnd = () => {\n session.removeEventListener('end', onEnd);\n requestAnimationFrame(() => applyBrowserCameraSnapshot(camera, snapshot));\n };\n session.addEventListener('end', onEnd);\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAyBH;;;AAGG;AACG,SAAU,qBAAqB,CACnC,MAAyB,EAAA;IAEzB,OAAO;AACL,QAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjC,QAAA,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;AACrC,QAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB;AACH;AAEA;;;;AAIG;AACG,SAAU,0BAA0B,CACxC,MAAyB,EACzB,QAA+B,EAAA;IAE/B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjC,IAAA,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;AAC/B,IAAA,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AACzB,IAAA,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;AAC3B,IAAA,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AACzB,IAAA,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;IAC3B,MAAM,CAAC,sBAAsB,EAAE;AAC/B,IAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChC;AAEA;;;;;;;AAOG;AACG,SAAU,0BAA0B,CACxC,MAAyB,EACzB,OAAkB,EAAA;AAElB,IAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAK;AACjB,QAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;QACzC,qBAAqB,CAAC,MAAM,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3E,IAAA,CAAC;AACD,IAAA,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;AACxC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player-camera.js","sources":["../../src/init/player-camera.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"player-camera.js","sources":["../../src/init/player-camera.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 { Object3D, PerspectiveCamera } from '../runtime/index.js';\n\nexport function attachCameraToPlayer(\n player: Object3D,\n camera: PerspectiveCamera,\n): void {\n if (camera.parent !== player) {\n player.add(camera);\n }\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAIG,SAAU,oBAAoB,CAClC,MAAgB,EAChB,MAAyB,EAAA;AAEzB,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;AAC5B,QAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IACpB;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-grant.js","sources":["../../src/init/session-grant.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AAEH,MAAM,oBAAoB,GAAG,KAAM;AAQnC,IAAI,aAAmC;AACvC,IAAI,cAAkC;AACtC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwB;AACnD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAwB;AAE7D,SAAS,GAAG,GAAA;AACV,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE;AACnB;AAEA,SAAS,oBAAoB,GAAA;AAC3B,IAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AAC1B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,GAAG,EAAE,GAAG,cAAc,IAAI,oBAAoB,EAAE;AAClD,QAAA,OAAO,IAAI;IACb;IACA,cAAc,GAAG,SAAS;AAC1B,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,oBAAoB,GAAA;IAC3B,cAAc,GAAG,GAAG,EAAE;AACtB,IAAA,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAC,EAAE;QAC9D;IACF;AAEA,IAAA,MAAM,kBAAkB,GAAG,CAAC,GAAG,WAAW,CAAC;AAC3C,IAAA,MAAM,oBAAoB,GAAG,CAAC,GAAG,qBAAqB,CAAC;IACvD,WAAW,CAAC,KAAK,EAAE;IACnB,cAAc,GAAG,SAAS;IAC1B,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,kBAAkB,EAAE,GAAG,oBAAoB,CAAC,EAAE;AACzE,QAAA,IAAI;AACF,YAAA,UAAU,EAAE;QACd;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC;QAChE;IACF;AACF;AAEA;;;;;;AAMG;SACa,sBAAsB,GAAA;;IACpC,MAAM,EAAE,GAAG,CAAA,EAAA,GAAA,UAAU,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,EAAE;IACnC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,aAAa,EAAE;QACtC;IACF;IACA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,mBAAmB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAC1E,aAAa,GAAG,EAAE;AAClB,IAAA,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;AAC7D;AAEA;AACM,SAAU,gCAAgC,CAC9C,EAA4D,EAAA;AAE5D,IAAA,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA,EAAE,KAAA,IAAA,IAAF,EAAE,KAAA,MAAA,GAAA,MAAA,GAAF,EAAE,CAAE,sBAAsB,MAAK,IAAI,EAAE;AACvD,QAAA,sBAAsB,EAAE;IAC1B;AACF;AAEA;;;;;;AAMG;SACa,cAAc,CAC5B,QAA8B,EAC9B,UAA2C,EAAE,EAAA;AAE7C,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,qBAAqB,GAAG,WAAW;AACvE,IAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAEpB,IAAI,oBAAoB,EAAE,EAAE;QAC1B,cAAc,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACvB,YAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzB;AACA,QAAA,QAAQ,EAAE;IACZ;AAEA,IAAA,OAAO,MAAK;AACV,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzB,IAAA,CAAC;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"session-grant.js","sources":["../../src/init/session-grant.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\nconst SESSION_GRANT_TTL_MS = 30_000;\n\ntype SessionGrantCallback = () => void;\n\ntype SessionGrantSubscriptionOptions = {\n persistent?: boolean;\n};\n\nlet armedXRSystem: XRSystem | undefined;\nlet pendingGrantAt: number | undefined;\nconst subscribers = new Set<SessionGrantCallback>();\nconst persistentSubscribers = new Set<SessionGrantCallback>();\n\nfunction now(): number {\n return Date.now();\n}\n\nfunction hasFreshPendingGrant(): boolean {\n if (pendingGrantAt == null) {\n return false;\n }\n if (now() - pendingGrantAt <= SESSION_GRANT_TTL_MS) {\n return true;\n }\n pendingGrantAt = undefined;\n return false;\n}\n\nfunction handleSessionGranted(): void {\n pendingGrantAt = now();\n if (subscribers.size === 0 && persistentSubscribers.size === 0) {\n return;\n }\n\n const pendingSubscribers = [...subscribers];\n const recurringSubscribers = [...persistentSubscribers];\n subscribers.clear();\n pendingGrantAt = undefined;\n for (const subscriber of [...pendingSubscribers, ...recurringSubscribers]) {\n try {\n subscriber();\n } catch (error) {\n console.error('[XR] sessiongranted subscriber failed:', error);\n }\n }\n}\n\n/**\n * Start recording native sessiongranted events before asynchronous world\n * initialization begins. Calling this more than once for the same XRSystem is\n * a no-op.\n *\n * @internal\n */\nexport function armSessionGrantCapture(): void {\n const xr = globalThis.navigator?.xr;\n if (xr == null || xr === armedXRSystem) {\n return;\n }\n armedXRSystem?.removeEventListener('sessiongranted', handleSessionGranted);\n armedXRSystem = xr;\n xr.addEventListener('sessiongranted', handleSessionGranted);\n}\n\n/** Arm capture synchronously when world options request grant-driven launch. */\nexport function armSessionGrantCaptureForOptions(\n xr: false | { launchOnSessionGranted?: boolean } | undefined,\n): void {\n if (xr !== false && xr?.launchOnSessionGranted === true) {\n armSessionGrantCapture();\n }\n}\n\n/**\n * Consume a recently captured grant, or subscribe to a future grant. One-shot\n * subscriptions run at most once. Persistent subscriptions remain armed so a\n * world can re-enter XR after a failed request or an ended session.\n *\n * @internal\n */\nexport function onSessionGrant(\n callback: SessionGrantCallback,\n options: SessionGrantSubscriptionOptions = {},\n): () => void {\n const target = options.persistent ? persistentSubscribers : subscribers;\n target.add(callback);\n\n if (hasFreshPendingGrant()) {\n pendingGrantAt = undefined;\n if (!options.persistent) {\n target.delete(callback);\n }\n callback();\n }\n\n return () => {\n target.delete(callback);\n };\n}\n\n/** Reset module state for isolated tests. @internal */\nexport function resetSessionGrantCaptureForTests(): void {\n armedXRSystem?.removeEventListener('sessiongranted', handleSessionGranted);\n armedXRSystem = undefined;\n pendingGrantAt = undefined;\n subscribers.clear();\n persistentSubscribers.clear();\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAEH,MAAM,oBAAoB,GAAG,KAAM;AAQnC,IAAI,aAAmC;AACvC,IAAI,cAAkC;AACtC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwB;AACnD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAwB;AAE7D,SAAS,GAAG,GAAA;AACV,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE;AACnB;AAEA,SAAS,oBAAoB,GAAA;AAC3B,IAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AAC1B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,GAAG,EAAE,GAAG,cAAc,IAAI,oBAAoB,EAAE;AAClD,QAAA,OAAO,IAAI;IACb;IACA,cAAc,GAAG,SAAS;AAC1B,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,oBAAoB,GAAA;IAC3B,cAAc,GAAG,GAAG,EAAE;AACtB,IAAA,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAC,EAAE;QAC9D;IACF;AAEA,IAAA,MAAM,kBAAkB,GAAG,CAAC,GAAG,WAAW,CAAC;AAC3C,IAAA,MAAM,oBAAoB,GAAG,CAAC,GAAG,qBAAqB,CAAC;IACvD,WAAW,CAAC,KAAK,EAAE;IACnB,cAAc,GAAG,SAAS;IAC1B,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,kBAAkB,EAAE,GAAG,oBAAoB,CAAC,EAAE;AACzE,QAAA,IAAI;AACF,YAAA,UAAU,EAAE;QACd;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC;QAChE;IACF;AACF;AAEA;;;;;;AAMG;SACa,sBAAsB,GAAA;;IACpC,MAAM,EAAE,GAAG,CAAA,EAAA,GAAA,UAAU,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,EAAE;IACnC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,aAAa,EAAE;QACtC;IACF;IACA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,mBAAmB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAC1E,aAAa,GAAG,EAAE;AAClB,IAAA,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;AAC7D;AAEA;AACM,SAAU,gCAAgC,CAC9C,EAA4D,EAAA;AAE5D,IAAA,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA,EAAE,KAAA,IAAA,IAAF,EAAE,KAAA,MAAA,GAAA,MAAA,GAAF,EAAE,CAAE,sBAAsB,MAAK,IAAI,EAAE;AACvD,QAAA,sBAAsB,EAAE;IAC1B;AACF;AAEA;;;;;;AAMG;SACa,cAAc,CAC5B,QAA8B,EAC9B,UAA2C,EAAE,EAAA;AAE7C,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,qBAAqB,GAAG,WAAW;AACvE,IAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAEpB,IAAI,oBAAoB,EAAE,EAAE;QAC1B,cAAc,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACvB,YAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzB;AACA,QAAA,QAAQ,EAAE;IACZ;AAEA,IAAA,OAAO,MAAK;AACV,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzB,IAAA,CAAC;AACH;;;;"}
|
|
@@ -84,6 +84,33 @@ export type WorldOptions = {
|
|
|
84
84
|
grabbing?: boolean | {
|
|
85
85
|
useHandPinchForGrab?: boolean;
|
|
86
86
|
};
|
|
87
|
+
/**
|
|
88
|
+
* Tuning for gaze + pinch input. `GazeSystem` registration is driven by the
|
|
89
|
+
* `xr.features.gazeTracking` session feature, not by this entry — this only
|
|
90
|
+
* overrides the system's defaults when gaze is already active.
|
|
91
|
+
*/
|
|
92
|
+
gaze?: {
|
|
93
|
+
/** Half-angle of the gaze selection cone, in degrees. @defaultValue 5 */
|
|
94
|
+
coneAngle?: number;
|
|
95
|
+
/** Maximum gaze cone distance in meters. @defaultValue 30 */
|
|
96
|
+
maxRayLength?: number;
|
|
97
|
+
/** Dwell consensus window in seconds; `0` disables it. @defaultValue 0.15 */
|
|
98
|
+
dwellWindowSeconds?: number;
|
|
99
|
+
/** 1€ filter min cutoff. @defaultValue 1.5 */
|
|
100
|
+
filterMinCutoff?: number;
|
|
101
|
+
/** 1€ filter beta. @defaultValue 0.05 */
|
|
102
|
+
filterBeta?: number;
|
|
103
|
+
/** Yield to near touch/grab pointers when they're active. @defaultValue true */
|
|
104
|
+
suppressWhenDirectPointerActive?: boolean;
|
|
105
|
+
/** Drag from the pinching hand's ray space once selected. @defaultValue true */
|
|
106
|
+
pointerTransformFollowsHand?: boolean;
|
|
107
|
+
/** Emit `[iwsdk][gaze]` console diagnostics. @defaultValue true */
|
|
108
|
+
logDiagnostics?: boolean;
|
|
109
|
+
/** Show a developer-only gaze hit reticle. @defaultValue false */
|
|
110
|
+
showDebugReticle?: boolean;
|
|
111
|
+
/** Keep gaze mode active briefly after tracking becomes invalid. @defaultValue 5 */
|
|
112
|
+
trackingLossGraceSeconds?: number;
|
|
113
|
+
};
|
|
87
114
|
/** Physics simulation (Havok). Boolean or config. @defaultValue false */
|
|
88
115
|
physics?: boolean | {
|
|
89
116
|
/** Run the physics engine in a Web Worker. @defaultValue true */
|
|
@@ -180,6 +207,28 @@ export declare function extractConfiguration(options: WorldOptions): {
|
|
|
180
207
|
readonly grabbing: boolean | {
|
|
181
208
|
useHandPinchForGrab?: boolean;
|
|
182
209
|
};
|
|
210
|
+
readonly gaze: {
|
|
211
|
+
/** Half-angle of the gaze selection cone, in degrees. @defaultValue 5 */
|
|
212
|
+
coneAngle?: number;
|
|
213
|
+
/** Maximum gaze cone distance in meters. @defaultValue 30 */
|
|
214
|
+
maxRayLength?: number;
|
|
215
|
+
/** Dwell consensus window in seconds; `0` disables it. @defaultValue 0.15 */
|
|
216
|
+
dwellWindowSeconds?: number;
|
|
217
|
+
/** 1€ filter min cutoff. @defaultValue 1.5 */
|
|
218
|
+
filterMinCutoff?: number;
|
|
219
|
+
/** 1€ filter beta. @defaultValue 0.05 */
|
|
220
|
+
filterBeta?: number;
|
|
221
|
+
/** Yield to near touch/grab pointers when they're active. @defaultValue true */
|
|
222
|
+
suppressWhenDirectPointerActive?: boolean;
|
|
223
|
+
/** Drag from the pinching hand's ray space once selected. @defaultValue true */
|
|
224
|
+
pointerTransformFollowsHand?: boolean;
|
|
225
|
+
/** Emit `[iwsdk][gaze]` console diagnostics. @defaultValue true */
|
|
226
|
+
logDiagnostics?: boolean;
|
|
227
|
+
/** Show a developer-only gaze hit reticle. @defaultValue false */
|
|
228
|
+
showDebugReticle?: boolean;
|
|
229
|
+
/** Keep gaze mode active briefly after tracking becomes invalid. @defaultValue 5 */
|
|
230
|
+
trackingLossGraceSeconds?: number;
|
|
231
|
+
} | undefined;
|
|
183
232
|
readonly physics: boolean | {
|
|
184
233
|
/** Run the physics engine in a Web Worker. @defaultValue true */
|
|
185
234
|
useWorker?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-initializer.d.ts","sourceRoot":"","sources":["../../src/init/world-initializer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAEL,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"world-initializer.d.ts","sourceRoot":"","sources":["../../src/init/world-initializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ import { IBLGradient } from '../environment/ibl-gradient.js';
|
|
|
21
21
|
import { EnvironmentSystem } from '../environment/environment-system.js';
|
|
22
22
|
import { EnvironmentRaycastSystem } from '../environment-raycast/environment-raycast.js';
|
|
23
23
|
import { EnvironmentRaycastTarget } from '../environment-raycast/raycast-target.js';
|
|
24
|
+
import { GazeSystem } from '../gaze/gaze-system.js';
|
|
24
25
|
import '../grab/index.js';
|
|
25
26
|
import { InputSystem } from '../input/input-system.js';
|
|
26
27
|
import { InputManager } from '../input/input-manager.js';
|
|
@@ -40,9 +41,6 @@ import { FollowSystem } from '../ui/follow.js';
|
|
|
40
41
|
import { ScreenSpaceUISystem } from '../ui/screenspace.js';
|
|
41
42
|
import 'three/examples/jsm/geometries/RoundedBoxGeometry.js';
|
|
42
43
|
import { LevelRoot } from '../level/level-root.js';
|
|
43
|
-
import '../lighting/light-binding.js';
|
|
44
|
-
import { AmbientLightComponent, HemisphereLightComponent, DirectionalLightComponent, PointLightComponent, SpotLightComponent, RectAreaLightComponent } from '../lighting/light-components.js';
|
|
45
|
-
import { LightSystem } from '../lighting/light-system.js';
|
|
46
44
|
import '../locomotion/slide.js';
|
|
47
45
|
import '../locomotion/teleport.js';
|
|
48
46
|
import '../locomotion/turn.js';
|
|
@@ -60,6 +58,8 @@ import { armSessionGrantCaptureForOptions, onSessionGrant } from './session-gran
|
|
|
60
58
|
import { ReferenceSpaceType, SessionMode, buildSessionInit, adoptXRSession } from './xr.js';
|
|
61
59
|
import { Transform } from '../transform/transform-component.js';
|
|
62
60
|
import { Visibility } from '../visibility/visibility-component.js';
|
|
61
|
+
import { AmbientLightComponent, HemisphereLightComponent, DirectionalLightComponent, PointLightComponent, SpotLightComponent, RectAreaLightComponent } from '../lighting/light-components.js';
|
|
62
|
+
import { LightSystem } from '../lighting/light-system.js';
|
|
63
63
|
import { GrabSystem } from '../grab/grab-system.js';
|
|
64
64
|
import { PanelUI } from '../ui/panel-components.js';
|
|
65
65
|
import { ScreenSpace } from '../ui/screenspace-component.js';
|
|
@@ -191,7 +191,7 @@ function registerApplicationComponents(world, components) {
|
|
|
191
191
|
*/
|
|
192
192
|
/** @internal Exported for focused policy tests; not part of the package barrel. */
|
|
193
193
|
function extractConfiguration(options) {
|
|
194
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
|
|
194
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
|
|
195
195
|
const xrOptions = options.xr === false ? undefined : options.xr;
|
|
196
196
|
const spatialUI = (_a = options.features) === null || _a === void 0 ? void 0 : _a.spatialUI;
|
|
197
197
|
const legacyForwardHtmlEvents = typeof spatialUI === 'object' && spatialUI
|
|
@@ -221,11 +221,12 @@ function extractConfiguration(options) {
|
|
|
221
221
|
features: {
|
|
222
222
|
locomotion: (_u = (_t = options.features) === null || _t === void 0 ? void 0 : _t.locomotion) !== null && _u !== void 0 ? _u : false,
|
|
223
223
|
grabbing: (_w = (_v = options.features) === null || _v === void 0 ? void 0 : _v.grabbing) !== null && _w !== void 0 ? _w : false,
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
224
|
+
gaze: (_x = options.features) === null || _x === void 0 ? void 0 : _x.gaze,
|
|
225
|
+
physics: (_z = (_y = options.features) === null || _y === void 0 ? void 0 : _y.physics) !== null && _z !== void 0 ? _z : false,
|
|
226
|
+
sceneUnderstanding: (_1 = (_0 = options.features) === null || _0 === void 0 ? void 0 : _0.sceneUnderstanding) !== null && _1 !== void 0 ? _1 : false,
|
|
227
|
+
environmentRaycast: (_3 = (_2 = options.features) === null || _2 === void 0 ? void 0 : _2.environmentRaycast) !== null && _3 !== void 0 ? _3 : false,
|
|
228
|
+
camera: (_5 = (_4 = options.features) === null || _4 === void 0 ? void 0 : _4.camera) !== null && _5 !== void 0 ? _5 : false,
|
|
229
|
+
spatialUI: (_7 = (_6 = options.features) === null || _6 === void 0 ? void 0 : _6.spatialUI) !== null && _7 !== void 0 ? _7 : true,
|
|
229
230
|
},
|
|
230
231
|
};
|
|
231
232
|
}
|
|
@@ -421,7 +422,7 @@ function registerAdditionalSystems(world) {
|
|
|
421
422
|
world.registerComponent(AudioSource).registerSystem(AudioSystem);
|
|
422
423
|
}
|
|
423
424
|
async function registerFeatureSystems(world, config) {
|
|
424
|
-
var _a;
|
|
425
|
+
var _a, _b, _c;
|
|
425
426
|
const locomotion = config.features.locomotion;
|
|
426
427
|
const locomotionEnabled = !!locomotion;
|
|
427
428
|
const grabbing = config.features.grabbing;
|
|
@@ -462,6 +463,17 @@ async function registerFeatureSystems(world, config) {
|
|
|
462
463
|
configData: world.input.canvasPointerEvents,
|
|
463
464
|
});
|
|
464
465
|
}
|
|
466
|
+
// GazeSystem activates when the gazeTracking feature flag is set (or its
|
|
467
|
+
// deprecated eyeTracking alias). Far rays remain active until tracked gaze
|
|
468
|
+
// is usable. Gating
|
|
469
|
+
// registration keeps the runtime cost out of apps that don't need gaze UI.
|
|
470
|
+
if (((_a = config.xr.features) === null || _a === void 0 ? void 0 : _a.gazeTracking) || ((_b = config.xr.features) === null || _b === void 0 ? void 0 : _b.eyeTracking)) {
|
|
471
|
+
const gaze = config.features.gaze;
|
|
472
|
+
const gazeOpts = gaze
|
|
473
|
+
? Object.fromEntries(Object.entries(gaze).filter(([, v]) => v !== undefined))
|
|
474
|
+
: undefined;
|
|
475
|
+
world.registerSystem(GazeSystem, { priority: -4, configData: gazeOpts });
|
|
476
|
+
}
|
|
465
477
|
if (grabbingEnabled) {
|
|
466
478
|
const grabOpts = typeof grabbing === 'object' && grabbing
|
|
467
479
|
? Object.fromEntries(Object.entries({
|
|
@@ -520,7 +532,7 @@ async function registerFeatureSystems(world, config) {
|
|
|
520
532
|
world.registerComponent(CameraSource).registerSystem(CameraSystem);
|
|
521
533
|
}
|
|
522
534
|
// WebXR composition layers (quad/cylinder)
|
|
523
|
-
if (config.xr.enabled && ((
|
|
535
|
+
if (config.xr.enabled && ((_c = config.xr.features) === null || _c === void 0 ? void 0 : _c.layers)) {
|
|
524
536
|
world
|
|
525
537
|
.registerComponent(XRQuadLayer)
|
|
526
538
|
.registerComponent(XRCylinderLayer)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-initializer.js","sources":["../../src/init/world-initializer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"world-initializer.js","sources":["../../src/init/world-initializer.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 { mergeSceneComponentCatalogs } from '@iwsdk/scene-composition';\nimport { XRInputManager } from '@iwsdk/xr-input';\nimport { signal } from '@preact/signals-core';\nimport {\n AssetManager,\n AssetManifest,\n RenderableAssetRegistry,\n} from '../asset/index.js';\nimport { AudioSource, AudioSystem } from '../audio/index.js';\nimport { CameraSource, CameraSystem } from '../camera/index.js';\nimport {\n ComponentRegistry,\n IWSDK_BUILTIN_COMPONENTS,\n componentCatalogFromComponents,\n type ComponentManifest,\n} from '../ecs/index.js';\nimport { World, VisibilityState } from '../ecs/world.js';\nimport {\n DomeTexture,\n DomeGradient,\n IBLTexture,\n IBLGradient,\n EnvironmentSystem,\n} from '../environment/index.js';\nimport {\n EnvironmentRaycastSystem,\n EnvironmentRaycastTarget,\n} from '../environment-raycast/index.js';\nimport { GazeSystem } from '../gaze/index.js';\nimport { GrabSystem } from '../grab/index.js';\nimport {\n CanvasPointerEventsOption,\n CanvasPointerSystem,\n RayInteractable,\n PokeInteractable,\n Hovered,\n InputManager,\n Pressed,\n} from '../input/index.js';\nimport { InputSystem } from '../input/index.js';\nimport {\n XRQuadLayer,\n XRCylinderLayer,\n XRLayerState,\n XRLayerSystem,\n} from '../layers/index.js';\nimport { LevelTag, LevelRoot } from '../level/index.js';\nimport { LevelSystem } from '../level/index.js';\nimport {\n AmbientLightComponent,\n DirectionalLightComponent,\n HemisphereLightComponent,\n LightSystem,\n PointLightComponent,\n RectAreaLightComponent,\n SpotLightComponent,\n} from '../lighting/index.js';\nimport {\n type BrowserLocomotionControls,\n LocomotionSystem,\n TurningMethod,\n} from '../locomotion/index.js';\nimport { MCPRuntime } from '../mcp/index.js';\n// The physics module pulls in `@babylonjs/havok` (~2 MB WASM + engine JS) at\n// the static-graph level. Load it lazily in `registerFeatureSystems` only\n// when `features.physics` is enabled so non-physics projects don't pay the\n// bundle-size tax.\nimport {\n Clock,\n PerspectiveCamera,\n SRGBColorSpace,\n Scene,\n WebGLRenderer,\n} from '../runtime/index.js';\nimport {\n SceneUnderstandingSystem,\n XRAnchor,\n XRMesh,\n XRPlane,\n} from '../scene-understanding/index.js';\nimport { Transform, TransformSystem } from '../transform/index.js';\nimport {\n FollowSystem,\n Follower,\n ScreenSpace,\n ScreenSpaceUISystem,\n PanelUI,\n PanelUISystem,\n ColorScheme,\n UIKitMLComponentSet,\n UIKitMLKit,\n loadUIKitMLAsset,\n} from '../ui/index.js';\nimport { Visibility, VisibilitySystem } from '../visibility/index.js';\nimport { attachCameraToPlayer } from './player-camera.js';\nimport {\n armSessionGrantCaptureForOptions,\n onSessionGrant,\n} from './session-grant.js';\nimport {\n ReferenceSpaceType,\n SessionMode,\n XROptions,\n adoptXRSession,\n buildSessionInit,\n} from './xr.js';\n\n/** Options for {@link initializeWorld} / {@link World.create}.\n *\n * @category Runtime\n * @remarks\n * Defaults are tuned for VR; camera and renderer behavior can be customized through {@link WorldOptions.render}.\n */\nexport type WorldOptions = {\n /** Asset manifest to preload before the first frame. */\n assets?: AssetManifest;\n\n /** Application components registered before the initial level is loaded. */\n components?: ComponentManifest;\n\n /** Native scene JSON level to load after initialization. Accepts a URL string or an object with a `url` field. */\n level?: { url?: string } | string;\n\n /**\n * XR session options and offer behavior. Set to `false` for browser-only\n * worlds. Set `launchOnSessionGranted` to handle immersive browser entry\n * that grants a session before or after asynchronous world initialization.\n */\n xr?: false | (XROptions & { offer?: 'none' | 'once' | 'always' });\n\n /** Renderer & camera configuration. */\n render?: {\n /** Camera field of view in degrees. @defaultValue 50 */\n fov?: number;\n /** Near clipping plane. @defaultValue 0.1 */\n near?: number;\n /** Far clipping plane. @defaultValue 200 */\n far?: number;\n /** Enable stencil buffer. @defaultValue false */\n stencil?: boolean;\n /** Initial local camera pose under `world.player`. */\n camera?: {\n position?: [number, number, number];\n rotation?: [number, number, number];\n quaternion?: [number, number, number, number];\n lookAt?: [number, number, number];\n };\n };\n\n /** Browser input and pointer interaction configuration. */\n input?: {\n /**\n * Forward DOM pointer events from the renderer canvas into the Three scene.\n * @defaultValue true\n */\n canvasPointerEvents?: CanvasPointerEventsOption;\n };\n\n /** Opt‑in feature systems. */\n features?: {\n /** Locomotion (teleport/slide/turn). Boolean or config. @defaultValue false */\n locomotion?:\n | boolean\n | {\n useWorker?: boolean;\n initialPlayerPosition?: [number, number, number];\n comfortAssistLevel?: number;\n turningMethod?: TurningMethod;\n /** Whether jumping is enabled. @defaultValue true */\n enableJumping?: boolean;\n /**\n * Opt into browser-first locomotion bindings such as WASD, Space,\n * and standard browser gamepad movement. Camera ownership remains\n * app-controlled: rotate `world.camera` yourself for pointer-lock,\n * orbit, touch-look, or follow cameras. Locomotion moves\n * `world.player` along the camera's forward direction.\n * @defaultValue false\n */\n browserControls?: BrowserLocomotionControls;\n };\n /** Grabbing (one/two‑hand, distance). @defaultValue false */\n grabbing?: boolean | { useHandPinchForGrab?: boolean };\n /**\n * Tuning for gaze + pinch input. `GazeSystem` registration is driven by the\n * `xr.features.gazeTracking` session feature, not by this entry — this only\n * overrides the system's defaults when gaze is already active.\n */\n gaze?: {\n /** Half-angle of the gaze selection cone, in degrees. @defaultValue 5 */\n coneAngle?: number;\n /** Maximum gaze cone distance in meters. @defaultValue 30 */\n maxRayLength?: number;\n /** Dwell consensus window in seconds; `0` disables it. @defaultValue 0.15 */\n dwellWindowSeconds?: number;\n /** 1€ filter min cutoff. @defaultValue 1.5 */\n filterMinCutoff?: number;\n /** 1€ filter beta. @defaultValue 0.05 */\n filterBeta?: number;\n /** Yield to near touch/grab pointers when they're active. @defaultValue true */\n suppressWhenDirectPointerActive?: boolean;\n /** Drag from the pinching hand's ray space once selected. @defaultValue true */\n pointerTransformFollowsHand?: boolean;\n /** Emit `[iwsdk][gaze]` console diagnostics. @defaultValue true */\n logDiagnostics?: boolean;\n /** Show a developer-only gaze hit reticle. @defaultValue false */\n showDebugReticle?: boolean;\n /** Keep gaze mode active briefly after tracking becomes invalid. @defaultValue 5 */\n trackingLossGraceSeconds?: number;\n };\n /** Physics simulation (Havok). Boolean or config. @defaultValue false */\n physics?:\n | boolean\n | {\n /** Run the physics engine in a Web Worker. @defaultValue true */\n useWorker?: boolean;\n /** Fixed simulation rate in updates per second (maximum 240). @defaultValue 60 */\n updateFrequency?: number;\n /** Smooth render transforms between physics snapshots. @defaultValue true */\n interpolation?: boolean;\n };\n /** Scene Understanding (planes/meshes/anchors). Boolean or config. @defaultValue false */\n sceneUnderstanding?: boolean | { showWireFrame?: boolean };\n /** Environment Raycast (hit-test against real-world surfaces). @defaultValue false */\n environmentRaycast?: boolean;\n /** Camera access for video streaming. @defaultValue false */\n camera?: boolean;\n /** Spatial UI systems (PanelUI/ScreenSpace/Follow). Boolean or config. @defaultValue true */\n spatialUI?:\n | boolean\n | {\n /** @deprecated Use `input.canvasPointerEvents` instead. */\n forwardHtmlEvents?: boolean;\n /** Built-in UIKitML component collection. @defaultValue 'horizon' */\n kit?: UIKitMLKit;\n /** Additional application-defined UIKitML component definitions. */\n componentSets?: UIKitMLComponentSet[];\n preferredColorScheme?: ColorScheme;\n };\n };\n};\n\ntype CameraPoseOptions = NonNullable<\n NonNullable<WorldOptions['render']>['camera']\n>;\n\n/**\n * Initialize a new WebXR world with all required systems and setup\n *\n * @param sceneContainer - HTML container for the renderer canvas\n * @param assets - Asset manifest for preloading\n * @param options - Configuration options for the world\n * @returns Promise that resolves to the initialized World instance\n */\n/**\n * Initialize a new WebXR world with all required systems and setup.\n *\n * @param sceneContainer HTML container for the renderer canvas.\n * @param options Configuration options for the world.\n * @returns Promise that resolves to the initialized {@link World} instance.\n *\n * @remarks\n * This function powers {@link World.create}. Prefer using that static helper.\n */\nexport async function initializeWorld(\n container: HTMLElement,\n options: WorldOptions = {},\n): Promise<World> {\n // This public entry point can be called without World.create(). Capture a\n // browser-delivered grant before any asynchronous initialization can yield.\n armSessionGrantCaptureForOptions(options.xr);\n\n // Create and configure world instance\n const world = createWorldInstance();\n registerApplicationComponents(world, options.components);\n world.componentCatalog = componentCatalogFromComponents(\n IWSDK_BUILTIN_COMPONENTS,\n { source: 'iwsdk' },\n );\n world.componentCatalog = mergeSceneComponentCatalogs(\n world.componentCatalog,\n componentCatalogFromComponents(options.components ?? [], { source: 'app' }),\n );\n\n // Extract configuration options\n const config = extractConfiguration(options);\n\n // Setup core rendering components\n const { camera, renderer, scene } = setupRendering(container, config);\n assignRenderingToWorld(world, camera, renderer, scene);\n\n // Setup input management\n setupInputManagement(world, config.input);\n\n // Store XR defaults for later explicit launch/offer calls\n world.xrDefaults = {\n sessionMode: config.xr.sessionMode,\n referenceSpace: config.xr.referenceSpace,\n features: config.xr.features,\n restoreCameraOnExit: config.xr.restoreCameraOnExit,\n launchOnSessionGranted: config.xr.launchOnSessionGranted,\n };\n world.xrEnabled = config.xr.enabled;\n\n // Register core systems\n registerCoreSystems(world);\n\n // Initialize asset manager\n initializeAssetManager(renderer, world);\n\n // Register additional systems (UI + Audio on by default)\n registerAdditionalSystems(world);\n\n // Register input and feature systems with explicit priorities.\n // Awaited because the physics branch dynamically imports its module so\n // `@babylonjs/havok` stays out of the static graph for non-physics builds.\n await registerFeatureSystems(world, config);\n\n // Setup render loop\n setupRenderLoop(world, renderer);\n\n // Setup resize handling\n setupResizeHandling(world, camera, renderer);\n\n // Setup MCP runtime for framework-specific tools (dev only).\n // In production Vite builds, import.meta.env.DEV is false and this entire\n // code path is tree-shaken. In Node.js/tests, import.meta.env is undefined\n // so the check defaults to enabled.\n if ((import.meta as any).env?.DEV !== false) {\n setupMCPRuntime(world);\n }\n\n // Return promise that resolves after asset preloading\n return finalizeInitialization(world, options.assets, config).then(\n async (w) => {\n // Load initial level or create empty level\n const levelUrl =\n typeof options.level === 'string' ? options.level : options.level?.url;\n if (levelUrl) {\n await w.loadLevel(levelUrl);\n } else {\n await w.loadLevel();\n }\n if (config.xr.launchOnSessionGranted) {\n const unsubscribe = onSessionGrant(\n () => {\n if (w.xrEnabled && w.session == null && !w.sessionRequestPending) {\n w.launchXR();\n }\n },\n { persistent: true },\n );\n w.addCleanup(unsubscribe);\n }\n if (config.xr.offer && config.xr.offer !== 'none') {\n manageOfferFlow(w, config.xr.offer);\n }\n return w;\n },\n );\n}\n\n/**\n * Create a new World instance with basic ECS setup\n */\nfunction createWorldInstance(): World {\n const world = new World();\n world\n .registerComponent(Transform)\n .registerComponent(Visibility)\n .registerComponent(LevelTag)\n .registerSystem(TransformSystem)\n .registerSystem(VisibilitySystem);\n return world;\n}\n\nfunction registerApplicationComponents(\n world: World,\n components: ComponentManifest | undefined,\n) {\n if (components == null) {\n return;\n }\n if (components.componentRegistry !== ComponentRegistry) {\n throw new Error(\n 'The component manifest was created by a different Elics module instance. Ensure @iwsdk/core and elics resolve to one copy.',\n );\n }\n for (const component of components) {\n world.registerComponent(component);\n }\n}\n\n/**\n * Extract and normalize configuration options\n */\n/** @internal Exported for focused policy tests; not part of the package barrel. */\nexport function extractConfiguration(options: WorldOptions) {\n const xrOptions = options.xr === false ? undefined : options.xr;\n const spatialUI = options.features?.spatialUI;\n const legacyForwardHtmlEvents =\n typeof spatialUI === 'object' && spatialUI\n ? spatialUI.forwardHtmlEvents\n : undefined;\n const canvasPointerEvents =\n options.input?.canvasPointerEvents ?? legacyForwardHtmlEvents;\n\n return {\n cameraFov: options.render?.fov ?? 50,\n cameraNear: options.render?.near ?? 0.1,\n cameraFar: options.render?.far ?? 200,\n cameraPose: options.render?.camera,\n stencil: options.render?.stencil ?? false,\n xr: {\n enabled: options.xr !== false,\n sessionMode: xrOptions?.sessionMode ?? SessionMode.ImmersiveVR,\n referenceSpace:\n xrOptions?.referenceSpace ?? ReferenceSpaceType.LocalFloor,\n features: xrOptions?.features,\n offer:\n options.xr === false || xrOptions?.launchOnSessionGranted === true\n ? 'none'\n : (xrOptions?.offer ?? 'always'),\n restoreCameraOnExit: xrOptions?.restoreCameraOnExit ?? true,\n launchOnSessionGranted: xrOptions?.launchOnSessionGranted ?? false,\n },\n input: {\n canvasPointerEvents,\n },\n features: {\n locomotion: options.features?.locomotion ?? false,\n grabbing: options.features?.grabbing ?? false,\n gaze: options.features?.gaze,\n physics: options.features?.physics ?? false,\n sceneUnderstanding: options.features?.sceneUnderstanding ?? false,\n environmentRaycast: options.features?.environmentRaycast ?? false,\n camera: options.features?.camera ?? false,\n spatialUI: options.features?.spatialUI ?? true,\n },\n } as const;\n}\n\n/**\n * Setup camera, renderer, and scene\n */\nfunction setupRendering(sceneContainer: HTMLElement, config: any) {\n // Camera Setup\n const camera = new PerspectiveCamera(\n config.cameraFov,\n window.innerWidth / window.innerHeight,\n config.cameraNear,\n config.cameraFar,\n );\n camera.position.set(0, 1.7, 0);\n if (config.cameraPose) {\n applyCameraPose(camera, config.cameraPose);\n }\n\n // Renderer Setup\n const renderer = new WebGLRenderer({\n antialias: true,\n alpha:\n config.xr.enabled && config.xr.sessionMode === SessionMode.ImmersiveAR,\n // @ts-ignore\n multiviewStereo: true,\n stencil: config.stencil,\n });\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.setSize(window.innerWidth, window.innerHeight);\n renderer.outputColorSpace = SRGBColorSpace;\n renderer.xr.enabled = config.xr.enabled;\n sceneContainer.appendChild(renderer.domElement);\n\n // Scene Setup\n const scene = new Scene();\n\n return { camera, renderer, scene };\n}\n\nfunction applyCameraPose(\n camera: PerspectiveCamera,\n pose: CameraPoseOptions,\n): void {\n if (pose.position) {\n camera.position.fromArray(pose.position);\n }\n if (pose.rotation) {\n camera.rotation.fromArray(pose.rotation);\n }\n if (pose.quaternion) {\n camera.quaternion.fromArray(pose.quaternion);\n }\n if (pose.lookAt) {\n camera.lookAt(...pose.lookAt);\n }\n}\n\n/**\n * Assign rendering components to world instance\n */\nfunction assignRenderingToWorld(\n world: World,\n camera: PerspectiveCamera,\n renderer: WebGLRenderer,\n scene: Scene,\n) {\n world.scene = scene;\n world.camera = camera;\n world.renderer = renderer;\n // Scene entity (wrap Scene in an entity for parenting convenience)\n world.sceneEntity = world.createTransformEntity(scene);\n // Create a default level root so activeLevel is always defined\n const levelRootEntity = world.createTransformEntity(undefined, {\n parent: world.sceneEntity,\n });\n levelRootEntity.object3D!.name = 'LevelRoot';\n // @ts-ignore init signal now; LevelSystem will enforce identity each frame\n world.activeLevel = signal(levelRootEntity);\n}\n\n/**\n * Setup XR input management\n */\nfunction setupInputManagement(\n world: World,\n config: ReturnType<typeof extractConfiguration>['input'],\n): XRInputManager {\n const xrInputManager = new XRInputManager({\n camera: world.camera,\n scene: world.scene,\n assetLoader: AssetManager,\n });\n world.scene.add(xrInputManager.xrOrigin);\n attachCameraToPlayer(xrInputManager.xrOrigin, world.camera);\n world.player = xrInputManager.xrOrigin;\n world.input = new InputManager(xrInputManager, {\n canvasPointerEvents: config.canvasPointerEvents,\n });\n\n const xrOrigin = xrInputManager.xrOrigin;\n\n const playerEntity = world.createTransformEntity(xrOrigin, {\n parent: world.sceneEntity,\n persistent: true,\n });\n world.cameraEntity = world.createTransformEntity(world.camera, {\n parent: playerEntity,\n persistent: true,\n });\n\n const headEntity = world.createTransformEntity(xrOrigin.head, {\n parent: playerEntity,\n persistent: true,\n });\n\n const rayLeftEntity = world.createTransformEntity(xrOrigin.raySpaces.left, {\n parent: playerEntity,\n persistent: true,\n });\n const rayRightEntity = world.createTransformEntity(xrOrigin.raySpaces.right, {\n parent: playerEntity,\n persistent: true,\n });\n\n const gripLeftEntity = world.createTransformEntity(xrOrigin.gripSpaces.left, {\n parent: playerEntity,\n persistent: true,\n });\n const gripRightEntity = world.createTransformEntity(\n xrOrigin.gripSpaces.right,\n { parent: playerEntity, persistent: true },\n );\n\n const indexTipLeftEntity = world.createTransformEntity(\n xrOrigin.indexTipSpaces.left,\n { parent: playerEntity, persistent: true },\n );\n const indexTipRightEntity = world.createTransformEntity(\n xrOrigin.indexTipSpaces.right,\n { parent: playerEntity, persistent: true },\n );\n\n world.playerEntity = playerEntity;\n world.playerHeadEntity = headEntity;\n world.playerSpaceEntities = {\n head: headEntity,\n raySpaces: { left: rayLeftEntity, right: rayRightEntity },\n gripSpaces: { left: gripLeftEntity, right: gripRightEntity },\n indexTipSpaces: { left: indexTipLeftEntity, right: indexTipRightEntity },\n };\n\n return xrInputManager;\n}\n\n/**\n * Manage offering XR sessions according to the configured offer policy.\n * - 'once': offer after init; no re-offer on end\n * - 'always': offer after init and re-offer whenever the session ends\n */\nfunction manageOfferFlow(world: World, mode: 'once' | 'always') {\n let offering = false;\n const offer = async () => {\n if (offering || world.session) {\n return;\n }\n offering = true;\n try {\n const opts = world.xrDefaults ?? {\n sessionMode: SessionMode.ImmersiveVR,\n };\n const sessionInit = buildSessionInit(opts as XROptions);\n\n const session = await navigator.xr?.offerSession?.(\n opts.sessionMode ?? SessionMode.ImmersiveVR,\n // if the dynamic import failed, rebuild via launchXR path by calling request, but we only want offer\n sessionInit as XRSessionInit,\n );\n if (!session) {\n return;\n }\n await adoptXRSession(world, session, opts as XROptions, onEnd);\n } finally {\n offering = false;\n }\n };\n\n const onEnd = () => {\n if (mode === 'always') {\n // Adoption can end before offer() clears its single-flight guard. Start\n // the replacement offer in the next task so that path can recover too.\n setTimeout(() => void offer(), 0);\n }\n };\n\n // initial offer once world is ready\n offer();\n}\n\n/**\n * Register core interaction systems\n */\nfunction registerCoreSystems(world: World) {\n world\n .registerComponent(RayInteractable)\n .registerComponent(PokeInteractable)\n .registerComponent(Hovered)\n .registerComponent(Pressed)\n .registerComponent(LevelRoot)\n // New split components\n .registerComponent(DomeTexture)\n .registerComponent(DomeGradient)\n .registerComponent(IBLTexture)\n .registerComponent(IBLGradient)\n .registerComponent(AmbientLightComponent)\n .registerComponent(HemisphereLightComponent)\n .registerComponent(DirectionalLightComponent)\n .registerComponent(PointLightComponent)\n .registerComponent(SpotLightComponent)\n .registerComponent(RectAreaLightComponent)\n // Unified environment system (background + IBL)\n .registerSystem(EnvironmentSystem)\n .registerSystem(LightSystem)\n .registerSystem(LevelSystem);\n}\n\n/**\n * Initialize the asset manager\n */\nfunction initializeAssetManager(renderer: WebGLRenderer, world: World) {\n AssetManager.init(renderer, world);\n world.assetManager = AssetManager;\n}\n\n/**\n * Register optional systems based on configuration\n */\nfunction registerAdditionalSystems(world: World) {\n // Audio system remains always-on\n world.registerComponent(AudioSource).registerSystem(AudioSystem);\n}\n\nasync function registerFeatureSystems(\n world: World,\n config: ReturnType<typeof extractConfiguration>,\n) {\n const locomotion = config.features.locomotion as\n | boolean\n | {\n useWorker?: boolean;\n initialPlayerPosition?: [number, number, number];\n comfortAssistLevel?: number;\n turningMethod?: TurningMethod;\n enableJumping?: boolean;\n browserControls?: BrowserLocomotionControls;\n };\n const locomotionEnabled = !!locomotion;\n const grabbing = config.features.grabbing as\n | boolean\n | { useHandPinchForGrab?: boolean };\n const grabbingEnabled = !!grabbing;\n const physics = config.features.physics as\n | boolean\n | {\n useWorker?: boolean;\n updateFrequency?: number;\n interpolation?: boolean;\n };\n const physicsEnabled = !!physics;\n const sceneUnderstanding = config.features.sceneUnderstanding as\n | boolean\n | { showWireFrame?: boolean };\n const sceneUnderstandingEnabled = !!sceneUnderstanding;\n const environmentRaycastEnabled = !!config.features.environmentRaycast;\n const cameraEnabled = !!config.features.camera;\n\n const spatialUI = config.features.spatialUI as\n | boolean\n | {\n forwardHtmlEvents?: boolean;\n kit?: UIKitMLKit;\n componentSets?: UIKitMLComponentSet[];\n preferredColorScheme?: ColorScheme;\n };\n const spatialUIEnabled = !!spatialUI;\n\n if (locomotionEnabled) {\n const locOpts =\n typeof locomotion === 'object' && locomotion\n ? Object.fromEntries(\n Object.entries({\n useWorker: locomotion.useWorker,\n initialPlayerPosition: locomotion.initialPlayerPosition,\n comfortAssist: locomotion.comfortAssistLevel,\n turningMethod: locomotion.turningMethod,\n enableJumping: locomotion.enableJumping,\n browserControls: locomotion.browserControls,\n }).filter(([, v]) => v !== undefined),\n )\n : undefined;\n world.registerSystem(LocomotionSystem, {\n priority: -5,\n configData: locOpts,\n });\n }\n world.registerSystem(InputSystem, {\n priority: -4,\n configData: {\n maintainScenePointers: world.input.canvasPointerEvents.enabled,\n },\n });\n if (world.input.canvasPointerEvents.enabled) {\n world.registerSystem(CanvasPointerSystem, {\n priority: -3.5,\n configData: world.input.canvasPointerEvents,\n });\n }\n // GazeSystem activates when the gazeTracking feature flag is set (or its\n // deprecated eyeTracking alias). Far rays remain active until tracked gaze\n // is usable. Gating\n // registration keeps the runtime cost out of apps that don't need gaze UI.\n if (config.xr.features?.gazeTracking || config.xr.features?.eyeTracking) {\n const gaze = config.features.gaze as\n | Record<string, number | boolean | undefined>\n | undefined;\n const gazeOpts = gaze\n ? Object.fromEntries(\n Object.entries(gaze).filter(([, v]) => v !== undefined),\n )\n : undefined;\n world.registerSystem(GazeSystem, { priority: -4, configData: gazeOpts });\n }\n if (grabbingEnabled) {\n const grabOpts =\n typeof grabbing === 'object' && grabbing\n ? Object.fromEntries(\n Object.entries({\n useHandPinchForGrab: grabbing.useHandPinchForGrab,\n }).filter(([, v]) => v !== undefined),\n )\n : undefined;\n world.registerSystem(GrabSystem, { priority: -3, configData: grabOpts });\n }\n\n // Physics runs after Grab so it can respect Pressed overrides.\n // Dynamically imported so the physics module (and its ~2 MB Havok WASM)\n // stays out of the static module graph for non-physics projects.\n if (physicsEnabled) {\n const { PhysicsBody, PhysicsManipulation, PhysicsShape, PhysicsSystem } =\n await import('../physics/index.js');\n const physicsOpts =\n typeof physics === 'object' && physics\n ? Object.fromEntries(\n Object.entries({\n useWorker: physics.useWorker,\n updateFrequency: physics.updateFrequency,\n interpolation: physics.interpolation,\n }).filter(([, value]) => value !== undefined),\n )\n : undefined;\n world\n .registerComponent(PhysicsBody)\n .registerComponent(PhysicsShape)\n .registerComponent(PhysicsManipulation)\n .registerSystem(PhysicsSystem, {\n priority: -2,\n configData: physicsOpts,\n });\n }\n\n // Scene Understanding updates plane/mesh/anchor debug after input/physics\n if (sceneUnderstandingEnabled) {\n const sceneOpts =\n typeof sceneUnderstanding === 'object' && sceneUnderstanding\n ? Object.fromEntries(\n Object.entries({\n showWireFrame: sceneUnderstanding.showWireFrame,\n }).filter(([, v]) => v !== undefined),\n )\n : undefined;\n world\n .registerComponent(XRPlane)\n .registerComponent(XRMesh)\n .registerComponent(XRAnchor)\n .registerSystem(SceneUnderstandingSystem, {\n priority: -1,\n configData: sceneOpts,\n });\n }\n\n // Environment Raycast system - requires hit-test feature\n if (environmentRaycastEnabled) {\n world\n .registerComponent(EnvironmentRaycastTarget)\n .registerSystem(EnvironmentRaycastSystem, {\n priority: -1,\n });\n }\n\n // Camera system for video streaming\n if (cameraEnabled) {\n world.registerComponent(CameraSource).registerSystem(CameraSystem);\n }\n\n // WebXR composition layers (quad/cylinder)\n if (config.xr.enabled && config.xr.features?.layers) {\n world\n .registerComponent(XRQuadLayer)\n .registerComponent(XRCylinderLayer)\n .registerComponent(XRLayerState)\n .registerSystem(XRLayerSystem, { priority: 1 });\n }\n\n // Spatial UI systems (Panel, ScreenSpace, Follow)\n if (spatialUIEnabled) {\n const kit =\n typeof spatialUI === 'object' && spatialUI ? spatialUI.kit : undefined;\n const componentSets =\n typeof spatialUI === 'object' && spatialUI\n ? spatialUI.componentSets\n : undefined;\n const preferredColorScheme =\n typeof spatialUI === 'object' && spatialUI\n ? spatialUI.preferredColorScheme\n : undefined;\n\n world\n .registerComponent(PanelUI)\n .registerComponent(ScreenSpace)\n .registerComponent(Follower)\n .registerSystem(PanelUISystem, {\n // Keep UIKit document updates ahead of screen-space layout publishing.\n priority: -3.8,\n configData: {\n ...(kit ? { kit } : {}),\n ...(componentSets ? { componentSets } : {}),\n ...(preferredColorScheme !== undefined\n ? { preferredColorScheme }\n : {}),\n },\n })\n .registerSystem(ScreenSpaceUISystem, {\n // Publish camera-local UI descendants after PanelUISystem updates\n // documents and before CanvasPointerSystem forwards DOM pointer events.\n priority: -3.75,\n })\n .registerSystem(FollowSystem);\n }\n}\n\n/**\n * Setup the main render loop\n */\nfunction setupRenderLoop(world: World, renderer: WebGLRenderer) {\n const clock = new Clock();\n\n const render = () => {\n const delta = clock.getDelta();\n const elapsedTime = clock.elapsedTime;\n world.visibilityState.value = (world.session?.visibilityState ??\n VisibilityState.NonImmersive) as VisibilityState;\n // Run ECS systems in priority order (InputSystem => LocomotionSystem => GrabSystem)\n world.update(delta, elapsedTime);\n // Fan out the live XRFrame to userland callbacks (world.onXRFrame) after\n // systems update and before rendering. Guarded so non-XR ticks and worlds\n // with no subscribers pay nothing.\n const xrFrame = renderer.xr.getFrame?.();\n if (xrFrame) {\n world.runXRFrameCallbacks(xrFrame, delta, elapsedTime);\n }\n renderer.render(world.scene, world.camera);\n };\n\n renderer.setAnimationLoop(render);\n // Allow World.destroy() to stop the loop (otherwise it keeps the world,\n // renderer, scene and camera alive forever via the render closure).\n world.addCleanup(() => renderer.setAnimationLoop(null));\n\n // No explicit sessionend handling required on r177; WebXRManager handles\n // render target and canvas sizing restoration internally.\n}\n\n/**\n * Setup window resize handling\n */\nfunction setupResizeHandling(\n world: World,\n camera: PerspectiveCamera,\n renderer: WebGLRenderer,\n) {\n const onWindowResize = () => {\n camera.aspect = window.innerWidth / window.innerHeight;\n camera.updateProjectionMatrix();\n renderer.setSize(window.innerWidth, window.innerHeight);\n };\n\n window.addEventListener('resize', onWindowResize, false);\n // Allow World.destroy() to remove this listener (otherwise it fires forever\n // and pins the camera/renderer captured in the closure).\n world.addCleanup(() =>\n window.removeEventListener('resize', onWindowResize, false),\n );\n}\n\n/**\n * Finalize initialization with asset preloading\n */\nfunction finalizeInitialization(\n world: World,\n assets?: AssetManifest,\n config?: ReturnType<typeof extractConfiguration>,\n): Promise<World> {\n const spatialUI = config?.features.spatialUI;\n world.assets = new RenderableAssetRegistry(assets, {\n ...(spatialUI\n ? {\n instantiateUIKitML: async (assetId: string) => {\n const options = typeof spatialUI === 'object' ? spatialUI : {};\n const asset = await loadUIKitMLAsset(assetId, {\n ...(options.kit ? { kit: options.kit } : {}),\n ...(options.componentSets\n ? { componentSets: options.componentSets }\n : {}),\n ...(options.preferredColorScheme !== undefined\n ? { preferredColorScheme: options.preferredColorScheme }\n : {}),\n });\n asset.userData.iwsdkDisposeAsset = () => asset.dispose();\n return asset;\n },\n }\n : {}),\n });\n return world.assets.preload().then(() => world);\n}\n\n/**\n * Setup MCP runtime for framework-specific tools.\n * This creates the MCPRuntime and exposes it on window.FRAMEWORK_MCP_RUNTIME\n * for vite-plugin-dev to route framework-specific tool calls.\n */\nfunction setupMCPRuntime(world: World) {\n world.mcpRuntime = new MCPRuntime(world);\n\n // Expose globally for vite-plugin discovery\n // This allows the vite plugin to route framework-specific MCP tools\n // without having a direct dependency on @iwsdk/core\n if (typeof window !== 'undefined') {\n (window as any).FRAMEWORK_MCP_RUNTIME = world.mcpRuntime;\n if (typeof window.dispatchEvent === 'function') {\n window.dispatchEvent(new Event('iwsdk:mcp-runtime-ready'));\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/init/xr.d.ts
CHANGED
|
@@ -50,6 +50,20 @@ export type XRFeatureOptions = {
|
|
|
50
50
|
*/
|
|
51
51
|
layers?: FeatureFlag;
|
|
52
52
|
unbounded?: FeatureFlag;
|
|
53
|
+
/**
|
|
54
|
+
* Eye/gaze tracking, used to drive gaze interactions. When granted, the
|
|
55
|
+
* runtime surfaces an `XRInputSource` with `targetRayMode === 'gaze'` and
|
|
56
|
+
* IWSDK drives {@link XROrigin.eyeSpace} from its target-ray pose. When
|
|
57
|
+
* unavailable, ordinary hand/controller rays remain active.
|
|
58
|
+
*
|
|
59
|
+
* Requesting this also registers `GazeSystem`.
|
|
60
|
+
*/
|
|
61
|
+
gazeTracking?: FeatureFlag;
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated Use {@link XRFeatureOptions.gazeTracking}. Kept as an alias
|
|
64
|
+
* for the W3C draft's `'eye-tracking'` descriptor name.
|
|
65
|
+
*/
|
|
66
|
+
eyeTracking?: FeatureFlag;
|
|
53
67
|
};
|
|
54
68
|
/** Reference space configuration. @category Runtime */
|
|
55
69
|
export type ReferenceSpaceSpec = ReferenceSpaceType | {
|
package/dist/init/xr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xr.d.ts","sourceRoot":"","sources":["../../src/init/xr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,gEAAgE;AAChE,oBAAY,WAAW;IACrB,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;CAC7B;AAED,uDAAuD;AACvD,oBAAY,kBAAkB;IAC5B,YAAY,kBAAkB;IAC9B,KAAK,UAAU;IACf,UAAU,gBAAgB;IAC1B,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP;IACE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,eAAe,GAAG,eAAe,CAAC;IAC1C,oCAAoC;IACpC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACxC,CAAC;AAEN,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"xr.d.ts","sourceRoot":"","sources":["../../src/init/xr.ts"],"names":[],"mappings":"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"}
|