@iwsdk/core 1.0.0-rc.0 → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asset/asset-manager.js.map +1 -1
- package/dist/asset/cache-manager.js.map +1 -1
- package/dist/asset/loaders/audio-loader.js.map +1 -1
- package/dist/asset/loaders/cached-asset-load.js.map +1 -1
- package/dist/asset/loaders/gltf-loader.js.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
- package/dist/asset/loaders/texture-loader.js.map +1 -1
- package/dist/asset/loaders/uikitml-loader.js.map +1 -1
- package/dist/audio/audio-pool.js.map +1 -1
- package/dist/audio/audio-system.js.map +1 -1
- package/dist/audio/audio-utils.js.map +1 -1
- package/dist/audio/audio.js.map +1 -1
- package/dist/camera/camera-source.js.map +1 -1
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/camera/camera-utils.js.map +1 -1
- package/dist/camera/types.js.map +1 -1
- package/dist/depth/depth-occludable.js.map +1 -1
- package/dist/depth/depth-sensing-system.js.map +1 -1
- package/dist/depth/depth-textures.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
- package/dist/ecs/builtin-components.js.map +1 -1
- package/dist/ecs/component-editor-metadata.js.map +1 -1
- package/dist/ecs/component-manifest.js.map +1 -1
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/system.js.map +1 -1
- package/dist/ecs/world.js.map +1 -1
- package/dist/environment/dome-gradient.js.map +1 -1
- package/dist/environment/dome-texture.js.map +1 -1
- package/dist/environment/environment-system.js.map +1 -1
- package/dist/environment/gradient-environment.js.map +1 -1
- package/dist/environment/ibl-gradient.js.map +1 -1
- package/dist/environment/ibl-texture.js.map +1 -1
- package/dist/environment/scene-ar-environment.js.map +1 -1
- package/dist/environment-raycast/environment-raycast.js.map +1 -1
- package/dist/environment-raycast/raycast-target.js.map +1 -1
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-helpers.js.map +1 -1
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/grab-warnings.js.map +1 -1
- package/dist/grab/grabbed.js.map +1 -1
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/index.js.map +1 -1
- package/dist/grab/one-hand-grabbable.js.map +1 -1
- package/dist/grab/pointer-events-patch.js.map +1 -1
- package/dist/grab/two-hands-grabbable.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/init/browser-camera.js.map +1 -1
- package/dist/init/player-camera.js.map +1 -1
- package/dist/init/session-grant.js.map +1 -1
- package/dist/init/world-initializer.js +2 -3
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.js.map +1 -1
- package/dist/input/canvas-pointer-system.js.map +1 -1
- package/dist/input/input-actions.js.map +1 -1
- package/dist/input/input-manager.js.map +1 -1
- package/dist/input/input-system.js.map +1 -1
- package/dist/input/state-tags.js.map +1 -1
- package/dist/input/stateful-browser-gamepad.js.map +1 -1
- package/dist/input/stateful-keyboard.js.map +1 -1
- package/dist/layers/xr-cylinder-layer.js.map +1 -1
- package/dist/layers/xr-layer-init.js.map +1 -1
- package/dist/layers/xr-layer-state.js.map +1 -1
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/layers/xr-layer-transform.js.map +1 -1
- package/dist/layers/xr-quad-layer.js.map +1 -1
- package/dist/level/level-component-applier.js.map +1 -1
- package/dist/level/level-player-rig.js.map +1 -1
- package/dist/level/level-root.js.map +1 -1
- package/dist/level/level-scene-environment.js.map +1 -1
- package/dist/level/level-scene-json-importer.js.map +1 -1
- package/dist/level/level-scene-material.js.map +1 -1
- package/dist/level/level-scene-object.js.map +1 -1
- package/dist/level/level-scene-primitive.js.map +1 -1
- package/dist/level/level-system.js.map +1 -1
- package/dist/level/level-tag.js.map +1 -1
- package/dist/lighting/light-binding.js.map +1 -1
- package/dist/lighting/light-components.js.map +1 -1
- package/dist/lighting/light-system.js.map +1 -1
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
- package/dist/locomotion/locomotion-environment.js.map +1 -1
- package/dist/locomotion/locomotion-input-provider.js.map +1 -1
- package/dist/locomotion/locomotion.js.map +1 -1
- package/dist/locomotion/materials/line.js.map +1 -1
- package/dist/locomotion/slide.js.map +1 -1
- package/dist/locomotion/teleport.js.map +1 -1
- package/dist/locomotion/turn.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.js.map +1 -1
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/scene-tools.js.map +1 -1
- package/dist/mcp/ui-debug-tools.js.map +1 -1
- package/dist/physics/physics-runtime.js.map +1 -1
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physics-transport.js.map +1 -1
- package/dist/physics/physics-worker-protocol.js.map +1 -1
- package/dist/physics/physics-worker-utils.js.map +1 -1
- package/dist/physics/physics-worker.js.map +1 -1
- package/dist/physics/physicsBody.js.map +1 -1
- package/dist/physics/physicsManipulation.js.map +1 -1
- package/dist/physics/physicsShape.js.map +1 -1
- package/dist/physics/utils.js.map +1 -1
- package/dist/project/normalize.js.map +1 -1
- package/dist/project/paths.js.map +1 -1
- package/dist/project/types.js.map +1 -1
- package/dist/project/validation.js.map +1 -1
- package/dist/runtime/three.js.map +1 -1
- package/dist/scene-understanding/anchor.js.map +1 -1
- package/dist/scene-understanding/mesh.js.map +1 -1
- package/dist/scene-understanding/plane.js.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/transform/synced-euler.js.map +1 -1
- package/dist/transform/synced-quaternion.js.map +1 -1
- package/dist/transform/synced-vector3.js.map +1 -1
- package/dist/transform/transform-component.js.map +1 -1
- package/dist/transform/transform-utils.js.map +1 -1
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/document.js.map +1 -1
- package/dist/ui/follow-component.js.map +1 -1
- package/dist/ui/follow.js.map +1 -1
- package/dist/ui/panel-components.js.map +1 -1
- package/dist/ui/screenspace-component.js.map +1 -1
- package/dist/ui/screenspace.js.map +1 -1
- package/dist/ui/ui.js.map +1 -1
- package/dist/ui/uikitml-asset.js.map +1 -1
- package/dist/ui/uikitml.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/visibility/visibility-component.js.map +1 -1
- package/dist/visibility/visibility.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"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.js
CHANGED
|
@@ -77,15 +77,13 @@ export { DepthSensingSystem } from './depth/depth-sensing-system.js';
|
|
|
77
77
|
export { XRQuadLayer } from './layers/xr-quad-layer.js';
|
|
78
78
|
export { XRCylinderLayer } from './layers/xr-cylinder-layer.js';
|
|
79
79
|
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
80
|
export { MCPRuntime } from './mcp/mcp-runtime.js';
|
|
84
81
|
export * from '@iwsdk/xr-input';
|
|
85
82
|
export * from '@iwsdk/locomotor';
|
|
86
83
|
import * as uikit from '@pmndrs/uikit';
|
|
87
84
|
export { uikit as UIKit };
|
|
88
85
|
export { Signal, batch, computed, effect, signal, untracked } from '@preact/signals-core';
|
|
86
|
+
export { AmbientLightComponent, DirectionalLightComponent, HemisphereLightComponent, IWSDK_LIGHT_COMPONENTS, LightShadowMapSize, PointLightComponent, RectAreaLightComponent, SpotLightComponent } from './lighting/light-components.js';
|
|
89
87
|
export { AssetLoadTimeoutError, DEFAULT_ASSET_LOAD_TIMEOUT_MS } from './asset/loaders/cached-asset-load.js';
|
|
90
88
|
export { ColorSchemeType, PanelDocument, PanelUI } from './ui/panel-components.js';
|
|
91
89
|
export { DEFAULT_MAX_MODEL_PAYLOAD_BYTES, DEFAULT_MAX_TOTAL_MODEL_PAYLOAD_BYTES, GLTFPayloadLimitError } from './asset/loaders/gltf-loader.js';
|
|
@@ -94,6 +92,8 @@ export { FollowBehavior, Follower } from './ui/follow-component.js';
|
|
|
94
92
|
export { GrabSystem } from './grab/grab-system.js';
|
|
95
93
|
export { Grabbed } from './grab/grabbed.js';
|
|
96
94
|
export { IWSDK_PROJECT_MANIFEST_VERSION } from './project/types.js';
|
|
95
|
+
export { LightBinding } from './lighting/light-binding.js';
|
|
96
|
+
export { LightSystem, lightSpecFromComponentValue, readLightSpec } from './lighting/light-system.js';
|
|
97
97
|
export { LocomotionEnvironment } from './locomotion/locomotion-environment.js';
|
|
98
98
|
export { MAX_SCENE_PATTERN_INSTANCES, deriveSceneInstanceNodeId, deriveScenePatternNodeId, generateScenePatternTransforms } from '@iwsdk/scene-composition';
|
|
99
99
|
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 './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;AA6CH,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;;;;"}
|
|
@@ -40,9 +40,6 @@ import { FollowSystem } from '../ui/follow.js';
|
|
|
40
40
|
import { ScreenSpaceUISystem } from '../ui/screenspace.js';
|
|
41
41
|
import 'three/examples/jsm/geometries/RoundedBoxGeometry.js';
|
|
42
42
|
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
43
|
import '../locomotion/slide.js';
|
|
47
44
|
import '../locomotion/teleport.js';
|
|
48
45
|
import '../locomotion/turn.js';
|
|
@@ -60,6 +57,8 @@ import { armSessionGrantCaptureForOptions, onSessionGrant } from './session-gran
|
|
|
60
57
|
import { ReferenceSpaceType, SessionMode, buildSessionInit, adoptXRSession } from './xr.js';
|
|
61
58
|
import { Transform } from '../transform/transform-component.js';
|
|
62
59
|
import { Visibility } from '../visibility/visibility-component.js';
|
|
60
|
+
import { AmbientLightComponent, HemisphereLightComponent, DirectionalLightComponent, PointLightComponent, SpotLightComponent, RectAreaLightComponent } from '../lighting/light-components.js';
|
|
61
|
+
import { LightSystem } from '../lighting/light-system.js';
|
|
63
62
|
import { GrabSystem } from '../grab/grab-system.js';
|
|
64
63
|
import { PanelUI } from '../ui/panel-components.js';
|
|
65
64
|
import { ScreenSpace } from '../ui/screenspace-component.js';
|
|
@@ -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 { 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 /** 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 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 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.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xr.js","sources":["../../src/init/xr.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xr.js","sources":["../../src/init/xr.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type { World } from '../ecs/world.js';\nimport { attachBrowserCameraRestore } from './browser-camera.js';\n\n/** WebXR session modes supported by IWSDK. @category Runtime */\nexport enum SessionMode {\n ImmersiveVR = 'immersive-vr',\n ImmersiveAR = 'immersive-ar',\n}\n\n/** Common WebXR reference spaces. @category Runtime */\nexport enum ReferenceSpaceType {\n BoundedFloor = 'bounded-floor',\n Local = 'local',\n LocalFloor = 'local-floor',\n Unbounded = 'unbounded',\n Viewer = 'viewer',\n}\n\n/**\n * Flag style for enabling a feature.\n * - `true` => request as optional\n * - `{ required: true }` => request as required\n * - `false`/`undefined` => do not request\n * @category Runtime\n */\nexport type FeatureFlag = boolean | { required?: boolean };\n\n/** Depth sensing feature configuration. @category Runtime */\nexport type DepthSensingFlag =\n | boolean\n | {\n required?: boolean;\n /** Depth usage preference. */\n usage?: 'cpu-optimized' | 'gpu-optimized';\n /** Depth data format preference. */\n format?: 'luminance-alpha' | 'float32';\n };\n\n/** Structured feature flags supported by IWSDK. @category Runtime */\nexport type XRFeatureOptions = {\n handTracking?: FeatureFlag;\n anchors?: FeatureFlag;\n hitTest?: FeatureFlag;\n planeDetection?: FeatureFlag;\n meshDetection?: FeatureFlag;\n depthSensing?: DepthSensingFlag;\n /**\n * WebXR Layers. Defaults to optional even if not set, to maximize success.\n * You may set `{ required: true }` to require layers.\n */\n layers?: FeatureFlag;\n unbounded?: FeatureFlag;\n};\n\n/** Reference space configuration. @category Runtime */\nexport type ReferenceSpaceSpec =\n | ReferenceSpaceType\n | {\n /** Preferred reference space type. @defaultValue 'local-floor' */\n type?: ReferenceSpaceType;\n /** If true, do not fall back to other spaces on failure. */\n required?: boolean;\n /**\n * Fallback order if preferred type is unavailable.\n * @defaultValue ['local', 'viewer']\n */\n fallbackOrder?: ReferenceSpaceType[];\n };\n\n/** Options for launching an XR session. @category Runtime */\nexport type XROptions = {\n /** Session mode to request. @defaultValue SessionMode.ImmersiveVR */\n sessionMode?: SessionMode;\n /** Reference space policy (preferred + fallback). */\n referenceSpace?: ReferenceSpaceSpec;\n /** Structured feature flags; avoids raw string arrays. */\n features?: XRFeatureOptions;\n /**\n * Auto-restore `world.camera` to its pre-XR local transform and\n * projection when the session ends. Without this, `WebGLRenderer.xr`\n * leaves the camera at the last head pose and the 2D fallback view is\n * inside-the-head until the user re-applies a camera setup. Restore is\n * deferred one rAF so `WebXRManager` finishes tearing down on the\n * end-tick before the camera is overwritten.\n * @defaultValue true\n */\n restoreCameraOnExit?: boolean;\n /**\n * Launch XR when the browser grants an immersive session through an external\n * entry point such as a headset deep link. The listener is armed before\n * asynchronous world initialization so an early grant is not lost.\n * This takes precedence over `offer`; IWSDK does not run both native grant\n * and offer flows for the same world.\n * @defaultValue false\n */\n launchOnSessionGranted?: boolean;\n};\n\n/** Default optional features appended to requests/offers. */\nconst defaultOffers = ['local-floor', 'bounded-floor', 'layers'] as const;\n\n/** Normalize a {@link FeatureFlag} to `{ required?: boolean } | undefined`. */\nfunction normalizeFlag(flag?: FeatureFlag): { required?: boolean } | undefined {\n if (flag === undefined || flag === false) {\n return undefined;\n }\n if (flag === true) {\n return {};\n }\n return { required: !!flag.required };\n}\n\nfunction isDepthFlagObject(\n flag: DepthSensingFlag | undefined,\n): flag is Exclude<DepthSensingFlag, boolean | undefined> {\n return typeof flag === 'object';\n}\n\n/** Build `XRSessionInit` from structured feature flags. */\nexport function buildSessionInit(opts: XROptions): XRSessionInit {\n const requiredFeatures: string[] = [];\n // Always offer helpful optional features by default\n const optionalFeatures: string[] = Array.from(new Set(defaultOffers));\n\n const f = opts.features ?? {};\n\n const map: Record<keyof XRFeatureOptions, string> = {\n handTracking: 'hand-tracking',\n anchors: 'anchors',\n hitTest: 'hit-test',\n planeDetection: 'plane-detection',\n meshDetection: 'mesh-detection',\n depthSensing: 'depth-sensing',\n layers: 'layers',\n unbounded: 'unbounded',\n } as const;\n\n const push = (\n key: keyof XRFeatureOptions,\n normalized: { required?: boolean } | undefined,\n ) => {\n if (!normalized) {\n return;\n }\n const token = map[key];\n if (normalized.required) {\n requiredFeatures.push(token);\n } else {\n optionalFeatures.push(token);\n }\n };\n\n // Simple flags\n push('handTracking', normalizeFlag(f.handTracking));\n push('anchors', normalizeFlag(f.anchors));\n push('hitTest', normalizeFlag(f.hitTest));\n push('planeDetection', normalizeFlag(f.planeDetection));\n push('meshDetection', normalizeFlag(f.meshDetection));\n push('layers', normalizeFlag(f.layers));\n push('unbounded', normalizeFlag(f.unbounded));\n\n // Depth sensing (may include preferences)\n if (f.depthSensing) {\n const normalized = normalizeFlag(\n isDepthFlagObject(f.depthSensing)\n ? { required: f.depthSensing.required }\n : f.depthSensing,\n );\n push('depthSensing', normalized);\n }\n\n const sessionInit: XRSessionInit = {\n requiredFeatures: Array.from(new Set(requiredFeatures)),\n optionalFeatures: Array.from(new Set(optionalFeatures)),\n };\n\n if (isDepthFlagObject(f.depthSensing)) {\n const usage = f.depthSensing.usage\n ? ([f.depthSensing.usage] as XRDepthUsage[])\n : undefined;\n const format = f.depthSensing.format\n ? ([f.depthSensing.format] as XRDepthDataFormat[])\n : undefined;\n // Use DOM XRDepthStateInit typing where available\n (\n sessionInit as XRSessionInit & {\n depthSensing?: XRDepthStateInit;\n }\n ).depthSensing = {\n ...(usage ? { usagePreference: usage } : {}),\n ...(format ? { dataFormatPreference: format } : {}),\n } as XRDepthStateInit;\n }\n\n return sessionInit;\n}\n\nexport function normalizeReferenceSpec(\n spec?: ReferenceSpaceSpec,\n): Required<Exclude<ReferenceSpaceSpec, ReferenceSpaceType>> {\n if (!spec || typeof spec === 'string') {\n return {\n type: (spec as ReferenceSpaceType) ?? ReferenceSpaceType.LocalFloor,\n required: false,\n fallbackOrder: [ReferenceSpaceType.Local, ReferenceSpaceType.Viewer],\n };\n }\n return {\n type: spec.type ?? ReferenceSpaceType.LocalFloor,\n required: !!spec.required,\n fallbackOrder: spec.fallbackOrder ?? [\n ReferenceSpaceType.Local,\n ReferenceSpaceType.Viewer,\n ],\n };\n}\n\nfunction mergeXROptions(\n base: XROptions | undefined,\n overrides?: Partial<XROptions>,\n): XROptions {\n const b = base ?? {};\n const o = overrides ?? {};\n const mergedFeatures = { ...(b.features ?? {}), ...(o.features ?? {}) };\n const merged: XROptions = {\n sessionMode: o.sessionMode ?? b.sessionMode ?? SessionMode.ImmersiveVR,\n referenceSpace: o.referenceSpace ?? b.referenceSpace,\n features: Object.keys(mergedFeatures).length ? mergedFeatures : undefined,\n restoreCameraOnExit: o.restoreCameraOnExit ?? b.restoreCameraOnExit ?? true,\n launchOnSessionGranted:\n o.launchOnSessionGranted ?? b.launchOnSessionGranted ?? false,\n };\n return merged;\n}\n\nexport async function resolveReferenceSpaceType(\n session: XRSession,\n preferred: ReferenceSpaceType,\n fallbacks: ReferenceSpaceType[],\n): Promise<ReferenceSpaceType> {\n const candidates: ReferenceSpaceType[] = [];\n for (const t of [preferred, ...fallbacks]) {\n if (!candidates.includes(t)) {\n candidates.push(t);\n }\n }\n\n for (const type of candidates) {\n try {\n // Probe support; three.js will request again using the resolved type.\n await session.requestReferenceSpace(\n type as unknown as XRReferenceSpaceType,\n );\n return type;\n } catch (_err) {\n // continue\n }\n }\n // If nothing worked, throw; caller will end the session.\n throw new Error('No supported reference space available');\n}\n\ntype SessionEndedCallback = () => void;\n\ntype PendingSessionAdoption = {\n session: XRSession;\n promise: Promise<boolean>;\n};\n\nconst pendingSessionAdoptions = new WeakMap<World, PendingSessionAdoption>();\n\nasync function safelyEndSession(session: XRSession): Promise<void> {\n try {\n await session.end();\n } catch {}\n}\n\n/**\n * Adopt a native or emulated session into the world's renderer. Concurrent\n * offer/request paths reconcile here: the first successfully adopted session\n * wins and any later session is ended.\n *\n * @internal\n */\nexport async function adoptXRSession(\n world: World,\n session: XRSession,\n options: XROptions,\n onSessionEnded?: SessionEndedCallback,\n): Promise<boolean> {\n if (world.session != null) {\n if (world.session !== session) {\n await safelyEndSession(session);\n }\n return world.session === session;\n }\n\n const existingPending = pendingSessionAdoptions.get(world);\n if (existingPending?.session === session) {\n return existingPending.promise;\n }\n\n const refSpec = normalizeReferenceSpec(options.referenceSpace);\n let sessionEnded = false;\n let sessionEndNotified = false;\n const notifySessionEnded = () => {\n if (sessionEndNotified) {\n return;\n }\n sessionEndNotified = true;\n onSessionEnded?.();\n };\n const onEnd = () => {\n sessionEnded = true;\n session.removeEventListener('end', onEnd);\n if (world.session === session) {\n world.session = undefined;\n }\n notifySessionEnded();\n };\n session.addEventListener('end', onEnd);\n\n while (true) {\n const pending = pendingSessionAdoptions.get(world);\n if (pending == null) {\n break;\n }\n if (pending.session === session) {\n session.removeEventListener('end', onEnd);\n return pending.promise;\n }\n const adopted = await pending.promise;\n if (sessionEnded) {\n return false;\n }\n if (adopted || world.session != null) {\n session.removeEventListener('end', onEnd);\n await safelyEndSession(session);\n return false;\n }\n // Another waiter may have claimed the now-free adoption slot before this\n // continuation ran. Loop and reconcile with it instead of racing it.\n }\n\n const adoption = (async (): Promise<boolean> => {\n try {\n const resolvedType = await resolveReferenceSpaceType(\n session,\n refSpec.type,\n refSpec.required ? [] : refSpec.fallbackOrder,\n );\n if (sessionEnded) {\n return false;\n }\n world.renderer.xr.getDepthSensingMesh = function () {\n return null;\n };\n world.renderer.xr.setReferenceSpaceType(\n resolvedType as unknown as XRReferenceSpaceType,\n );\n if (options.restoreCameraOnExit !== false) {\n attachBrowserCameraRestore(world.camera, session);\n }\n await world.renderer.xr.setSession(session);\n if (sessionEnded) {\n session.removeEventListener('end', onEnd);\n return false;\n }\n if (world.session != null && world.session !== session) {\n session.removeEventListener('end', onEnd);\n await safelyEndSession(session);\n return false;\n }\n world.session = session;\n return true;\n } catch (err) {\n session.removeEventListener('end', onEnd);\n console.error('[XR] Failed to acquire reference space:', err);\n await safelyEndSession(session);\n notifySessionEnded();\n return false;\n }\n })();\n pendingSessionAdoptions.set(world, { session, promise: adoption });\n try {\n return await adoption;\n } finally {\n if (pendingSessionAdoptions.get(world)?.promise === adoption) {\n pendingSessionAdoptions.delete(world);\n }\n }\n}\n\n/**\n * Explicitly request a WebXR session with the given options.\n *\n * @param world Target world.\n * @param options Partial overrides merged with {@link World.xrDefaults}.\n * @category Runtime\n */\nexport function launchXR(world: World, options?: Partial<XROptions>) {\n if (world.xrEnabled === false) {\n throw new Error(\n 'XR is disabled for this world. Create it with an XR configuration instead of { xr: false } before calling launchXR().',\n );\n }\n\n if (world.session != null) {\n console.error('XRSession already exists');\n return;\n }\n if (world.sessionRequestPending) {\n return;\n }\n\n const merged = mergeXROptions(world.xrDefaults, options);\n const { sessionMode = SessionMode.ImmersiveVR } = merged;\n const sessionOptions = buildSessionInit(merged);\n\n world.sessionRequestPending = true;\n world.renderer.xr.enabled = true;\n let request: Promise<XRSession> | undefined;\n try {\n request = navigator.xr?.requestSession?.(sessionMode, sessionOptions);\n } catch (error) {\n world.sessionRequestPending = false;\n console.error('[XR] Failed to start XR session:', error);\n return;\n }\n\n Promise.resolve(request)\n .then((session) =>\n session == null ? undefined : adoptXRSession(world, session, merged),\n )\n .catch((error) => {\n // requestSession rejects when the user denies permission, the device is\n // unavailable, or the requested features are unsupported.\n console.error('[XR] Failed to start XR session:', error);\n })\n .finally(() => {\n world.sessionRequestPending = false;\n });\n}\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAKH;IACY;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC9B,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;AAKvB;IACY;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;AAwF9B;AACA,MAAM,aAAa,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAU;AAEzE;AACA,SAAS,aAAa,CAAC,IAAkB,EAAA;IACvC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,EAAE;AACxC,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE;IACX;IACA,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtC;AAEA,SAAS,iBAAiB,CACxB,IAAkC,EAAA;AAElC,IAAA,OAAO,OAAO,IAAI,KAAK,QAAQ;AACjC;AAEA;AACM,SAAU,gBAAgB,CAAC,IAAe,EAAA;;IAC9C,MAAM,gBAAgB,GAAa,EAAE;;AAErC,IAAA,MAAM,gBAAgB,GAAa,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAErE,MAAM,CAAC,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;AAE7B,IAAA,MAAM,GAAG,GAA2C;AAClD,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,cAAc,EAAE,iBAAiB;AACjC,QAAA,aAAa,EAAE,gBAAgB;AAC/B,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,SAAS,EAAE,WAAW;KACd;AAEV,IAAA,MAAM,IAAI,GAAG,CACX,GAA2B,EAC3B,UAA8C,KAC5C;QACF,IAAI,CAAC,UAAU,EAAE;YACf;QACF;AACA,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACvB,YAAA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B;aAAO;AACL,YAAA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B;AACF,IAAA,CAAC;;IAGD,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;;AAG7C,IAAA,IAAI,CAAC,CAAC,YAAY,EAAE;QAClB,MAAM,UAAU,GAAG,aAAa,CAC9B,iBAAiB,CAAC,CAAC,CAAC,YAAY;cAC5B,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ;AACrC,cAAE,CAAC,CAAC,YAAY,CACnB;AACD,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IAClC;AAEA,IAAA,MAAM,WAAW,GAAkB;QACjC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACvD,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;KACxD;AAED,IAAA,IAAI,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC;AAC3B,cAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK;cACtB,SAAS;AACb,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC;AAC5B,cAAG,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM;cACvB,SAAS;;QAGX,WAGD,CAAC,YAAY,GAAG;AACf,YAAA,IAAI,KAAK,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC5C,YAAA,IAAI,MAAM,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;SAChC;IACvB;AAEA,IAAA,OAAO,WAAW;AACpB;AAEM,SAAU,sBAAsB,CACpC,IAAyB,EAAA;;IAEzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACrC,OAAO;AACL,YAAA,IAAI,EAAE,CAAA,EAAA,GAAC,IAA2B,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,kBAAkB,CAAC,UAAU;AACnE,YAAA,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC;SACrE;IACH;IACA,OAAO;QACL,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,kBAAkB,CAAC,UAAU;AAChD,QAAA,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;AACzB,QAAA,aAAa,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI;AACnC,YAAA,kBAAkB,CAAC,KAAK;AACxB,YAAA,kBAAkB,CAAC,MAAM;AAC1B,SAAA;KACF;AACH;AAEA,SAAS,cAAc,CACrB,IAA2B,EAC3B,SAA8B,EAAA;;IAE9B,MAAM,CAAC,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAJ,IAAI,GAAI,EAAE;IACpB,MAAM,CAAC,GAAG,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAT,SAAS,GAAI,EAAE;IACzB,MAAM,cAAc,GAAG,EAAE,IAAI,CAAA,EAAA,GAAA,CAAC,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAC,EAAE,IAAI,CAAA,EAAA,GAAA,CAAC,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAC,EAAE;AACvE,IAAA,MAAM,MAAM,GAAc;AACxB,QAAA,WAAW,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,WAAW,CAAC,WAAW;QACtE,cAAc,EAAE,MAAA,CAAC,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,CAAC,cAAc;AACpD,QAAA,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,SAAS;QACzE,mBAAmB,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,mBAAmB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,CAAC,mBAAmB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;QAC3E,sBAAsB,EACpB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK;KAChE;AACD,IAAA,OAAO,MAAM;AACf;AAEO,eAAe,yBAAyB,CAC7C,OAAkB,EAClB,SAA6B,EAC7B,SAA+B,EAAA;IAE/B,MAAM,UAAU,GAAyB,EAAE;IAC3C,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,EAAE;QACzC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACpB;IACF;AAEA,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,QAAA,IAAI;;AAEF,YAAA,MAAM,OAAO,CAAC,qBAAqB,CACjC,IAAuC,CACxC;AACD,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,IAAI,EAAE;;QAEf;IACF;;AAEA,IAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC3D;AASA,MAAM,uBAAuB,GAAG,IAAI,OAAO,EAAiC;AAE5E,eAAe,gBAAgB,CAAC,OAAkB,EAAA;AAChD,IAAA,IAAI;AACF,QAAA,MAAM,OAAO,CAAC,GAAG,EAAE;IACrB;IAAE,OAAA,EAAA,EAAM,EAAC;AACX;AAEA;;;;;;AAMG;AACI,eAAe,cAAc,CAClC,KAAY,EACZ,OAAkB,EAClB,OAAkB,EAClB,cAAqC,EAAA;;AAErC,IAAA,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE;AACzB,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAA,MAAM,gBAAgB,CAAC,OAAO,CAAC;QACjC;AACA,QAAA,OAAO,KAAK,CAAC,OAAO,KAAK,OAAO;IAClC;IAEA,MAAM,eAAe,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1D,IAAI,CAAA,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,MAAA,GAAA,MAAA,GAAf,eAAe,CAAE,OAAO,MAAK,OAAO,EAAE;QACxC,OAAO,eAAe,CAAC,OAAO;IAChC;IAEA,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC9D,IAAI,YAAY,GAAG,KAAK;IACxB,IAAI,kBAAkB,GAAG,KAAK;IAC9B,MAAM,kBAAkB,GAAG,MAAK;QAC9B,IAAI,kBAAkB,EAAE;YACtB;QACF;QACA,kBAAkB,GAAG,IAAI;AACzB,QAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,MAAA,GAAA,MAAA,GAAd,cAAc,EAAI;AACpB,IAAA,CAAC;IACD,MAAM,KAAK,GAAG,MAAK;QACjB,YAAY,GAAG,IAAI;AACnB,QAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;AACzC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAA,KAAK,CAAC,OAAO,GAAG,SAAS;QAC3B;AACA,QAAA,kBAAkB,EAAE;AACtB,IAAA,CAAC;AACD,IAAA,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;IAEtC,OAAO,IAAI,EAAE;QACX,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;AAClD,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB;QACF;AACA,QAAA,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE;AAC/B,YAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO;QACxB;AACA,QAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO;QACrC,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,KAAK;QACd;QACA,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE;AACpC,YAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;AACzC,YAAA,MAAM,gBAAgB,CAAC,OAAO,CAAC;AAC/B,YAAA,OAAO,KAAK;QACd;;;IAGF;AAEA,IAAA,MAAM,QAAQ,GAAG,CAAC,YAA6B;AAC7C,QAAA,IAAI;YACF,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAClD,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa,CAC9C;YACD,IAAI,YAAY,EAAE;AAChB,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,mBAAmB,GAAG,YAAA;AACtC,gBAAA,OAAO,IAAI;AACb,YAAA,CAAC;YACD,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,qBAAqB,CACrC,YAA+C,CAChD;AACD,YAAA,IAAI,OAAO,CAAC,mBAAmB,KAAK,KAAK,EAAE;AACzC,gBAAA,0BAA0B,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;YACnD;YACA,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3C,IAAI,YAAY,EAAE;AAChB,gBAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;AACzC,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AACtD,gBAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;AACzC,gBAAA,MAAM,gBAAgB,CAAC,OAAO,CAAC;AAC/B,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO;AACvB,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;AACzC,YAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC;AAC7D,YAAA,MAAM,gBAAgB,CAAC,OAAO,CAAC;AAC/B,YAAA,kBAAkB,EAAE;AACpB,YAAA,OAAO,KAAK;QACd;IACF,CAAC,GAAG;AACJ,IAAA,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAClE,IAAA,IAAI;QACF,OAAO,MAAM,QAAQ;IACvB;YAAU;AACR,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,OAAO,MAAK,QAAQ,EAAE;AAC5D,YAAA,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC;IACF;AACF;AAEA;;;;;;AAMG;AACG,SAAU,QAAQ,CAAC,KAAY,EAAE,OAA4B,EAAA;;AACjE,IAAA,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE;AAC7B,QAAA,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH;IACH;AAEA,IAAA,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE;AACzB,QAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC;QACzC;IACF;AACA,IAAA,IAAI,KAAK,CAAC,qBAAqB,EAAE;QAC/B;IACF;IAEA,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;IACxD,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,MAAM;AACxD,IAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAE/C,IAAA,KAAK,CAAC,qBAAqB,GAAG,IAAI;IAClC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI;AAChC,IAAA,IAAI,OAAuC;AAC3C,IAAA,IAAI;AACF,QAAA,OAAO,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,CAAC,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,WAAW,EAAE,cAAc,CAAC;IACvE;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,KAAK,CAAC,qBAAqB,GAAG,KAAK;AACnC,QAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC;QACxD;IACF;AAEA,IAAA,OAAO,CAAC,OAAO,CAAC,OAAO;SACpB,IAAI,CAAC,CAAC,OAAO,KACZ,OAAO,IAAI,IAAI,GAAG,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;AAErE,SAAA,KAAK,CAAC,CAAC,KAAK,KAAI;;;AAGf,QAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC;AAC1D,IAAA,CAAC;SACA,OAAO,CAAC,MAAK;AACZ,QAAA,KAAK,CAAC,qBAAqB,GAAG,KAAK;AACrC,IAAA,CAAC,CAAC;AACN;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-pointer-system.js","sources":["../../src/input/canvas-pointer-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas-pointer-system.js","sources":["../../src/input/canvas-pointer-system.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { isObjectTreeVisible } from '@iwsdk/xr-input';\nimport { forwardHtmlEvents } from '@pmndrs/pointer-events';\nimport { effect } from '@preact/signals-core';\n// Keep this leaf system out of the ecs/index -> World -> init barrel cycle.\nimport { Types } from '../ecs/component.js';\nimport { createSystem } from '../ecs/system.js';\nimport { Object3D } from '../runtime/index.js';\nimport type { ScenePointerDescendants } from '../runtime/scene-pointer-descendants.js';\n\nexport class CanvasPointerSystem extends createSystem(\n {},\n {\n /** Forward DOM pointer events from the renderer canvas into the Three scene. */\n enabled: { type: Types.Boolean, default: true },\n /** Continue forwarding pointer events while an immersive XR session is active. */\n activeDuringXR: { type: Types.Boolean, default: false },\n },\n) {\n private htmlHandler?: {\n destroy: () => void;\n update: () => void;\n };\n private readonly canvasPointerRoot = new Object3D();\n private readonly canvasPointerTraversalMarker = new Object3D();\n private readonly canvasPointerDescendants: Object3D[] = [];\n private xrSessionActive = false;\n\n init(): void {\n // @pmndrs/pointer-events returns early for childless objects before\n // reading interactableDescendants, so keep this synthetic root traversable.\n this.canvasPointerRoot.add(this.canvasPointerTraversalMarker);\n this.xrSessionActive =\n this.world.session != null || this.xrManager.getSession() != null;\n const onSessionStart = () => {\n this.xrSessionActive = true;\n this.syncHtmlHandler();\n };\n const onSessionEnd = () => {\n this.xrSessionActive = false;\n this.syncHtmlHandler();\n };\n this.xrManager.addEventListener('sessionstart', onSessionStart);\n this.xrManager.addEventListener('sessionend', onSessionEnd);\n this.cleanupFuncs.push(\n () => this.xrManager.removeEventListener('sessionstart', onSessionStart),\n () => this.xrManager.removeEventListener('sessionend', onSessionEnd),\n effect(() => {\n this.config.enabled.value;\n this.config.activeDuringXR.value;\n this.syncHtmlHandler();\n }),\n );\n }\n\n update(): void {\n if (!this.htmlHandler) {\n return;\n }\n this.prepareCanvasPointerRoot();\n this.htmlHandler.update();\n }\n\n private syncHtmlHandler(): void {\n this.htmlHandler?.destroy();\n this.htmlHandler = undefined;\n this.clearCanvasPointerRoot();\n if (\n !this.config.enabled.value ||\n (this.xrSessionActive && !this.config.activeDuringXR.value)\n ) {\n return;\n }\n this.prepareCanvasPointerRoot();\n this.htmlHandler = forwardHtmlEvents(\n this.renderer.domElement,\n () => this.camera,\n this.canvasPointerRoot,\n {\n batchEvents: false,\n filter: isObjectTreeVisible,\n },\n );\n }\n\n private prepareCanvasPointerRoot(): void {\n const scene = this.scene as typeof this.scene & ScenePointerDescendants;\n const root = this.canvasPointerRoot as Object3D & ScenePointerDescendants;\n const rayDescendants =\n scene.rayDescendants ?? scene.interactableDescendants;\n const screenSpaceDescendants = scene.screenSpaceDescendants;\n\n this.canvasPointerDescendants.length = 0;\n if (rayDescendants || screenSpaceDescendants) {\n this.pushDescendants(rayDescendants);\n this.pushDescendants(screenSpaceDescendants);\n root.interactableDescendants = this.canvasPointerDescendants;\n return;\n }\n\n this.canvasPointerDescendants.push(this.scene);\n root.interactableDescendants = this.canvasPointerDescendants;\n }\n\n private pushDescendants(descendants: Object3D[] | undefined): void {\n if (!descendants) {\n return;\n }\n this.canvasPointerDescendants.push(...descendants);\n }\n\n private clearCanvasPointerRoot(): void {\n const root = this.canvasPointerRoot as Object3D & ScenePointerDescendants;\n root.interactableDescendants = undefined;\n this.canvasPointerDescendants.length = 0;\n }\n\n destroy(): void {\n super.destroy();\n this.htmlHandler?.destroy();\n this.htmlHandler = undefined;\n this.clearCanvasPointerRoot();\n this.canvasPointerRoot.remove(this.canvasPointerTraversalMarker);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-actions.js","sources":["../../src/input/input-actions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-actions.js","sources":["../../src/input/input-actions.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 AxesState,\n InputComponent,\n type XRInputManager,\n} from '@iwsdk/xr-input';\nimport {\n BrowserGamepadAxis,\n BrowserGamepadButton,\n StatefulBrowserGamepad,\n} from './stateful-browser-gamepad.js';\nimport { StatefulKeyboard } from './stateful-keyboard.js';\n\nexport const InputActions = {\n LocomotionMove: 'locomotion.move',\n LocomotionTurn: 'locomotion.turn',\n LocomotionJump: 'locomotion.jump',\n LocomotionTeleportAim: 'locomotion.teleportAim',\n LocomotionTeleportCommit: 'locomotion.teleportCommit',\n InteractionSelect: 'interaction.select',\n} as const;\n\nexport type InputActionName =\n | (typeof InputActions)[keyof typeof InputActions]\n | (string & {});\n\nexport type InputActionProfile = 'xr' | 'browser-first-person';\n\nexport type InputActionDefaultBindingOptions = {\n keyboard?: boolean;\n gamepad?: boolean;\n};\n\ntype AxisKeyBinding = {\n source: 'keyboard';\n action: InputActionName;\n kind: 'axis2d';\n negativeX?: string[];\n positiveX?: string[];\n negativeY?: string[];\n positiveY?: string[];\n};\n\ntype KeyboardButtonBinding = {\n source: 'keyboard';\n action: InputActionName;\n kind: 'button';\n code: string;\n};\n\ntype BrowserGamepadAxis2DBinding = {\n source: 'browserGamepad';\n action: InputActionName;\n kind: 'axis2d';\n gamepadIndex?: number;\n axis: BrowserGamepadAxis;\n};\n\ntype BrowserGamepadAxis1DBinding = {\n source: 'browserGamepad';\n action: InputActionName;\n kind: 'axis1d';\n gamepadIndex?: number;\n axis: BrowserGamepadAxis;\n component?: 'x' | 'y';\n};\n\ntype BrowserGamepadButtonBinding = {\n source: 'browserGamepad';\n action: InputActionName;\n kind: 'button';\n gamepadIndex?: number;\n button: BrowserGamepadButton;\n};\n\ntype XRGamepadAxis2DBinding = {\n source: 'xrGamepad';\n action: InputActionName;\n kind: 'axis2d';\n handedness: 'left' | 'right';\n componentId: InputComponent;\n};\n\ntype XRGamepadAxis1DBinding = {\n source: 'xrGamepad';\n action: InputActionName;\n kind: 'axis1d';\n handedness: 'left' | 'right';\n componentId: InputComponent;\n component?: 'x' | 'y';\n};\n\ntype XRGamepadButtonBinding = {\n source: 'xrGamepad';\n action: InputActionName;\n kind: 'button';\n handedness: 'left' | 'right';\n button: InputComponent;\n};\n\ntype XRGamepadAxesDirectionBinding = {\n source: 'xrGamepadAxesDirection';\n action: InputActionName;\n kind: 'button';\n handedness: 'left' | 'right';\n componentId: InputComponent;\n state: AxesState;\n};\n\nexport type InputActionBinding =\n | AxisKeyBinding\n | KeyboardButtonBinding\n | BrowserGamepadAxis2DBinding\n | BrowserGamepadAxis1DBinding\n | BrowserGamepadButtonBinding\n | XRGamepadAxis2DBinding\n | XRGamepadAxis1DBinding\n | XRGamepadButtonBinding\n | XRGamepadAxesDirectionBinding;\n\nexport type InputActionContext = {\n keyboard: StatefulKeyboard;\n browserGamepads: Array<StatefulBrowserGamepad | undefined>;\n xr: XRInputManager;\n};\n\ntype ButtonState = {\n pressed: boolean;\n down: boolean;\n up: boolean;\n};\n\ntype Axis1DState = {\n previous: number;\n current: number;\n};\n\ntype Axis2DState = {\n previousX: number;\n previousY: number;\n x: number;\n y: number;\n};\n\nconst DEFAULT_THRESHOLD = 0.8;\n\nfunction clamp(value: number, min = -1, max = 1): number {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction anyKeyPressed(keyboard: StatefulKeyboard, codes?: string[]): boolean {\n return !!codes?.some((code) => keyboard.getKeyPressed(code));\n}\n\nexport class InputActionManager {\n private readonly bindings: InputActionBinding[] = [];\n private readonly buttonStates = new Map<InputActionName, ButtonState>();\n private readonly axis1DStates = new Map<InputActionName, Axis1DState>();\n private readonly axis2DStates = new Map<InputActionName, Axis2DState>();\n\n constructor() {\n this.enableDefaultBindings('xr');\n }\n\n enableDefaultBindings(\n profile: InputActionProfile,\n options: InputActionDefaultBindingOptions = {},\n ): void {\n const bindings = this.createDefaultBindings(profile, options);\n for (const binding of bindings) {\n if (!this.bindings.some((existing) => bindingsEqual(existing, binding))) {\n this.bindings.push(binding);\n }\n }\n }\n\n clearBindings(action?: InputActionName): void {\n if (!action) {\n this.bindings.length = 0;\n return;\n }\n\n for (let index = this.bindings.length - 1; index >= 0; index--) {\n if (this.bindings[index].action === action) {\n this.bindings.splice(index, 1);\n }\n }\n }\n\n addBinding(binding: InputActionBinding): void {\n this.bindings.push(binding);\n }\n\n addBindings(bindings: InputActionBinding[]): void {\n this.bindings.push(...bindings);\n }\n\n removeBinding(binding: InputActionBinding): boolean {\n const index = this.bindings.findIndex((existing) =>\n bindingsEqual(existing, binding),\n );\n if (index === -1) {\n return false;\n }\n\n this.bindings.splice(index, 1);\n return true;\n }\n\n getBindings(action?: InputActionName): InputActionBinding[] {\n return this.bindings\n .filter((binding) => !action || binding.action === action)\n .map(cloneBinding);\n }\n\n update(context: InputActionContext): void {\n this.prepareFrame();\n\n for (const binding of this.bindings) {\n if (binding.kind === 'axis2d') {\n this.applyAxis2DBinding(context, binding);\n } else if (binding.kind === 'axis1d') {\n this.applyAxis1DBinding(context, binding);\n } else {\n this.applyButtonBinding(context, binding);\n }\n }\n\n for (const state of this.axis1DStates.values()) {\n state.current = clamp(state.current);\n }\n for (const state of this.axis2DStates.values()) {\n state.x = clamp(state.x);\n state.y = clamp(state.y);\n }\n }\n\n getButtonPressed(action: InputActionName): boolean {\n return this.buttonStates.get(action)?.pressed ?? false;\n }\n\n getButtonDown(action: InputActionName): boolean {\n return this.buttonStates.get(action)?.down ?? false;\n }\n\n getButtonUp(action: InputActionName): boolean {\n return this.buttonStates.get(action)?.up ?? false;\n }\n\n getAxis1D(action: InputActionName): number {\n return this.axis1DStates.get(action)?.current ?? 0;\n }\n\n getAxis1DEnteringPositive(\n action: InputActionName,\n threshold = DEFAULT_THRESHOLD,\n ): boolean {\n const state = this.axis1DStates.get(action);\n return !!state && state.current >= threshold && state.previous < threshold;\n }\n\n getAxis1DEnteringNegative(\n action: InputActionName,\n threshold = DEFAULT_THRESHOLD,\n ): boolean {\n const state = this.axis1DStates.get(action);\n return (\n !!state && state.current <= -threshold && state.previous > -threshold\n );\n }\n\n getAxis2D(\n action: InputActionName,\n out: { x: number; y: number } = { x: 0, y: 0 },\n ): { x: number; y: number } {\n const state = this.axis2DStates.get(action);\n out.x = state?.x ?? 0;\n out.y = state?.y ?? 0;\n return out;\n }\n\n private prepareFrame(): void {\n for (const state of this.buttonStates.values()) {\n state.down = false;\n state.up = false;\n state.pressed = false;\n }\n\n for (const state of this.axis1DStates.values()) {\n state.previous = state.current;\n state.current = 0;\n }\n\n for (const state of this.axis2DStates.values()) {\n state.previousX = state.x;\n state.previousY = state.y;\n state.x = 0;\n state.y = 0;\n }\n }\n\n private applyAxis2DBinding(\n context: InputActionContext,\n binding: InputActionBinding & { kind: 'axis2d' },\n ): void {\n const state = this.getAxis2DState(binding.action);\n\n if (binding.source === 'keyboard') {\n state.x += anyKeyPressed(context.keyboard, binding.positiveX) ? 1 : 0;\n state.x -= anyKeyPressed(context.keyboard, binding.negativeX) ? 1 : 0;\n state.y += anyKeyPressed(context.keyboard, binding.positiveY) ? 1 : 0;\n state.y -= anyKeyPressed(context.keyboard, binding.negativeY) ? 1 : 0;\n return;\n }\n\n const axisValues = this.getAxesValues(context, binding);\n if (axisValues) {\n state.x += axisValues.x;\n state.y += axisValues.y;\n }\n }\n\n private applyAxis1DBinding(\n context: InputActionContext,\n binding: InputActionBinding & { kind: 'axis1d' },\n ): void {\n const state = this.getAxis1DState(binding.action);\n const axisValues = this.getAxesValues(context, binding);\n if (!axisValues) {\n return;\n }\n\n state.current += binding.component === 'y' ? axisValues.y : axisValues.x;\n }\n\n private applyButtonBinding(\n context: InputActionContext,\n binding: InputActionBinding & { kind: 'button' },\n ): void {\n const state = this.getButtonState(binding.action);\n const pressed = this.getBindingButtonPressed(context, binding);\n const down = this.getBindingButtonDown(context, binding);\n const up = this.getBindingButtonUp(context, binding);\n\n state.pressed ||= pressed;\n state.down ||= down;\n state.up ||= up;\n }\n\n private getAxesValues(\n context: InputActionContext,\n binding:\n | (InputActionBinding & { kind: 'axis2d' })\n | (InputActionBinding & { kind: 'axis1d' }),\n ): { x: number; y: number } | undefined {\n if (binding.source === 'browserGamepad') {\n const gamepad = this.getBrowserGamepad(context, binding.gamepadIndex);\n return gamepad?.getAxesValues(binding.axis);\n }\n\n if (binding.source === 'xrGamepad') {\n return context.xr.gamepads[binding.handedness]?.getAxesValues(\n binding.componentId,\n );\n }\n\n return undefined;\n }\n\n private getBindingButtonPressed(\n context: InputActionContext,\n binding: InputActionBinding & { kind: 'button' },\n ): boolean {\n if (binding.source === 'keyboard') {\n return context.keyboard.getKeyPressed(binding.code);\n }\n if (binding.source === 'browserGamepad') {\n return (\n this.getBrowserGamepad(context, binding.gamepadIndex)?.getButtonPressed(\n binding.button,\n ) ?? false\n );\n }\n if (binding.source === 'xrGamepad') {\n return (\n context.xr.gamepads[binding.handedness]?.getButtonPressed(\n binding.button,\n ) ?? false\n );\n }\n return (\n context.xr.gamepads[binding.handedness]?.getAxesState(\n binding.componentId,\n ) === binding.state\n );\n }\n\n private getBindingButtonDown(\n context: InputActionContext,\n binding: InputActionBinding & { kind: 'button' },\n ): boolean {\n if (binding.source === 'keyboard') {\n return context.keyboard.getKeyDown(binding.code);\n }\n if (binding.source === 'browserGamepad') {\n return (\n this.getBrowserGamepad(context, binding.gamepadIndex)?.getButtonDown(\n binding.button,\n ) ?? false\n );\n }\n if (binding.source === 'xrGamepad') {\n return (\n context.xr.gamepads[binding.handedness]?.getButtonDown(\n binding.button,\n ) ?? false\n );\n }\n return (\n context.xr.gamepads[binding.handedness]?.getAxesEnteringState(\n binding.componentId,\n binding.state,\n ) ?? false\n );\n }\n\n private getBindingButtonUp(\n context: InputActionContext,\n binding: InputActionBinding & { kind: 'button' },\n ): boolean {\n if (binding.source === 'keyboard') {\n return context.keyboard.getKeyUp(binding.code);\n }\n if (binding.source === 'browserGamepad') {\n return (\n this.getBrowserGamepad(context, binding.gamepadIndex)?.getButtonUp(\n binding.button,\n ) ?? false\n );\n }\n if (binding.source === 'xrGamepad') {\n return (\n context.xr.gamepads[binding.handedness]?.getButtonUp(binding.button) ??\n false\n );\n }\n return (\n context.xr.gamepads[binding.handedness]?.getAxesLeavingState(\n binding.componentId,\n binding.state,\n ) ?? false\n );\n }\n\n private getBrowserGamepad(\n context: InputActionContext,\n gamepadIndex?: number,\n ): StatefulBrowserGamepad | undefined {\n if (gamepadIndex !== undefined) {\n return context.browserGamepads[gamepadIndex];\n }\n return context.browserGamepads.find((gamepad) => gamepad?.connected);\n }\n\n private getButtonState(action: InputActionName): ButtonState {\n let state = this.buttonStates.get(action);\n if (!state) {\n state = { pressed: false, down: false, up: false };\n this.buttonStates.set(action, state);\n }\n return state;\n }\n\n private getAxis1DState(action: InputActionName): Axis1DState {\n let state = this.axis1DStates.get(action);\n if (!state) {\n state = { previous: 0, current: 0 };\n this.axis1DStates.set(action, state);\n }\n return state;\n }\n\n private getAxis2DState(action: InputActionName): Axis2DState {\n let state = this.axis2DStates.get(action);\n if (!state) {\n state = { previousX: 0, previousY: 0, x: 0, y: 0 };\n this.axis2DStates.set(action, state);\n }\n return state;\n }\n\n private createDefaultBindings(\n profile: InputActionProfile,\n options: InputActionDefaultBindingOptions,\n ): InputActionBinding[] {\n if (profile === 'browser-first-person') {\n return this.createBrowserFirstPersonBindings(options);\n }\n return [\n {\n source: 'xrGamepad',\n kind: 'axis2d',\n action: InputActions.LocomotionMove,\n handedness: 'left',\n componentId: InputComponent.Thumbstick,\n },\n {\n source: 'xrGamepad',\n kind: 'axis1d',\n action: InputActions.LocomotionTurn,\n handedness: 'right',\n componentId: InputComponent.Thumbstick,\n component: 'x',\n },\n {\n source: 'xrGamepad',\n kind: 'button',\n action: InputActions.LocomotionJump,\n handedness: 'right',\n button: InputComponent.A_Button,\n },\n {\n source: 'xrGamepadAxesDirection',\n kind: 'button',\n action: InputActions.LocomotionTeleportAim,\n handedness: 'right',\n componentId: InputComponent.Thumbstick,\n state: AxesState.Down,\n },\n ];\n }\n\n private createBrowserFirstPersonBindings(\n options: InputActionDefaultBindingOptions,\n ): InputActionBinding[] {\n const keyboardEnabled = options.keyboard ?? true;\n const gamepadEnabled = options.gamepad ?? true;\n const bindings: InputActionBinding[] = [];\n\n if (keyboardEnabled) {\n bindings.push(\n {\n source: 'keyboard',\n kind: 'axis2d',\n action: InputActions.LocomotionMove,\n negativeX: ['KeyA', 'ArrowLeft'],\n positiveX: ['KeyD', 'ArrowRight'],\n negativeY: ['KeyW', 'ArrowUp'],\n positiveY: ['KeyS', 'ArrowDown'],\n },\n {\n source: 'keyboard',\n kind: 'button',\n action: InputActions.LocomotionJump,\n code: 'Space',\n },\n );\n }\n\n if (gamepadEnabled) {\n bindings.push(\n {\n source: 'browserGamepad',\n kind: 'axis2d',\n action: InputActions.LocomotionMove,\n axis: BrowserGamepadAxis.LeftStick,\n },\n {\n source: 'browserGamepad',\n kind: 'axis1d',\n action: InputActions.LocomotionTurn,\n axis: BrowserGamepadAxis.RightStick,\n component: 'x',\n },\n {\n source: 'browserGamepad',\n kind: 'button',\n action: InputActions.LocomotionJump,\n button: BrowserGamepadButton.South,\n },\n );\n }\n\n return bindings;\n }\n}\n\nfunction cloneBinding(binding: InputActionBinding): InputActionBinding {\n if (binding.source === 'keyboard' && binding.kind === 'axis2d') {\n return {\n ...binding,\n negativeX: binding.negativeX ? [...binding.negativeX] : undefined,\n positiveX: binding.positiveX ? [...binding.positiveX] : undefined,\n negativeY: binding.negativeY ? [...binding.negativeY] : undefined,\n positiveY: binding.positiveY ? [...binding.positiveY] : undefined,\n };\n }\n\n return { ...binding };\n}\n\nfunction bindingsEqual(\n first: InputActionBinding,\n second: InputActionBinding,\n): boolean {\n return bindingKey(first) === bindingKey(second);\n}\n\nfunction bindingKey(binding: InputActionBinding): string {\n const entries = Object.entries(binding).map(([key, value]) => [\n key,\n Array.isArray(value) ? [...value].sort() : value,\n ]);\n entries.sort(([firstKey], [secondKey]) => firstKey.localeCompare(secondKey));\n return JSON.stringify(entries);\n}\n"],"names":[],"mappings":"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"}
|