@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.
Files changed (132) hide show
  1. package/dist/asset/asset-manager.js.map +1 -1
  2. package/dist/asset/cache-manager.js.map +1 -1
  3. package/dist/asset/loaders/audio-loader.js.map +1 -1
  4. package/dist/asset/loaders/cached-asset-load.js.map +1 -1
  5. package/dist/asset/loaders/gltf-loader.js.map +1 -1
  6. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  7. package/dist/asset/loaders/texture-loader.js.map +1 -1
  8. package/dist/asset/loaders/uikitml-loader.js.map +1 -1
  9. package/dist/audio/audio-pool.js.map +1 -1
  10. package/dist/audio/audio-system.js.map +1 -1
  11. package/dist/audio/audio-utils.js.map +1 -1
  12. package/dist/audio/audio.js.map +1 -1
  13. package/dist/camera/camera-source.js.map +1 -1
  14. package/dist/camera/camera-system.js.map +1 -1
  15. package/dist/camera/camera-utils.js.map +1 -1
  16. package/dist/camera/types.js.map +1 -1
  17. package/dist/depth/depth-occludable.js.map +1 -1
  18. package/dist/depth/depth-sensing-system.js.map +1 -1
  19. package/dist/depth/depth-textures.js.map +1 -1
  20. package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
  21. package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
  22. package/dist/ecs/builtin-components.js.map +1 -1
  23. package/dist/ecs/component-editor-metadata.js.map +1 -1
  24. package/dist/ecs/component-manifest.js.map +1 -1
  25. package/dist/ecs/entity.js.map +1 -1
  26. package/dist/ecs/system.js.map +1 -1
  27. package/dist/ecs/world.js.map +1 -1
  28. package/dist/environment/dome-gradient.js.map +1 -1
  29. package/dist/environment/dome-texture.js.map +1 -1
  30. package/dist/environment/environment-system.js.map +1 -1
  31. package/dist/environment/gradient-environment.js.map +1 -1
  32. package/dist/environment/ibl-gradient.js.map +1 -1
  33. package/dist/environment/ibl-texture.js.map +1 -1
  34. package/dist/environment/scene-ar-environment.js.map +1 -1
  35. package/dist/environment-raycast/environment-raycast.js.map +1 -1
  36. package/dist/environment-raycast/raycast-target.js.map +1 -1
  37. package/dist/grab/distance-grabbable.js.map +1 -1
  38. package/dist/grab/grab-helpers.js.map +1 -1
  39. package/dist/grab/grab-system.js.map +1 -1
  40. package/dist/grab/grab-warnings.js.map +1 -1
  41. package/dist/grab/grabbed.js.map +1 -1
  42. package/dist/grab/handles.js.map +1 -1
  43. package/dist/grab/index.js.map +1 -1
  44. package/dist/grab/one-hand-grabbable.js.map +1 -1
  45. package/dist/grab/pointer-events-patch.js.map +1 -1
  46. package/dist/grab/two-hands-grabbable.js.map +1 -1
  47. package/dist/index.js +3 -3
  48. package/dist/index.js.map +1 -1
  49. package/dist/init/browser-camera.js.map +1 -1
  50. package/dist/init/player-camera.js.map +1 -1
  51. package/dist/init/session-grant.js.map +1 -1
  52. package/dist/init/world-initializer.js +2 -3
  53. package/dist/init/world-initializer.js.map +1 -1
  54. package/dist/init/xr.js.map +1 -1
  55. package/dist/input/canvas-pointer-system.js.map +1 -1
  56. package/dist/input/input-actions.js.map +1 -1
  57. package/dist/input/input-manager.js.map +1 -1
  58. package/dist/input/input-system.js.map +1 -1
  59. package/dist/input/state-tags.js.map +1 -1
  60. package/dist/input/stateful-browser-gamepad.js.map +1 -1
  61. package/dist/input/stateful-keyboard.js.map +1 -1
  62. package/dist/layers/xr-cylinder-layer.js.map +1 -1
  63. package/dist/layers/xr-layer-init.js.map +1 -1
  64. package/dist/layers/xr-layer-state.js.map +1 -1
  65. package/dist/layers/xr-layer-system.js.map +1 -1
  66. package/dist/layers/xr-layer-transform.js.map +1 -1
  67. package/dist/layers/xr-quad-layer.js.map +1 -1
  68. package/dist/level/level-component-applier.js.map +1 -1
  69. package/dist/level/level-player-rig.js.map +1 -1
  70. package/dist/level/level-root.js.map +1 -1
  71. package/dist/level/level-scene-environment.js.map +1 -1
  72. package/dist/level/level-scene-json-importer.js.map +1 -1
  73. package/dist/level/level-scene-material.js.map +1 -1
  74. package/dist/level/level-scene-object.js.map +1 -1
  75. package/dist/level/level-scene-primitive.js.map +1 -1
  76. package/dist/level/level-system.js.map +1 -1
  77. package/dist/level/level-tag.js.map +1 -1
  78. package/dist/lighting/light-binding.js.map +1 -1
  79. package/dist/lighting/light-components.js.map +1 -1
  80. package/dist/lighting/light-system.js.map +1 -1
  81. package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
  82. package/dist/locomotion/locomotion-environment.js.map +1 -1
  83. package/dist/locomotion/locomotion-input-provider.js.map +1 -1
  84. package/dist/locomotion/locomotion.js.map +1 -1
  85. package/dist/locomotion/materials/line.js.map +1 -1
  86. package/dist/locomotion/slide.js.map +1 -1
  87. package/dist/locomotion/teleport.js.map +1 -1
  88. package/dist/locomotion/turn.js.map +1 -1
  89. package/dist/mcp/ecs-debug-tools.js.map +1 -1
  90. package/dist/mcp/mcp-runtime.js.map +1 -1
  91. package/dist/mcp/scene-tools.js.map +1 -1
  92. package/dist/mcp/ui-debug-tools.js.map +1 -1
  93. package/dist/physics/physics-runtime.js.map +1 -1
  94. package/dist/physics/physics-system.js.map +1 -1
  95. package/dist/physics/physics-transport.js.map +1 -1
  96. package/dist/physics/physics-worker-protocol.js.map +1 -1
  97. package/dist/physics/physics-worker-utils.js.map +1 -1
  98. package/dist/physics/physics-worker.js.map +1 -1
  99. package/dist/physics/physicsBody.js.map +1 -1
  100. package/dist/physics/physicsManipulation.js.map +1 -1
  101. package/dist/physics/physicsShape.js.map +1 -1
  102. package/dist/physics/utils.js.map +1 -1
  103. package/dist/project/normalize.js.map +1 -1
  104. package/dist/project/paths.js.map +1 -1
  105. package/dist/project/types.js.map +1 -1
  106. package/dist/project/validation.js.map +1 -1
  107. package/dist/runtime/three.js.map +1 -1
  108. package/dist/scene-understanding/anchor.js.map +1 -1
  109. package/dist/scene-understanding/mesh.js.map +1 -1
  110. package/dist/scene-understanding/plane.js.map +1 -1
  111. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  112. package/dist/transform/synced-euler.js.map +1 -1
  113. package/dist/transform/synced-quaternion.js.map +1 -1
  114. package/dist/transform/synced-vector3.js.map +1 -1
  115. package/dist/transform/transform-component.js.map +1 -1
  116. package/dist/transform/transform-utils.js.map +1 -1
  117. package/dist/transform/transform.js.map +1 -1
  118. package/dist/ui/document.js.map +1 -1
  119. package/dist/ui/follow-component.js.map +1 -1
  120. package/dist/ui/follow.js.map +1 -1
  121. package/dist/ui/panel-components.js.map +1 -1
  122. package/dist/ui/screenspace-component.js.map +1 -1
  123. package/dist/ui/screenspace.js.map +1 -1
  124. package/dist/ui/ui.js.map +1 -1
  125. package/dist/ui/uikitml-asset.js.map +1 -1
  126. package/dist/ui/uikitml.js.map +1 -1
  127. package/dist/version.d.ts +1 -1
  128. package/dist/version.js +1 -1
  129. package/dist/version.js.map +1 -1
  130. package/dist/visibility/visibility-component.js.map +1 -1
  131. package/dist/visibility/visibility.js.map +1 -1
  132. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sources":["../../src/project/validation.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sources":["../../src/project/validation.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { normalizeProjectSourcePath } from './paths.js';\nimport {\n IWSDK_PROJECT_MANIFEST_VERSION,\n type IwsdkProjectManifestV1,\n type ProjectManifestValidationIssue,\n type ProjectManifestValidationIssueCode,\n type ProjectManifestValidationResult,\n} from './types.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst REFERENCE_SPACE_TYPES = [\n 'bounded-floor',\n 'local',\n 'local-floor',\n 'unbounded',\n 'viewer',\n] as const;\nconst OFFER_VALUES = ['none', 'once', 'always'] as const;\nconst DEVICES = [\n 'metaQuest2',\n 'metaQuest3',\n 'metaQuestPro',\n 'oculusQuest1',\n] as const;\nconst ENVIRONMENTS = [\n 'living_room',\n 'meeting_room',\n 'music_room',\n 'office_large',\n 'office_small',\n] as const;\n\n/** Error containing every issue found in a project manifest. */\nexport class ProjectManifestValidationError extends Error {\n constructor(readonly issues: readonly ProjectManifestValidationIssue[]) {\n super(\n `Invalid IWSDK project manifest:\\n${issues\n .map((issue) => `${issue.path}: ${issue.message}`)\n .join('\\n')}`,\n );\n this.name = 'ProjectManifestValidationError';\n }\n}\n\n/** Validate the closed `iwsdk.project.v1` JSON contract. */\nexport function validateIwsdkProjectManifest(\n value: unknown,\n): ProjectManifestValidationResult {\n const issues: ProjectManifestValidationIssue[] = [];\n const root = objectValue(\n value,\n '$',\n ['$schema', 'version', 'scene', 'assets', 'components', 'world', 'dev'],\n ['version', 'scene', 'world'],\n issues,\n );\n if (root == null) {\n return { valid: false, issues };\n }\n\n if ('$schema' in root) {\n stringValue(root.$schema, '$.$schema', issues);\n }\n enumValue(\n root.version,\n '$.version',\n [IWSDK_PROJECT_MANIFEST_VERSION],\n issues,\n `unsupported project manifest version; expected \"${IWSDK_PROJECT_MANIFEST_VERSION}\"`,\n );\n validateSourcePath(root.scene, '$.scene', 'scene', issues);\n if ('assets' in root) {\n validateModuleDeclaration(root.assets, '$.assets', issues);\n }\n if ('components' in root) {\n validateModuleDeclaration(root.components, '$.components', issues);\n }\n validateWorld(root.world, '$.world', issues);\n if ('dev' in root) {\n validateDev(root.dev, '$.dev', issues);\n }\n\n return { valid: issues.length === 0, issues };\n}\n\nexport function isIwsdkProjectManifest(\n value: unknown,\n): value is IwsdkProjectManifestV1 {\n return validateIwsdkProjectManifest(value).valid;\n}\n\nexport function assertValidIwsdkProjectManifest(\n value: unknown,\n): asserts value is IwsdkProjectManifestV1 {\n const result = validateIwsdkProjectManifest(value);\n if (!result.valid) {\n throw new ProjectManifestValidationError(result.issues);\n }\n}\n\nfunction validateModuleDeclaration(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const declaration = objectValue(value, path, ['module'], ['module'], issues);\n if (declaration != null) {\n validateSourcePath(declaration.module, `${path}.module`, 'module', issues);\n }\n}\n\nfunction validateWorld(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const world = objectValue(\n value,\n path,\n ['xr', 'input', 'render', 'features'],\n ['xr'],\n issues,\n );\n if (world == null) {\n return;\n }\n validateXR(world.xr, `${path}.xr`, issues);\n if ('input' in world) {\n validateInput(world.input, `${path}.input`, issues);\n }\n if ('render' in world) {\n validateRender(world.render, `${path}.render`, issues);\n }\n if ('features' in world) {\n validateFeatures(world.features, `${path}.features`, issues);\n }\n}\n\nfunction validateXR(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (value === false) {\n return;\n }\n const xr = objectValue(\n value,\n path,\n [\n 'mode',\n 'offer',\n 'referenceSpace',\n 'restoreCameraOnExit',\n 'launchOnSessionGranted',\n 'features',\n ],\n ['mode'],\n issues,\n );\n if (xr == null) {\n return;\n }\n enumValue(xr.mode, `${path}.mode`, ['vr', 'ar'], issues);\n if ('offer' in xr) {\n enumValue(xr.offer, `${path}.offer`, OFFER_VALUES, issues);\n }\n if ('referenceSpace' in xr) {\n validateReferenceSpace(xr.referenceSpace, `${path}.referenceSpace`, issues);\n }\n if ('restoreCameraOnExit' in xr) {\n booleanValue(xr.restoreCameraOnExit, `${path}.restoreCameraOnExit`, issues);\n }\n if ('launchOnSessionGranted' in xr) {\n booleanValue(\n xr.launchOnSessionGranted,\n `${path}.launchOnSessionGranted`,\n issues,\n );\n }\n if ('features' in xr) {\n validateXRFeatures(xr.features, `${path}.features`, issues);\n }\n}\n\nfunction validateReferenceSpace(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'string') {\n enumValue(value, path, REFERENCE_SPACE_TYPES, issues);\n return;\n }\n const reference = objectValue(\n value,\n path,\n ['type', 'required', 'fallbackOrder'],\n [],\n issues,\n );\n if (reference == null) {\n return;\n }\n if ('type' in reference) {\n enumValue(reference.type, `${path}.type`, REFERENCE_SPACE_TYPES, issues);\n }\n if ('required' in reference) {\n booleanValue(reference.required, `${path}.required`, issues);\n }\n if ('fallbackOrder' in reference) {\n if (!Array.isArray(reference.fallbackOrder)) {\n addIssue(issues, `${path}.fallbackOrder`, 'type', 'expected an array');\n } else {\n reference.fallbackOrder.forEach((entry, index) =>\n enumValue(\n entry,\n `${path}.fallbackOrder[${index}]`,\n REFERENCE_SPACE_TYPES,\n issues,\n ),\n );\n }\n }\n}\n\nfunction validateXRFeatures(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const featureNames = [\n 'handTracking',\n 'anchors',\n 'hitTest',\n 'planeDetection',\n 'meshDetection',\n 'depthSensing',\n 'layers',\n 'unbounded',\n ] as const;\n const features = objectValue(value, path, featureNames, [], issues);\n if (features == null) {\n return;\n }\n for (const name of featureNames) {\n if (!(name in features)) {\n continue;\n }\n if (name === 'depthSensing') {\n validateDepthSensing(features[name], `${path}.${name}`, issues);\n } else {\n validateFeatureFlag(features[name], `${path}.${name}`, issues);\n }\n }\n}\n\nfunction validateFeatureFlag(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const flag = objectValue(value, path, ['required'], [], issues);\n if (flag != null && 'required' in flag) {\n booleanValue(flag.required, `${path}.required`, issues);\n }\n}\n\nfunction validateDepthSensing(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const depth = objectValue(\n value,\n path,\n ['required', 'usage', 'format'],\n [],\n issues,\n );\n if (depth == null) {\n return;\n }\n if ('required' in depth) {\n booleanValue(depth.required, `${path}.required`, issues);\n }\n if ('usage' in depth) {\n enumValue(\n depth.usage,\n `${path}.usage`,\n ['cpu-optimized', 'gpu-optimized'],\n issues,\n );\n }\n if ('format' in depth) {\n enumValue(\n depth.format,\n `${path}.format`,\n ['luminance-alpha', 'float32'],\n issues,\n );\n }\n}\n\nfunction validateInput(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const input = objectValue(value, path, ['canvasPointerEvents'], [], issues);\n if (input == null || !('canvasPointerEvents' in input)) {\n return;\n }\n const pointer = input.canvasPointerEvents;\n if (typeof pointer === 'boolean') {\n return;\n }\n const pointerOptions = objectValue(\n pointer,\n `${path}.canvasPointerEvents`,\n ['enabled', 'activeDuringXR'],\n [],\n issues,\n );\n if (pointerOptions == null) {\n return;\n }\n if ('enabled' in pointerOptions) {\n booleanValue(\n pointerOptions.enabled,\n `${path}.canvasPointerEvents.enabled`,\n issues,\n );\n }\n if ('activeDuringXR' in pointerOptions) {\n booleanValue(\n pointerOptions.activeDuringXR,\n `${path}.canvasPointerEvents.activeDuringXR`,\n issues,\n );\n }\n}\n\nfunction validateRender(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const render = objectValue(\n value,\n path,\n ['fov', 'near', 'far', 'stencil', 'camera'],\n [],\n issues,\n );\n if (render == null) {\n return;\n }\n for (const key of ['fov', 'near', 'far'] as const) {\n if (key in render) {\n numberValue(render[key], `${path}.${key}`, issues);\n }\n }\n if ('stencil' in render) {\n booleanValue(render.stencil, `${path}.stencil`, issues);\n }\n if ('camera' in render) {\n const camera = objectValue(\n render.camera,\n `${path}.camera`,\n ['position', 'rotation', 'quaternion', 'lookAt'],\n [],\n issues,\n );\n if (camera != null) {\n if ('position' in camera) {\n vectorValue(camera.position, `${path}.camera.position`, 3, issues);\n }\n if ('rotation' in camera) {\n vectorValue(camera.rotation, `${path}.camera.rotation`, 3, issues);\n }\n if ('quaternion' in camera) {\n vectorValue(camera.quaternion, `${path}.camera.quaternion`, 4, issues);\n }\n if ('lookAt' in camera) {\n vectorValue(camera.lookAt, `${path}.camera.lookAt`, 3, issues);\n }\n }\n }\n}\n\nfunction validateFeatures(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const features = objectValue(\n value,\n path,\n [\n 'locomotion',\n 'grabbing',\n 'physics',\n 'sceneUnderstanding',\n 'environmentRaycast',\n 'camera',\n 'spatialUI',\n ],\n [],\n issues,\n );\n if (features == null) {\n return;\n }\n if ('locomotion' in features) {\n validateLocomotion(features.locomotion, `${path}.locomotion`, issues);\n }\n if ('grabbing' in features) {\n validateBooleanOrObject(\n features.grabbing,\n `${path}.grabbing`,\n ['useHandPinchForGrab'],\n issues,\n );\n }\n if ('physics' in features) {\n validatePhysics(features.physics, `${path}.physics`, issues);\n }\n for (const key of ['environmentRaycast', 'camera'] as const) {\n if (key in features) {\n booleanValue(features[key], `${path}.${key}`, issues);\n }\n }\n if ('sceneUnderstanding' in features) {\n validateBooleanOrObject(\n features.sceneUnderstanding,\n `${path}.sceneUnderstanding`,\n ['showWireFrame'],\n issues,\n );\n }\n if ('spatialUI' in features) {\n validateSpatialUI(features.spatialUI, `${path}.spatialUI`, issues);\n }\n}\n\nfunction validatePhysics(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const physics = objectValue(\n value,\n path,\n ['useWorker', 'updateFrequency', 'interpolation'],\n [],\n issues,\n );\n if (physics == null) {\n return;\n }\n if ('useWorker' in physics) {\n booleanValue(physics.useWorker, `${path}.useWorker`, issues);\n }\n if (\n 'updateFrequency' in physics &&\n numberValue(physics.updateFrequency, `${path}.updateFrequency`, issues) &&\n ((physics.updateFrequency as number) <= 0 ||\n (physics.updateFrequency as number) > 240)\n ) {\n addIssue(\n issues,\n `${path}.updateFrequency`,\n 'type',\n 'expected a number greater than 0 and at most 240',\n );\n }\n if ('interpolation' in physics) {\n booleanValue(physics.interpolation, `${path}.interpolation`, issues);\n }\n}\n\nfunction validateLocomotion(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const locomotion = objectValue(\n value,\n path,\n [\n 'useWorker',\n 'initialPlayerPosition',\n 'comfortAssistLevel',\n 'turningMethod',\n 'enableJumping',\n 'browserControls',\n ],\n [],\n issues,\n );\n if (locomotion == null) {\n return;\n }\n for (const key of ['useWorker', 'enableJumping'] as const) {\n if (key in locomotion) {\n booleanValue(locomotion[key], `${path}.${key}`, issues);\n }\n }\n if ('initialPlayerPosition' in locomotion) {\n vectorValue(\n locomotion.initialPlayerPosition,\n `${path}.initialPlayerPosition`,\n 3,\n issues,\n );\n }\n if ('comfortAssistLevel' in locomotion) {\n numberValue(\n locomotion.comfortAssistLevel,\n `${path}.comfortAssistLevel`,\n issues,\n );\n }\n if ('turningMethod' in locomotion) {\n enumValue(\n locomotion.turningMethod,\n `${path}.turningMethod`,\n ['snap', 'smooth'],\n issues,\n );\n }\n if ('browserControls' in locomotion) {\n validateBrowserControls(\n locomotion.browserControls,\n `${path}.browserControls`,\n issues,\n );\n }\n}\n\nfunction validateBrowserControls(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const controls = objectValue(\n value,\n path,\n ['keyboard', 'gamepad'],\n [],\n issues,\n );\n if (controls == null) {\n return;\n }\n for (const key of ['keyboard', 'gamepad'] as const) {\n if (key in controls) {\n booleanValue(controls[key], `${path}.${key}`, issues);\n }\n }\n}\n\nfunction validateSpatialUI(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const spatialUI = objectValue(\n value,\n path,\n ['forwardHtmlEvents', 'kit', 'preferredColorScheme'],\n [],\n issues,\n );\n if (spatialUI == null) {\n return;\n }\n if ('forwardHtmlEvents' in spatialUI) {\n booleanValue(\n spatialUI.forwardHtmlEvents,\n `${path}.forwardHtmlEvents`,\n issues,\n );\n }\n if ('kit' in spatialUI) {\n enumValue(spatialUI.kit, `${path}.kit`, ['default', 'horizon'], issues);\n }\n if ('preferredColorScheme' in spatialUI) {\n enumValue(\n spatialUI.preferredColorScheme,\n `${path}.preferredColorScheme`,\n ['system', 'light', 'dark'],\n issues,\n );\n }\n}\n\nfunction validateBooleanOrObject(\n value: unknown,\n path: string,\n booleanKeys: readonly string[],\n issues: ProjectManifestValidationIssue[],\n): void {\n if (typeof value === 'boolean') {\n return;\n }\n const object = objectValue(value, path, booleanKeys, [], issues);\n if (object == null) {\n return;\n }\n for (const key of booleanKeys) {\n if (key in object) {\n booleanValue(object[key], `${path}.${key}`, issues);\n }\n }\n}\n\nfunction validateDev(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const dev = objectValue(value, path, ['emulator'], [], issues);\n if (dev == null) {\n return;\n }\n if ('emulator' in dev) {\n const emulator = objectValue(\n dev.emulator,\n `${path}.emulator`,\n [\n 'device',\n 'iwer',\n 'environment',\n 'activation',\n 'injectOnBuild',\n 'userAgentException',\n ],\n [],\n issues,\n );\n if (emulator != null) {\n if ('device' in emulator) {\n enumValue(emulator.device, `${path}.emulator.device`, DEVICES, issues);\n }\n if ('iwer' in emulator) {\n booleanValue(emulator.iwer, `${path}.emulator.iwer`, issues);\n }\n if ('environment' in emulator) {\n enumValue(\n emulator.environment,\n `${path}.emulator.environment`,\n ENVIRONMENTS,\n issues,\n );\n }\n if ('activation' in emulator) {\n if (typeof emulator.activation === 'string') {\n enumValue(\n emulator.activation,\n `${path}.emulator.activation`,\n ['localhost', 'always'],\n issues,\n );\n } else {\n validateRegexSpec(\n emulator.activation,\n `${path}.emulator.activation`,\n issues,\n );\n }\n }\n if ('injectOnBuild' in emulator) {\n booleanValue(\n emulator.injectOnBuild,\n `${path}.emulator.injectOnBuild`,\n issues,\n );\n }\n if ('userAgentException' in emulator) {\n validateRegexSpec(\n emulator.userAgentException,\n `${path}.emulator.userAgentException`,\n issues,\n );\n }\n }\n }\n}\n\nfunction validateRegexSpec(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): void {\n const regex = objectValue(\n value,\n path,\n ['source', 'flags'],\n ['source'],\n issues,\n );\n if (regex == null) {\n return;\n }\n const sourceValid = stringValue(regex.source, `${path}.source`, issues);\n if (sourceValid && (regex.source as string).length === 0) {\n addIssue(\n issues,\n `${path}.source`,\n 'invalid-regex',\n 'regular expression source must not be blank',\n );\n return;\n }\n const flagsValid =\n !('flags' in regex) || stringValue(regex.flags, `${path}.flags`, issues);\n if (!sourceValid || !flagsValid) {\n return;\n }\n try {\n new RegExp(\n regex.source as string,\n (regex.flags as string | undefined) ?? '',\n );\n } catch (error) {\n addIssue(\n issues,\n path,\n 'invalid-regex',\n error instanceof Error ? error.message : String(error),\n );\n }\n}\n\nfunction validateSourcePath(\n value: unknown,\n path: string,\n kind: 'module' | 'scene',\n issues: ProjectManifestValidationIssue[],\n): void {\n if (!stringValue(value, path, issues)) {\n return;\n }\n try {\n normalizeProjectSourcePath(value as string, kind);\n } catch (error) {\n addIssue(\n issues,\n path,\n 'invalid-path',\n error instanceof Error ? error.message : String(error),\n );\n }\n}\n\nfunction objectValue(\n value: unknown,\n path: string,\n allowedKeys: readonly string[],\n requiredKeys: readonly string[],\n issues: ProjectManifestValidationIssue[],\n): JsonObject | undefined {\n if (!isPlainObject(value)) {\n addIssue(issues, path, 'type', 'expected an object');\n return undefined;\n }\n const allowed = new Set(allowedKeys);\n for (const key of Object.keys(value)) {\n if (!allowed.has(key)) {\n addIssue(\n issues,\n propertyPath(path, key),\n 'unknown-key',\n `unknown property \"${key}\"`,\n );\n }\n }\n for (const key of requiredKeys) {\n if (!(key in value)) {\n addIssue(\n issues,\n propertyPath(path, key),\n 'required',\n 'required property is missing',\n );\n }\n }\n return value;\n}\n\nfunction isPlainObject(value: unknown): value is JsonObject {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction stringValue(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): boolean {\n if (typeof value !== 'string') {\n addIssue(issues, path, 'type', 'expected a string');\n return false;\n }\n return true;\n}\n\nfunction booleanValue(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): boolean {\n if (typeof value !== 'boolean') {\n addIssue(issues, path, 'type', 'expected a boolean');\n return false;\n }\n return true;\n}\n\nfunction numberValue(\n value: unknown,\n path: string,\n issues: ProjectManifestValidationIssue[],\n): boolean {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n addIssue(issues, path, 'type', 'expected a finite number');\n return false;\n }\n return true;\n}\n\nfunction vectorValue(\n value: unknown,\n path: string,\n length: number,\n issues: ProjectManifestValidationIssue[],\n): void {\n if (\n !Array.isArray(value) ||\n value.length !== length ||\n value.some((entry) => typeof entry !== 'number' || !Number.isFinite(entry))\n ) {\n addIssue(issues, path, 'type', `expected a finite ${length}-number tuple`);\n }\n}\n\nfunction enumValue<T extends string>(\n value: unknown,\n path: string,\n allowedValues: readonly T[],\n issues: ProjectManifestValidationIssue[],\n message?: string,\n): value is T {\n if (typeof value !== 'string' || !allowedValues.includes(value as T)) {\n addIssue(\n issues,\n path,\n 'enum',\n message ??\n `expected one of ${allowedValues.map((entry) => `\"${entry}\"`).join(', ')}`,\n );\n return false;\n }\n return true;\n}\n\nfunction propertyPath(path: string, key: string): string {\n return /^[A-Za-z_$][A-Za-z\\d_$]*$/u.test(key)\n ? `${path}.${key}`\n : `${path}[${JSON.stringify(key)}]`;\n}\n\nfunction addIssue(\n issues: ProjectManifestValidationIssue[],\n path: string,\n code: ProjectManifestValidationIssueCode,\n message: string,\n): void {\n issues.push({ path, code, message });\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"three.js","sources":["../../src/runtime/three.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AAWH,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB;AACpE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB;AACpE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB;AAEjD,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,wBAAwB;AACxE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,wBAAwB;AACxE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB;AAIxD"}
1
+ {"version":3,"file":"three.js","sources":["../../src/runtime/three.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport * as THREE from 'three';\nimport {\n acceleratedRaycast,\n computeBatchedBoundsTree,\n computeBoundsTree,\n disposeBatchedBoundsTree,\n disposeBoundsTree,\n} from 'three-mesh-bvh';\n\nTHREE.BufferGeometry.prototype.computeBoundsTree = computeBoundsTree;\nTHREE.BufferGeometry.prototype.disposeBoundsTree = disposeBoundsTree;\nTHREE.Mesh.prototype.raycast = acceleratedRaycast;\n\nTHREE.BatchedMesh.prototype.computeBoundsTree = computeBatchedBoundsTree;\nTHREE.BatchedMesh.prototype.disposeBoundsTree = disposeBatchedBoundsTree;\nTHREE.BatchedMesh.prototype.raycast = acceleratedRaycast;\n\nexport * from 'three';\n\n// export * as Addons from 'three/examples/jsm/Addons.js';\n"],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AAWH,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB;AACpE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB;AACpE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB;AAEjD,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,wBAAwB;AACxE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,GAAG,wBAAwB;AACxE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB;AAIxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.js","sources":["../../src/scene-understanding/anchor.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AAEI,MAAM,QAAQ,GAAG,eAAe,CACrC,UAAU,EACV;IACE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CAClD,EACD,8CAA8C;;;;"}
1
+ {"version":3,"file":"anchor.js","sources":["../../src/scene-understanding/anchor.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Types, createComponent } from '../ecs/component.js';\n/**\n * Component for anchoring entities to stable real‑world positions in AR/VR.\n *\n * @remarks\n * - Anchors provide persistent, stable positioning relative to the real world.\n * - Entities with this component are automatically managed by {@link SceneUnderstandingSystem}.\n * - The entity's `object3D` will be attached to a world‑anchored group for stable tracking.\n * - Requires WebXR session with 'anchor' feature enabled.\n * - Anchors persist across tracking loss and help maintain consistent positioning.\n * - Once attached, the entity's transform is managed relative to the anchor's reference frame.\n * - Internal `attached` property tracks whether the entity has been processed by the system.\n *\n * @example Create an anchored object\n * ```ts\n * const marker = world.createEntity()\n * marker.addComponent(XRAnchor) // Will be anchored to current world position\n * ```\n *\n * @example Place content at a specific anchor point\n * ```ts\n * const hologram = world.createTransformEntity(hologramMesh)\n * hologram.addComponent(XRAnchor)\n * // The SceneUnderstandingSystem will anchor this at the current reference position\n * ```\n *\n * @category Scene Understanding\n * @see {@link SceneUnderstandingSystem}\n */\n\nexport const XRAnchor = createComponent(\n 'XRAnchor',\n {\n attached: { type: Types.Boolean, default: false },\n },\n 'Component for anchoring objects in the scene',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AAEI,MAAM,QAAQ,GAAG,eAAe,CACrC,UAAU,EACV;IACE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CAClD,EACD,8CAA8C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"mesh.js","sources":["../../src/scene-understanding/mesh.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AAEI,MAAM,MAAM,GAAG,eAAe,CACnC,QAAQ,EACR;IACE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;IACjD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;AAClD,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;CACrD,EACD,+CAA+C;;;;"}
1
+ {"version":3,"file":"mesh.js","sources":["../../src/scene-understanding/mesh.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Types, createComponent } from '../ecs/component.js';\n/**\n * Component representing detected real‑world 3D mesh geometry in AR/VR environments. This component\n * should be attached to entities by the SceneUnderstandingSystem and be queried by custom systems.\n *\n * @remarks\n * - Automatically created by {@link SceneUnderstandingSystem} when meshes are detected.\n * - Represents complex 3D geometry like furniture, objects, and room structure.\n * - Supports both bounded 3D objects (furniture, objects) and global mesh (room structure).\n * - Bounded meshes include semantic labels, bounding boxes, and calculated dimensions.\n * - Global meshes represent overall room structure without semantic classification.\n * - Entities are destroyed when the corresponding real‑world mesh is no longer detected.\n * - Requires WebXR session with 'mesh‑detection' feature enabled.\n * - Users should not manually create entities with this component and let the scene understanding\n * system manage them.\n *\n * @example React to detected meshes\n * ```ts\n * your-system.query({ required: [XRMesh] }).subscribe('qualify', (entity) => {\n * const isBounded = entity.getValue(XRMesh, 'isBounded3D')\n * const semanticLabel = entity.getValue(XRMesh, 'semanticLabel')\n *\n * if (isBounded && semanticLabel === 'table') {\n * console.log('Table detected!')\n * const dimensions = entity.getValue(XRMesh, 'dimensions')\n * console.log('Table size:', dimensions)\n * }\n * })\n * ```\n *\n * @category Scene Understanding\n * @see {@link SceneUnderstandingSystem}\n * @see {@link XRPlane}\n */\n\nexport const XRMesh = createComponent(\n 'XRMesh',\n {\n _mesh: { type: Types.Object, default: undefined },\n isBounded3D: { type: Types.Boolean, default: false },\n semanticLabel: { type: Types.String, default: '' },\n min: { type: Types.Vec3, default: [0, 0, 0] },\n max: { type: Types.Vec3, default: [0, 0, 0] },\n dimensions: { type: Types.Vec3, default: [0, 0, 0] },\n },\n 'Component for managing 3D meshes in the scene',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AAEI,MAAM,MAAM,GAAG,eAAe,CACnC,QAAQ,EACR;IACE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;IACjD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;AAClD,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;CACrD,EACD,+CAA+C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"plane.js","sources":["../../src/scene-understanding/plane.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AAEI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT;IACE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;CACnD,EACD,+CAA+C;;;;"}
1
+ {"version":3,"file":"plane.js","sources":["../../src/scene-understanding/plane.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Types, createComponent } from '../ecs/component.js';\n/**\n * Component representing a detected real‑world plane surface in AR/VR environments. This component\n * should be attached to entities by the SceneUnderstandingSystem and be queried by custom systems.\n *\n * @remarks\n * - Automatically created by {@link SceneUnderstandingSystem} when planes are detected.\n * - Represents flat surfaces like floors, walls, and ceilings in the real world.\n * - Entities are destroyed when the corresponding real‑world plane is no longer detected.\n * - Requires WebXR session with 'plane‑detection' feature enabled.\n * - Users should not manually create entities with this component and let the scene understanding\n * system manage them.\n *\n * @example React to detected planes\n * ```ts\n * your-system.query({ required: [XRPlane] }).subscribe('qualify', (entity) => {\n * const plane = entity.getValue(XRPlane, 'plane')\n * console.log('Detected plane orientation:', plane.orientation)\n * console.log('Plane position:', entity.object3D?.position)\n * })\n * ```\n *\n * @category Scene Understanding\n * @see {@link SceneUnderstandingSystem}\n * @see {@link XRMesh}\n */\n\nexport const XRPlane = createComponent(\n 'XRPlane',\n {\n _plane: { type: Types.Object, default: undefined },\n },\n 'Component for managing 3D planes in the scene',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAGH;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AAEI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT;IACE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;CACnD,EACD,+CAA+C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"scene-understanding-system.js","sources":["../../src/scene-understanding/scene-understanding-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene-understanding-system.js","sources":["../../src/scene-understanding/scene-understanding-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 { Types } from '../ecs/component.js';\nimport { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport {\n BoxGeometry,\n BufferAttribute,\n BufferGeometry,\n Group,\n Matrix4,\n Mesh,\n MeshBasicMaterial,\n} from '../runtime/index.js';\nimport { XRAnchor } from './anchor.js';\nimport { XRMesh } from './mesh.js';\nimport { XRPlane } from './plane.js';\n\ntype PlaneGeometryState = {\n lastChangedTime: DOMHighResTimeStamp;\n polygon: XRPlane['polygon'];\n};\n\ntype MeshGeometryState = {\n indices: XRMesh['indices'];\n lastChangedTime: DOMHighResTimeStamp;\n semanticLabel: XRMesh['semanticLabel'];\n vertices: XRMesh['vertices'];\n};\n\ntype MeshMetadata = {\n dimensions: [number, number, number];\n isBounded3D: boolean;\n max: [number, number, number];\n min: [number, number, number];\n semanticLabel: string;\n};\n\n/**\n * Manages WebXR scene understanding features including plane detection, mesh detection, and anchoring.\n *\n * @remarks\n * - Automatically detects and visualizes real‑world planes and meshes in AR/VR environments.\n * - Creates entities with {@link XRPlane} components for detected planes (floors, walls, ceilings).\n * - Creates entities with {@link XRMesh} components for detected 3D geometry.\n * - Supports anchoring objects to real‑world positions using {@link XRAnchor} components.\n * - Requires WebXR session features: 'plane‑detection', 'mesh‑detection', 'anchor' when using the related features.\n * - Automatically manages entity lifecycle as real‑world geometry changes.\n * - Provides optional visual feedback with wireframe meshes for detected geometry.\n * - Objects with {@link XRAnchor} are automatically attached to a stable world‑anchored group.\n *\n * @example Basic scene understanding setup\n * ```ts\n * // WebXR session must request required features\n * World.create(document.getElementById('scene-container'), {\n * assets,\n * xr: {\n * sessionMode: SessionMode.ImmersiveAR,\n * features: { planeDetection: true, meshDetection: true, anchors: true },\n * }\n * })\n * \n * // Add to your world to enable scene understanding\n * world.addSystem(SceneUnderstandingSystem)\n *\n\n * ```\n *\n * @example Create an anchored object\n * ```ts\n * const cube = world.createTransformEntity(cubeObject)\n * cube.addComponent(XRAnchor) // Will be anchored to real-world position\n * ```\n *\n * @example React to detected planes\n * ```ts\n * // Planes are automatically created as entities with XRPlane component\n * system.query({ required: [XRPlane] }).subscribe('qualify', (entity) => {\n * const plane = entity.getValue(XRPlane, '_plane')\n * console.log('New plane detected:', plane.orientation)\n * })\n * ```\n *\n * @category Scene Understanding\n * @see {@link XRPlane}\n * @see {@link XRMesh}\n * @see {@link XRAnchor}\n */\nexport class SceneUnderstandingSystem extends createSystem(\n {\n planeEntities: { required: [XRPlane] },\n meshEntities: { required: [XRMesh] },\n anchoredEntities: { required: [XRAnchor] },\n },\n {\n showWireFrame: { type: Types.Boolean, default: false },\n },\n) {\n private planeFeatureEnabled: boolean | undefined;\n private meshFeatureEnabled: boolean | undefined;\n private anchorFeatureEnabled: boolean | undefined;\n\n /** Tracks whether an anchor creation request is in progress to prevent duplicate requests */\n private anchorRequested: boolean = false;\n\n /** Delays between failed native anchor requests. */\n private static readonly ANCHOR_RETRY_DELAYS_SECONDS = [\n 0.25, 0.5, 1, 2, 5,\n ] as const;\n\n /** Render-clock deadline before another native anchor request may start. */\n private nextAnchorRequestTime: number = 0;\n\n /** Index of the delay assigned to the next failed native anchor request. */\n private anchorRetryDelayIndex: number = 0;\n\n /** Latest elapsed render-clock time, in seconds. */\n private anchorRetryClockTime: number = 0;\n\n /** Invalidates asynchronous anchor work when the active XR session changes. */\n private anchorRequestGeneration: number = 0;\n\n /** Prevents duplicate native-anchor disposal across async teardown paths. */\n private deletedAnchors = new WeakSet<XRAnchor>();\n\n /** The current XRAnchor instance for this session. Reset on session end to prevent stale XRSpace references. */\n private xrAnchor: XRAnchor | undefined;\n\n private currentPlanes = new Map<XRPlane, Entity>();\n private currentMeshes = new Map<XRMesh, Entity>();\n private planeGeometryStates = new Map<XRPlane, PlaneGeometryState>();\n private meshGeometryStates = new Map<XRMesh, MeshGeometryState>();\n\n /** Group that holds all anchored objects, positioned to match the XRAnchor's world pose */\n private anchoredGroup: Group = new Group();\n private anchoredGroupEntity: Entity | undefined;\n\n private matrixBuffer = new Matrix4();\n\n /** Shared material for all plane visualization meshes */\n private planeMaterial!: MeshBasicMaterial;\n\n /** Shared material for all mesh visualization meshes */\n private meshMaterial!: MeshBasicMaterial;\n\n /** localStorage key for storing the persistent anchor UUID */\n private static readonly ANCHOR_UUID_STORAGE_KEY = 'iwsdk_scene_anchor_uuid';\n\n init(): void {\n // Create shared materials for performance\n this.planeMaterial = new MeshBasicMaterial({\n color: 0xffffff,\n transparent: true,\n wireframe: true,\n opacity: 0.3,\n });\n\n this.meshMaterial = new MeshBasicMaterial({\n color: 0x3383e6,\n transparent: true,\n wireframe: true,\n opacity: 0.3,\n });\n\n const onSessionStart = async () => {\n this.updateEnabledFeatures(this.xrManager.getSession());\n\n // Attempt to restore a persistent anchor from previous sessions\n // This allows anchored objects to maintain their world position across sessions\n if (this.anchorFeatureEnabled) {\n await this.tryRestorePersistentAnchor();\n }\n\n // Temporarily disabling initiateRoomCapture API call due to the anhor wiping issue.\n // const planes = this.xrManager.getFrame()?.detectedPlanes;\n // const meshes = this.xrManager.getFrame()?.detectedMeshes;\n // if (\n // \t(!planes || planes.size === 0) &&\n // \t(!meshes || meshes.size === 0) &&\n // \t(this.planeFeatureEnabled || this.meshFeatureEnabled)\n // ) {\n // \tawait this.xrManager.getSession()?.initiateRoomCapture();\n // }\n };\n\n const onSessionEnd = () => {\n // Clean up all plane and mesh entities to prevent stale XRSpace references\n // XRSpace objects (like planeSpace, meshSpace, anchorSpace) are tied to a specific\n // XRSession and become invalid when the session ends. Using them with a new session's\n // XRFrame will cause \"XRSpace and XRFrame sessions do not match\" errors.\n this.disposeDetectedEntities();\n\n // Clear session-specific state to prevent stale references\n // Note: The persistent anchor UUID in localStorage is preserved for the next session\n this.resetSessionState();\n };\n\n this.xrManager.addEventListener('sessionstart', onSessionStart);\n this.xrManager.addEventListener('sessionend', onSessionEnd);\n\n this.anchoredGroupEntity = this.world.createTransformEntity(\n this.anchoredGroup,\n {\n parent: this.world.sceneEntity,\n persistent: true,\n },\n );\n\n this.cleanupFuncs.push(\n () => this.xrManager.removeEventListener('sessionstart', onSessionStart),\n () => this.xrManager.removeEventListener('sessionend', onSessionEnd),\n this.config.showWireFrame.subscribe((value) => {\n this.queries.planeEntities.entities.forEach((planeEntity) => {\n const planeObject = planeEntity.object3D;\n if (planeObject instanceof Mesh) {\n planeObject.visible = value;\n }\n });\n\n this.queries.meshEntities.entities.forEach((meshEntity) => {\n const meshObject = meshEntity.object3D;\n if (meshObject instanceof Mesh) {\n meshObject.visible = value;\n }\n });\n }),\n () => {\n this.disposeDetectedEntities();\n this.resetSessionState();\n\n for (const entity of [...this.queries.anchoredEntities.entities]) {\n const object = entity.object3D;\n if (object?.parent === this.anchoredGroup) {\n this.scene.attach(object);\n }\n if (entity.active) {\n entity.setValue(XRAnchor, 'attached', false);\n }\n }\n this.anchoredGroup.removeFromParent();\n if (this.anchoredGroupEntity?.active) {\n this.anchoredGroupEntity.destroy();\n }\n this.anchoredGroupEntity = undefined;\n this.planeMaterial.dispose();\n this.meshMaterial.dispose();\n },\n );\n }\n\n update(_delta: number, time: number): void {\n this.anchorRetryClockTime = time;\n const frame = this.xrFrame;\n const planes = frame?.detectedPlanes;\n const meshes = frame?.detectedMeshes;\n const referenceSpace = this.xrManager.getReferenceSpace();\n\n if (this.planeFeatureEnabled) {\n this.updatePlanes(planes, referenceSpace);\n }\n\n if (this.meshFeatureEnabled) {\n this.updateMeshes(meshes, referenceSpace);\n }\n\n if (\n this.anchorFeatureEnabled &&\n this.xrAnchor === undefined &&\n !this.anchorRequested &&\n time >= this.nextAnchorRequestTime\n ) {\n this.createAnchor(referenceSpace);\n }\n\n if (this.xrAnchor && referenceSpace) {\n this.updateAnchoredObject();\n const pose = this.xrManager\n .getFrame()\n ?.getPose(this.xrAnchor.anchorSpace, referenceSpace);\n if (pose) {\n this.matrixBuffer.fromArray(pose.transform.matrix);\n this.matrixBuffer.decompose(\n this.anchoredGroup.position,\n this.anchoredGroup.quaternion,\n this.anchoredGroup.scale,\n );\n }\n }\n }\n\n /**\n * Dispose only the per-object geometry for a plane/mesh entity being removed.\n * The plane/mesh materials are shared singletons (`planeMaterial` /\n * `meshMaterial`), so they must NOT be disposed here.\n */\n private disposeEntityGeometry(entity: Entity): void {\n const object3D = entity.object3D;\n if (object3D instanceof Mesh) {\n object3D.geometry.dispose();\n }\n }\n\n private disposeDetectedEntities(): void {\n const entities = new Set([\n ...this.queries.planeEntities.entities,\n ...this.queries.meshEntities.entities,\n ]);\n for (const entity of entities) {\n this.disposeEntityGeometry(entity);\n if (entity.active) {\n entity.destroy();\n }\n }\n this.currentPlanes.clear();\n this.currentMeshes.clear();\n this.planeGeometryStates.clear();\n this.meshGeometryStates.clear();\n }\n\n private resetSessionState(): void {\n this.anchorRequestGeneration++;\n this.anchorRequested = false;\n this.resetAnchorRetryState();\n this.clearActiveAnchor();\n this.planeFeatureEnabled = undefined;\n this.meshFeatureEnabled = undefined;\n this.anchorFeatureEnabled = undefined;\n }\n\n private isAnchorRequestCurrent(\n session: XRSession,\n requestGeneration: number,\n ): boolean {\n return (\n requestGeneration === this.anchorRequestGeneration &&\n session === this.xrManager.getSession()\n );\n }\n\n private deleteAnchor(anchor: XRAnchor | null | undefined): void {\n if (!anchor || this.deletedAnchors.has(anchor)) {\n return;\n }\n this.deletedAnchors.add(anchor);\n try {\n anchor.delete();\n } catch (_error) {\n // The session may already have ended, but the anchor must still be\n // forgotten locally and must never be installed into a later session.\n }\n }\n\n private clearActiveAnchor(): void {\n const anchor = this.xrAnchor;\n this.xrAnchor = undefined;\n this.deleteAnchor(anchor);\n }\n\n private resetAnchorRetryState(): void {\n this.nextAnchorRequestTime = 0;\n this.anchorRetryDelayIndex = 0;\n }\n\n private increaseAnchorRetryDelay(\n session: XRSession,\n requestGeneration: number,\n requestDelayIndex: number,\n ): void {\n if (!this.isAnchorRequestCurrent(session, requestGeneration)) {\n return;\n }\n this.nextAnchorRequestTime =\n this.anchorRetryClockTime +\n SceneUnderstandingSystem.ANCHOR_RETRY_DELAYS_SECONDS[requestDelayIndex];\n this.anchorRetryDelayIndex = Math.min(\n requestDelayIndex + 1,\n SceneUnderstandingSystem.ANCHOR_RETRY_DELAYS_SECONDS.length - 1,\n );\n }\n\n private updatePlanes(\n planes: XRPlaneSet | undefined,\n referenceSpace: XRReferenceSpace | null,\n ) {\n this.currentPlanes.clear();\n this.queries.planeEntities.entities.forEach((planeEntity) => {\n if (planes?.has(planeEntity.getValue(XRPlane, '_plane') as XRPlane)) {\n this.currentPlanes.set(\n planeEntity.getValue(XRPlane, '_plane') as XRPlane,\n planeEntity,\n );\n } else {\n this.planeGeometryStates.delete(\n planeEntity.getValue(XRPlane, '_plane') as XRPlane,\n );\n this.disposeEntityGeometry(planeEntity);\n planeEntity.destroy();\n }\n });\n\n if (planes) {\n planes.forEach((plane) => {\n if (referenceSpace != null) {\n const pose = this.xrManager\n .getFrame()\n .getPose(plane.planeSpace, referenceSpace);\n if (!pose) {\n return;\n }\n this.matrixBuffer.fromArray(pose.transform.matrix);\n\n if (this.currentPlanes.has(plane) === false) {\n const polygon = plane.polygon;\n const geometry = this.createPlaneGeometry(polygon);\n const mesh = new Mesh(geometry, this.planeMaterial);\n mesh.visible = this.config.showWireFrame.value;\n mesh.position.setFromMatrixPosition(this.matrixBuffer);\n mesh.quaternion.setFromRotationMatrix(this.matrixBuffer);\n this.scene.add(mesh);\n const planeEntity = this.world.createTransformEntity(mesh);\n planeEntity.addComponent(XRPlane, {\n _plane: plane,\n });\n this.planeGeometryStates.set(plane, {\n lastChangedTime: plane.lastChangedTime,\n polygon,\n });\n } else {\n const planeObject = this.currentPlanes.get(plane)?.object3D;\n const previousState = this.planeGeometryStates.get(plane);\n if (\n planeObject instanceof Mesh &&\n (previousState === undefined ||\n previousState.lastChangedTime !== plane.lastChangedTime)\n ) {\n const polygon = plane.polygon;\n // Conforming runtimes replace changed topology arrays. Keep the\n // identity guard because some emulators advance the timestamp on\n // every frame even when their topology is unchanged.\n if (previousState?.polygon !== polygon) {\n const previousGeometry = planeObject.geometry;\n planeObject.geometry = this.createPlaneGeometry(polygon);\n previousGeometry.dispose();\n }\n this.planeGeometryStates.set(plane, {\n lastChangedTime: plane.lastChangedTime,\n polygon,\n });\n }\n planeObject?.position.setFromMatrixPosition(this.matrixBuffer);\n planeObject?.quaternion.setFromRotationMatrix(this.matrixBuffer);\n }\n }\n });\n }\n }\n\n private updateMeshes(\n meshes: XRMeshSet | undefined,\n referenceSpace: XRReferenceSpace | null,\n ) {\n this.currentMeshes.clear();\n this.queries.meshEntities.entities.forEach((meshEntity) => {\n if (meshes?.has(meshEntity.getValue(XRMesh, '_mesh') as XRMesh)) {\n this.currentMeshes.set(\n meshEntity.getValue(XRMesh, '_mesh') as XRMesh,\n meshEntity,\n );\n } else {\n this.meshGeometryStates.delete(\n meshEntity.getValue(XRMesh, '_mesh') as XRMesh,\n );\n this.disposeEntityGeometry(meshEntity);\n meshEntity.destroy();\n }\n });\n\n if (meshes) {\n meshes.forEach((mesh) => {\n if (referenceSpace != null) {\n const pose = this.xrManager\n .getFrame()\n .getPose(mesh.meshSpace, referenceSpace);\n if (!pose) {\n return;\n }\n this.matrixBuffer.fromArray(pose.transform.matrix);\n\n if (this.currentMeshes.has(mesh) === false) {\n const vertices = mesh.vertices;\n const indices = mesh.indices;\n const metadata = this.tryGetMeshMetadata(\n vertices,\n mesh.semanticLabel,\n );\n if (metadata === undefined) {\n return;\n }\n const geometry = this.createMeshGeometry(vertices, indices);\n const threeMesh = new Mesh(geometry, this.meshMaterial);\n threeMesh.visible = this.config.showWireFrame.value;\n this.scene.add(threeMesh);\n const meshEntity = this.world.createTransformEntity(threeMesh);\n threeMesh.position.setFromMatrixPosition(this.matrixBuffer);\n threeMesh.quaternion.setFromRotationMatrix(this.matrixBuffer);\n\n meshEntity.addComponent(XRMesh, {\n _mesh: mesh,\n ...metadata,\n });\n this.meshGeometryStates.set(mesh, {\n indices,\n lastChangedTime: mesh.lastChangedTime,\n semanticLabel: mesh.semanticLabel,\n vertices,\n });\n } else {\n const meshEntity = this.currentMeshes.get(mesh);\n const meshObject = meshEntity?.object3D;\n const previousState = this.meshGeometryStates.get(mesh);\n if (\n meshEntity !== undefined &&\n meshObject instanceof Mesh &&\n (previousState === undefined ||\n previousState.lastChangedTime !== mesh.lastChangedTime)\n ) {\n const vertices = mesh.vertices;\n const indices = mesh.indices;\n const semanticLabel = mesh.semanticLabel;\n // See the plane path above: timestamp changes alone are noisy in\n // some emulators, while conforming topology updates replace the\n // vertex or index array.\n const topologyChanged =\n previousState?.vertices !== vertices ||\n previousState?.indices !== indices;\n const metadataChanged =\n topologyChanged ||\n previousState?.semanticLabel !== semanticLabel;\n const metadata = metadataChanged\n ? this.tryGetMeshMetadata(vertices, semanticLabel)\n : undefined;\n if (metadataChanged && metadata === undefined) {\n // Keep the last known-good geometry and component metadata.\n // A later valid topology update can still replace them.\n meshObject.position.setFromMatrixPosition(this.matrixBuffer);\n meshObject.quaternion.setFromRotationMatrix(this.matrixBuffer);\n return;\n }\n if (topologyChanged) {\n const previousGeometry = meshObject.geometry;\n meshObject.geometry = this.createMeshGeometry(\n vertices,\n indices,\n );\n previousGeometry.dispose();\n }\n if (metadata !== undefined) {\n this.updateMeshMetadata(meshEntity, metadata);\n }\n this.meshGeometryStates.set(mesh, {\n indices,\n lastChangedTime: mesh.lastChangedTime,\n semanticLabel,\n vertices,\n });\n }\n meshObject?.position.setFromMatrixPosition(this.matrixBuffer);\n meshObject?.quaternion.setFromRotationMatrix(this.matrixBuffer);\n }\n }\n });\n }\n }\n\n private createPlaneGeometry(polygon: XRPlane['polygon']): BoxGeometry {\n let minX = Number.MAX_SAFE_INTEGER;\n let maxX = Number.MIN_SAFE_INTEGER;\n let minZ = Number.MAX_SAFE_INTEGER;\n let maxZ = Number.MIN_SAFE_INTEGER;\n\n for (const point of polygon) {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minZ = Math.min(minZ, point.z);\n maxZ = Math.max(maxZ, point.z);\n }\n\n return new BoxGeometry(maxX - minX, 0.001, maxZ - minZ);\n }\n\n private createMeshGeometry(\n vertices: XRMesh['vertices'],\n indices: XRMesh['indices'],\n ): BufferGeometry {\n const geometry = new BufferGeometry();\n geometry.setAttribute('position', new BufferAttribute(vertices, 3));\n geometry.setIndex(new BufferAttribute(indices, 1));\n return geometry;\n }\n\n private getMeshMetadata(\n vertices: XRMesh['vertices'],\n semanticLabel: XRMesh['semanticLabel'],\n ): MeshMetadata {\n if (semanticLabel === 'global mesh') {\n return {\n dimensions: [0, 0, 0],\n isBounded3D: false,\n max: [0, 0, 0],\n min: [0, 0, 0],\n semanticLabel: '',\n };\n }\n\n const { minEntry, maxEntry } = findAxisAlignedBounds(vertices);\n return {\n dimensions: [\n maxEntry.x - minEntry.x,\n maxEntry.y - minEntry.y,\n maxEntry.z - minEntry.z,\n ],\n isBounded3D: true,\n max: [maxEntry.x, maxEntry.y, maxEntry.z],\n min: [minEntry.x, minEntry.y, minEntry.z],\n semanticLabel: semanticLabel ?? '',\n };\n }\n\n private tryGetMeshMetadata(\n vertices: XRMesh['vertices'],\n semanticLabel: XRMesh['semanticLabel'],\n ): MeshMetadata | undefined {\n try {\n return this.getMeshMetadata(vertices, semanticLabel);\n } catch (error) {\n console.warn(\n '[SceneUnderstandingSystem] Skipping mesh with invalid vertex data.',\n error,\n );\n return undefined;\n }\n }\n\n private updateMeshMetadata(entity: Entity, metadata: MeshMetadata): void {\n entity.getVectorView(XRMesh, 'min').set(metadata.min);\n entity.getVectorView(XRMesh, 'max').set(metadata.max);\n entity.getVectorView(XRMesh, 'dimensions').set(metadata.dimensions);\n if (entity.getValue(XRMesh, 'semanticLabel') !== metadata.semanticLabel) {\n entity.setValue(XRMesh, 'semanticLabel', metadata.semanticLabel);\n }\n if (entity.getValue(XRMesh, 'isBounded3D') !== metadata.isBounded3D) {\n entity.setValue(XRMesh, 'isBounded3D', metadata.isBounded3D);\n }\n }\n\n private updateEnabledFeatures(xrSession: XRSession | null) {\n if (!xrSession) {\n console.log(\n 'Warning: xrSession is null when trying to query enabled features. Scene understanding features are disabled.',\n );\n return;\n }\n\n const enabledFeatures = xrSession.enabledFeatures;\n this.planeFeatureEnabled = enabledFeatures?.includes('plane-detection');\n this.meshFeatureEnabled = enabledFeatures?.includes('mesh-detection');\n this.anchorFeatureEnabled = enabledFeatures?.includes('anchors');\n\n if (!this.planeFeatureEnabled) {\n console.log(\n 'Warning: plane-detection feature not enabled for WebXR session. Partial Scene Understanding features are disabled.',\n );\n }\n\n if (!this.meshFeatureEnabled) {\n console.log(\n 'Warning: mesh-detection feature not enabled for WebXR session. Partial Scene Understanding features are disabled.',\n );\n }\n\n if (!this.anchorFeatureEnabled) {\n console.log(\n 'Warning: anchor feature not enabled for WebXR session. Partial Scene Understanding features are disabled.',\n );\n }\n }\n\n /**\n * Attempts to restore a persistent anchor from a previous session.\n *\n * Persistent anchors allow anchored objects to maintain their world position\n * across XR sessions. The anchor UUID is stored in localStorage and used to\n * restore the same anchor when a new session starts.\n *\n * If restoration fails (e.g., user cleared the space, runtime doesn't support\n * persistence, or the anchor was deleted), this fails gracefully and a new\n * anchor will be created in the update loop.\n */\n private async tryRestorePersistentAnchor() {\n let requestGeneration: number | undefined;\n let session: XRSession | null = null;\n\n try {\n // Load the saved anchor UUID from localStorage\n const savedUuid = localStorage.getItem(\n SceneUnderstandingSystem.ANCHOR_UUID_STORAGE_KEY,\n );\n\n if (!savedUuid) {\n return;\n }\n\n session = this.xrManager.getSession();\n if (!session) {\n return;\n }\n\n if (!session.restorePersistentAnchor) {\n console.warn('XRSession.restorePersistentAnchor not supported');\n return;\n }\n\n // Each async request owns a generation. Session end, system teardown, or\n // a subsequent restore invalidates it so a late result cannot install an\n // XRAnchor whose XRSpace belongs to an obsolete XRSession.\n requestGeneration = ++this.anchorRequestGeneration;\n this.anchorRequested = true;\n const restoredAnchor = (await session.restorePersistentAnchor(\n savedUuid,\n )) as XRAnchor | null;\n\n if (!this.isAnchorRequestCurrent(session, requestGeneration)) {\n this.deleteAnchor(restoredAnchor);\n return;\n }\n\n if (!restoredAnchor) {\n this.clearActiveAnchor();\n return;\n }\n\n if (this.xrAnchor !== restoredAnchor) {\n this.clearActiveAnchor();\n this.xrAnchor = restoredAnchor;\n }\n this.resetAnchorRetryState();\n } catch (_error) {\n // Only the current session's failure proves that its saved UUID is\n // invalid. A superseded session may reject merely because it ended.\n if (\n requestGeneration === undefined ||\n (session !== null &&\n this.isAnchorRequestCurrent(session, requestGeneration))\n ) {\n try {\n localStorage.removeItem(\n SceneUnderstandingSystem.ANCHOR_UUID_STORAGE_KEY,\n );\n } catch (_storageError) {\n // Storage access can be unavailable in privacy-restricted contexts.\n }\n }\n } finally {\n // A stale request must not clear the in-flight marker owned by the next\n // session's restore.\n if (requestGeneration === this.anchorRequestGeneration) {\n this.anchorRequested = false;\n }\n }\n }\n\n /**\n * Creates a new XR anchor at the origin of the reference space.\n *\n * The anchor is used to attach virtual objects to a stable real-world position.\n * After creation, attempts to request a persistent handle so the anchor can be\n * restored in future sessions. If persistence is not supported, the anchor\n * will only last for the current session.\n */\n private async createAnchor(referenceSpace: XRReferenceSpace | null) {\n let requestGeneration: number | undefined;\n let session: XRSession | null = null;\n let createdAnchor: XRAnchor | null | undefined;\n let requestDelayIndex: number | undefined;\n\n try {\n session = this.xrManager.getSession();\n const frame = this.xrManager.getFrame();\n if (!session || !frame?.createAnchor || !referenceSpace) {\n return;\n }\n\n requestGeneration = ++this.anchorRequestGeneration;\n this.anchorRequested = true;\n requestDelayIndex = this.anchorRetryDelayIndex;\n console.log(\n '[SceneUnderstandingSystem] Anchor needed but not present, triggering creation',\n );\n createdAnchor = (await frame.createAnchor(\n new XRRigidTransform(),\n referenceSpace,\n )) as XRAnchor | null;\n\n if (!createdAnchor) {\n this.increaseAnchorRetryDelay(\n session,\n requestGeneration,\n requestDelayIndex,\n );\n return;\n }\n\n if (!this.isAnchorRequestCurrent(session, requestGeneration)) {\n this.deleteAnchor(createdAnchor);\n return;\n }\n\n if (this.xrAnchor !== createdAnchor) {\n this.clearActiveAnchor();\n this.xrAnchor = createdAnchor;\n }\n this.resetAnchorRetryState();\n\n if (createdAnchor.requestPersistentHandle) {\n const uuid = await createdAnchor.requestPersistentHandle();\n if (\n !this.isAnchorRequestCurrent(session, requestGeneration) ||\n this.xrAnchor !== createdAnchor\n ) {\n if (this.xrAnchor === createdAnchor) {\n this.xrAnchor = undefined;\n }\n this.deleteAnchor(createdAnchor);\n return;\n }\n localStorage.setItem(\n SceneUnderstandingSystem.ANCHOR_UUID_STORAGE_KEY,\n uuid,\n );\n }\n } catch (_error) {\n // Anchor creation and persistence are optional. A current created anchor\n // remains usable when only persistence fails; a stale one is discarded.\n if (\n !createdAnchor &&\n requestGeneration !== undefined &&\n requestDelayIndex !== undefined &&\n session !== null\n ) {\n this.increaseAnchorRetryDelay(\n session,\n requestGeneration,\n requestDelayIndex,\n );\n }\n if (\n createdAnchor &&\n requestGeneration !== undefined &&\n session !== null &&\n (!this.isAnchorRequestCurrent(session, requestGeneration) ||\n this.xrAnchor !== createdAnchor)\n ) {\n if (this.xrAnchor === createdAnchor) {\n this.xrAnchor = undefined;\n }\n this.deleteAnchor(createdAnchor);\n }\n } finally {\n if (requestGeneration === this.anchorRequestGeneration) {\n this.anchorRequested = false;\n }\n }\n }\n\n private updateAnchoredObject() {\n this.queries.anchoredEntities.entities.forEach((entity) => {\n const object = entity.object3D;\n if (object && !entity.getValue(XRAnchor, 'attached')) {\n this.anchoredGroup.attach(object);\n entity.setValue(XRAnchor, 'attached', true);\n }\n });\n }\n}\n\ntype Vec3 = { x: number; y: number; z: number };\n\n/**\n * From a flat `[x,y,z, x,y,z, ...]` vertex buffer, return its axis-aligned\n * minimum and maximum coordinates. The extrema can come from different source\n * vertices; treating one smallest-sum and one largest-sum vertex as bounds\n * under-reports skewed meshes.\n */\nexport function findAxisAlignedBounds(arr: Float32Array): {\n minEntry: Vec3;\n maxEntry: Vec3;\n} {\n if (!arr || arr.length === 0 || arr.length % 3 !== 0) {\n throw new Error('Array length must be a positive multiple of 3.');\n }\n let minX = arr[0];\n let minY = arr[1];\n let minZ = arr[2];\n let maxX = minX;\n let maxY = minY;\n let maxZ = minZ;\n for (let i = 3; i < arr.length; i += 3) {\n minX = Math.min(minX, arr[i]);\n minY = Math.min(minY, arr[i + 1]);\n minZ = Math.min(minZ, arr[i + 2]);\n maxX = Math.max(maxX, arr[i]);\n maxY = Math.max(maxY, arr[i + 1]);\n maxZ = Math.max(maxZ, arr[i + 2]);\n }\n return {\n minEntry: { x: minX, y: minY, z: minZ },\n maxEntry: { x: maxX, y: maxY, z: maxZ },\n };\n}\n\n/**\n * From a flat `[x,y,z, x,y,z, ...]` vertex buffer, return the source\n * vertices with the smallest and largest coordinate sums.\n *\n * @deprecated This legacy helper does not calculate an axis-aligned bounding\n * box. Use {@link findAxisAlignedBounds} for bounds and dimensions.\n */\nexport function findExtremeVertices(arr: Float32Array): {\n minEntry: Vec3;\n maxEntry: Vec3;\n} {\n if (!arr || arr.length === 0 || arr.length % 3 !== 0) {\n throw new Error('Array length must be a positive multiple of 3.');\n }\n let minIndex = 0;\n let maxIndex = 0;\n let minSum = arr[0] + arr[1] + arr[2];\n let maxSum = minSum;\n for (let i = 3; i < arr.length; i += 3) {\n const sum = arr[i] + arr[i + 1] + arr[i + 2];\n if (sum < minSum) {\n minSum = sum;\n minIndex = i;\n }\n if (sum > maxSum) {\n maxSum = sum;\n maxIndex = i;\n }\n }\n return {\n minEntry: { x: arr[minIndex], y: arr[minIndex + 1], z: arr[minIndex + 2] },\n maxEntry: { x: arr[maxIndex], y: arr[maxIndex + 1], z: arr[maxIndex + 2] },\n };\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;;AAKG;AAsCH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDG;AACG,MAAO,wBAAyB,SAAQ,YAAY,CACxD;AACE,IAAA,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;AACtC,IAAA,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;AACpC,IAAA,gBAAgB,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;CAC3C,EACD;IACE,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CACvD,CACF,CAAA;AATD,IAAA,WAAA,GAAA;;;QAeU,IAAA,CAAA,eAAe,GAAY,KAAK;;QAQhC,IAAA,CAAA,qBAAqB,GAAW,CAAC;;QAGjC,IAAA,CAAA,qBAAqB,GAAW,CAAC;;QAGjC,IAAA,CAAA,oBAAoB,GAAW,CAAC;;QAGhC,IAAA,CAAA,uBAAuB,GAAW,CAAC;;AAGnC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAY;AAKxC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAmB;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAkB;AACzC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,GAAG,EAA+B;AAC5D,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,EAA6B;;AAGzD,QAAA,IAAA,CAAA,aAAa,GAAU,IAAI,KAAK,EAAE;AAGlC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAE;IA0uBtC;IA/tBE,IAAI,GAAA;;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,iBAAiB,CAAC;AACzC,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,GAAG;AACb,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAiB,CAAC;AACxC,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,GAAG;AACb,SAAA,CAAC;AAEF,QAAA,MAAM,cAAc,GAAG,YAAW;YAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;;;AAIvD,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,gBAAA,MAAM,IAAI,CAAC,0BAA0B,EAAE;YACzC;;;;;;;;;;;AAYF,QAAA,CAAC;QAED,MAAM,YAAY,GAAG,MAAK;;;;;YAKxB,IAAI,CAAC,uBAAuB,EAAE;;;YAI9B,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AAE3D,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CACzD,IAAI,CAAC,aAAa,EAClB;AACE,YAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;AAC9B,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CACF;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,cAAc,EAAE,cAAc,CAAC,EACxE,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC,EACpE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;AAC1D,gBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ;AACxC,gBAAA,IAAI,WAAW,YAAY,IAAI,EAAE;AAC/B,oBAAA,WAAW,CAAC,OAAO,GAAG,KAAK;gBAC7B;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACxD,gBAAA,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ;AACtC,gBAAA,IAAI,UAAU,YAAY,IAAI,EAAE;AAC9B,oBAAA,UAAU,CAAC,OAAO,GAAG,KAAK;gBAC5B;AACF,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,EACF,MAAK;;YACH,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,iBAAiB,EAAE;AAExB,YAAA,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AAChE,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;AAC9B,gBAAA,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,MAAM,MAAK,IAAI,CAAC,aAAa,EAAE;AACzC,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC3B;AACA,gBAAA,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;gBAC9C;YACF;AACA,YAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;AACrC,YAAA,IAAI,MAAA,IAAI,CAAC,mBAAmB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACpC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACpC;AACA,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC7B,QAAA,CAAC,CACF;IACH;IAEA,MAAM,CAAC,MAAc,EAAE,IAAY,EAAA;;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO;QAC1B,MAAM,MAAM,GAAG,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,cAAc;QACpC,MAAM,MAAM,GAAG,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,cAAc;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;AAEzD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;QAC3C;AAEA,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;QAC3C;QAEA,IACE,IAAI,CAAC,oBAAoB;YACzB,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC3B,CAAC,IAAI,CAAC,eAAe;AACrB,YAAA,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAClC;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QACnC;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,EAAE;YACnC,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC;AACf,iBAAA,QAAQ,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CACT,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;YACtD,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,SAAS,CACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAC3B,IAAI,CAAC,aAAa,CAAC,UAAU,EAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,CACzB;YACH;QACF;IACF;AAEA;;;;AAIG;AACK,IAAA,qBAAqB,CAAC,MAAc,EAAA;AAC1C,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAChC,QAAA,IAAI,QAAQ,YAAY,IAAI,EAAE;AAC5B,YAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC7B;IACF;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;AACvB,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ;AACtC,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ;AACtC,SAAA,CAAC;AACF,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAClC,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,MAAM,CAAC,OAAO,EAAE;YAClB;QACF;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AAChC,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;IACjC;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC5B,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;AACpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;AACnC,QAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS;IACvC;IAEQ,sBAAsB,CAC5B,OAAkB,EAClB,iBAAyB,EAAA;AAEzB,QAAA,QACE,iBAAiB,KAAK,IAAI,CAAC,uBAAuB;YAClD,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;IAE3C;AAEQ,IAAA,YAAY,CAAC,MAAmC,EAAA;AACtD,QAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC9C;QACF;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/B,QAAA,IAAI;YACF,MAAM,CAAC,MAAM,EAAE;QACjB;QAAE,OAAO,MAAM,EAAE;;;QAGjB;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IAC3B;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC;AAC9B,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC;IAChC;AAEQ,IAAA,wBAAwB,CAC9B,OAAkB,EAClB,iBAAyB,EACzB,iBAAyB,EAAA;QAEzB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE;YAC5D;QACF;AACA,QAAA,IAAI,CAAC,qBAAqB;AACxB,YAAA,IAAI,CAAC,oBAAoB;AACzB,gBAAA,wBAAwB,CAAC,2BAA2B,CAAC,iBAAiB,CAAC;AACzE,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CACnC,iBAAiB,GAAG,CAAC,EACrB,wBAAwB,CAAC,2BAA2B,CAAC,MAAM,GAAG,CAAC,CAChE;IACH;IAEQ,YAAY,CAClB,MAA8B,EAC9B,cAAuC,EAAA;AAEvC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;AAC1D,YAAA,IAAI,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAY,CAAC,EAAE;AACnE,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAY,EAClD,WAAW,CACZ;YACH;iBAAO;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAC7B,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAY,CACnD;AACD,gBAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;gBACvC,WAAW,CAAC,OAAO,EAAE;YACvB;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;;AACvB,gBAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AAC1B,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC;AACf,yBAAA,QAAQ;AACR,yBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC;oBAC5C,IAAI,CAAC,IAAI,EAAE;wBACT;oBACF;oBACA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;oBAElD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;AAC3C,wBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;wBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;wBAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;wBACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK;wBAC9C,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;wBACtD,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AACxD,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;wBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC1D,wBAAA,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE;AAChC,4BAAA,MAAM,EAAE,KAAK;AACd,yBAAA,CAAC;AACF,wBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE;4BAClC,eAAe,EAAE,KAAK,CAAC,eAAe;4BACtC,OAAO;AACR,yBAAA,CAAC;oBACJ;yBAAO;AACL,wBAAA,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ;wBAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;wBACzD,IACE,WAAW,YAAY,IAAI;6BAC1B,aAAa,KAAK,SAAS;gCAC1B,aAAa,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,CAAC,EAC1D;AACA,4BAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;;;;4BAI7B,IAAI,CAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,OAAO,MAAK,OAAO,EAAE;AACtC,gCAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ;gCAC7C,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;gCACxD,gBAAgB,CAAC,OAAO,EAAE;4BAC5B;AACA,4BAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE;gCAClC,eAAe,EAAE,KAAK,CAAC,eAAe;gCACtC,OAAO;AACR,6BAAA,CAAC;wBACJ;AACA,wBAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9D,wBAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;oBAClE;gBACF;AACF,YAAA,CAAC,CAAC;QACJ;IACF;IAEQ,YAAY,CAClB,MAA6B,EAC7B,cAAuC,EAAA;AAEvC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACxD,YAAA,IAAI,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAW,CAAC,EAAE;AAC/D,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAW,EAC9C,UAAU,CACX;YACH;iBAAO;AACL,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAC5B,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAW,CAC/C;AACD,gBAAA,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;gBACtC,UAAU,CAAC,OAAO,EAAE;YACtB;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtB,gBAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AAC1B,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC;AACf,yBAAA,QAAQ;AACR,yBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC;oBAC1C,IAAI,CAAC,IAAI,EAAE;wBACT;oBACF;oBACA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;oBAElD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;AAC1C,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,wBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CACtC,QAAQ,EACR,IAAI,CAAC,aAAa,CACnB;AACD,wBAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B;wBACF;wBACA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;wBAC3D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;wBACvD,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK;AACnD,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;wBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC;wBAC9D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;wBAC3D,SAAS,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAE7D,wBAAA,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE;AAC9B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,GAAG,QAAQ;AACZ,yBAAA,CAAC;AACF,wBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE;4BAChC,OAAO;4BACP,eAAe,EAAE,IAAI,CAAC,eAAe;4BACrC,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,QAAQ;AACT,yBAAA,CAAC;oBACJ;yBAAO;wBACL,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC/C,MAAM,UAAU,GAAG,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAE,QAAQ;wBACvC,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;wBACvD,IACE,UAAU,KAAK,SAAS;AACxB,4BAAA,UAAU,YAAY,IAAI;6BACzB,aAAa,KAAK,SAAS;gCAC1B,aAAa,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe,CAAC,EACzD;AACA,4BAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,4BAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,4BAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;;;;4BAIxC,MAAM,eAAe,GACnB,CAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,QAAQ,MAAK,QAAQ;gCACpC,CAAA,aAAa,aAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,OAAO,MAAK,OAAO;4BACpC,MAAM,eAAe,GACnB,eAAe;gCACf,CAAA,aAAa,aAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,aAAa,MAAK,aAAa;4BAChD,MAAM,QAAQ,GAAG;kCACb,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa;kCAC/C,SAAS;AACb,4BAAA,IAAI,eAAe,IAAI,QAAQ,KAAK,SAAS,EAAE;;;gCAG7C,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;gCAC5D,UAAU,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;gCAC9D;4BACF;4BACA,IAAI,eAAe,EAAE;AACnB,gCAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ;gCAC5C,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAC3C,QAAQ,EACR,OAAO,CACR;gCACD,gBAAgB,CAAC,OAAO,EAAE;4BAC5B;AACA,4BAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,gCAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC;4BAC/C;AACA,4BAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE;gCAChC,OAAO;gCACP,eAAe,EAAE,IAAI,CAAC,eAAe;gCACrC,aAAa;gCACb,QAAQ;AACT,6BAAA,CAAC;wBACJ;AACA,wBAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAE,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7D,wBAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAE,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;oBACjE;gBACF;AACF,YAAA,CAAC,CAAC;QACJ;IACF;AAEQ,IAAA,mBAAmB,CAAC,OAA2B,EAAA;AACrD,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,gBAAgB;AAClC,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,gBAAgB;AAClC,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,gBAAgB;AAClC,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,gBAAgB;AAElC,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YAC3B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAChC;AAEA,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACzD;IAEQ,kBAAkB,CACxB,QAA4B,EAC5B,OAA0B,EAAA;AAE1B,QAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnE,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAClD,QAAA,OAAO,QAAQ;IACjB;IAEQ,eAAe,CACrB,QAA4B,EAC5B,aAAsC,EAAA;AAEtC,QAAA,IAAI,aAAa,KAAK,aAAa,EAAE;YACnC,OAAO;AACL,gBAAA,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACd,gBAAA,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACd,gBAAA,aAAa,EAAE,EAAE;aAClB;QACH;QAEA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,QAAQ,CAAC;QAC9D,OAAO;AACL,YAAA,UAAU,EAAE;AACV,gBAAA,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,gBAAA,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,gBAAA,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;AACxB,aAAA;AACD,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzC,YAAA,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzC,YAAA,aAAa,EAAE,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,MAAA,GAAb,aAAa,GAAI,EAAE;SACnC;IACH;IAEQ,kBAAkB,CACxB,QAA4B,EAC5B,aAAsC,EAAA;AAEtC,QAAA,IAAI;YACF,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC;QACtD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CACV,oEAAoE,EACpE,KAAK,CACN;AACD,YAAA,OAAO,SAAS;QAClB;IACF;IAEQ,kBAAkB,CAAC,MAAc,EAAE,QAAsB,EAAA;AAC/D,QAAA,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrD,QAAA,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrD,QAAA,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACnE,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,QAAQ,CAAC,aAAa,EAAE;YACvE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC;QAClE;AACA,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,QAAQ,CAAC,WAAW,EAAE;YACnE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC;QAC9D;IACF;AAEQ,IAAA,qBAAqB,CAAC,SAA2B,EAAA;QACvD,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,CAAC,GAAG,CACT,+GAA+G,CAChH;YACD;QACF;AAEA,QAAA,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe;AACjD,QAAA,IAAI,CAAC,mBAAmB,GAAG,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,MAAA,GAAA,MAAA,GAAf,eAAe,CAAE,QAAQ,CAAC,iBAAiB,CAAC;AACvE,QAAA,IAAI,CAAC,kBAAkB,GAAG,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,MAAA,GAAA,MAAA,GAAf,eAAe,CAAE,QAAQ,CAAC,gBAAgB,CAAC;AACrE,QAAA,IAAI,CAAC,oBAAoB,GAAG,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,MAAA,GAAA,MAAA,GAAf,eAAe,CAAE,QAAQ,CAAC,SAAS,CAAC;AAEhE,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,OAAO,CAAC,GAAG,CACT,oHAAoH,CACrH;QACH;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,OAAO,CAAC,GAAG,CACT,mHAAmH,CACpH;QACH;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,OAAO,CAAC,GAAG,CACT,2GAA2G,CAC5G;QACH;IACF;AAEA;;;;;;;;;;AAUG;AACK,IAAA,MAAM,0BAA0B,GAAA;AACtC,QAAA,IAAI,iBAAqC;QACzC,IAAI,OAAO,GAAqB,IAAI;AAEpC,QAAA,IAAI;;YAEF,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CACpC,wBAAwB,CAAC,uBAAuB,CACjD;YAED,IAAI,CAAC,SAAS,EAAE;gBACd;YACF;AAEA,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YACrC,IAAI,CAAC,OAAO,EAAE;gBACZ;YACF;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;AACpC,gBAAA,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC;gBAC/D;YACF;;;;AAKA,YAAA,iBAAiB,GAAG,EAAE,IAAI,CAAC,uBAAuB;AAClD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B,MAAM,cAAc,IAAI,MAAM,OAAO,CAAC,uBAAuB,CAC3D,SAAS,CACV,CAAoB;YAErB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE;AAC5D,gBAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;gBACjC;YACF;YAEA,IAAI,CAAC,cAAc,EAAE;gBACnB,IAAI,CAAC,iBAAiB,EAAE;gBACxB;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,EAAE;gBACpC,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAAC,QAAQ,GAAG,cAAc;YAChC;YACA,IAAI,CAAC,qBAAqB,EAAE;QAC9B;QAAE,OAAO,MAAM,EAAE;;;YAGf,IACE,iBAAiB,KAAK,SAAS;iBAC9B,OAAO,KAAK,IAAI;oBACf,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAC1D;AACA,gBAAA,IAAI;AACF,oBAAA,YAAY,CAAC,UAAU,CACrB,wBAAwB,CAAC,uBAAuB,CACjD;gBACH;gBAAE,OAAO,aAAa,EAAE;;gBAExB;YACF;QACF;gBAAU;;;AAGR,YAAA,IAAI,iBAAiB,KAAK,IAAI,CAAC,uBAAuB,EAAE;AACtD,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YAC9B;QACF;IACF;AAEA;;;;;;;AAOG;IACK,MAAM,YAAY,CAAC,cAAuC,EAAA;AAChE,QAAA,IAAI,iBAAqC;QACzC,IAAI,OAAO,GAAqB,IAAI;AACpC,QAAA,IAAI,aAA0C;AAC9C,QAAA,IAAI,iBAAqC;AAEzC,QAAA,IAAI;AACF,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvC,YAAA,IAAI,CAAC,OAAO,IAAI,EAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,YAAY,CAAA,IAAI,CAAC,cAAc,EAAE;gBACvD;YACF;AAEA,YAAA,iBAAiB,GAAG,EAAE,IAAI,CAAC,uBAAuB;AAClD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,iBAAiB,GAAG,IAAI,CAAC,qBAAqB;AAC9C,YAAA,OAAO,CAAC,GAAG,CACT,+EAA+E,CAChF;AACD,YAAA,aAAa,IAAI,MAAM,KAAK,CAAC,YAAY,CACvC,IAAI,gBAAgB,EAAE,EACtB,cAAc,CACf,CAAoB;YAErB,IAAI,CAAC,aAAa,EAAE;gBAClB,IAAI,CAAC,wBAAwB,CAC3B,OAAO,EACP,iBAAiB,EACjB,iBAAiB,CAClB;gBACD;YACF;YAEA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE;AAC5D,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gBAChC;YACF;AAEA,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;gBACnC,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAAC,QAAQ,GAAG,aAAa;YAC/B;YACA,IAAI,CAAC,qBAAqB,EAAE;AAE5B,YAAA,IAAI,aAAa,CAAC,uBAAuB,EAAE;AACzC,gBAAA,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,uBAAuB,EAAE;gBAC1D,IACE,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC;AACxD,oBAAA,IAAI,CAAC,QAAQ,KAAK,aAAa,EAC/B;AACA,oBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;AACnC,wBAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;oBAC3B;AACA,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;oBAChC;gBACF;gBACA,YAAY,CAAC,OAAO,CAClB,wBAAwB,CAAC,uBAAuB,EAChD,IAAI,CACL;YACH;QACF;QAAE,OAAO,MAAM,EAAE;;;AAGf,YAAA,IACE,CAAC,aAAa;AACd,gBAAA,iBAAiB,KAAK,SAAS;AAC/B,gBAAA,iBAAiB,KAAK,SAAS;gBAC/B,OAAO,KAAK,IAAI,EAChB;gBACA,IAAI,CAAC,wBAAwB,CAC3B,OAAO,EACP,iBAAiB,EACjB,iBAAiB,CAClB;YACH;AACA,YAAA,IACE,aAAa;AACb,gBAAA,iBAAiB,KAAK,SAAS;AAC/B,gBAAA,OAAO,KAAK,IAAI;iBACf,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC;AACvD,oBAAA,IAAI,CAAC,QAAQ,KAAK,aAAa,CAAC,EAClC;AACA,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;AACnC,oBAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;gBAC3B;AACA,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAClC;QACF;gBAAU;AACR,YAAA,IAAI,iBAAiB,KAAK,IAAI,CAAC,uBAAuB,EAAE;AACtD,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YAC9B;QACF;IACF;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACxD,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;AAC9B,YAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;AACpD,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;IACJ;;AAzwBA;AACwB,wBAAA,CAAA,2BAA2B,GAAG;AACpD,IAAA,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACV,CAFyC;AAuCnD;AACwB,wBAAA,CAAA,uBAAuB,GAAG,yBAAH;AAquBjD;;;;;AAKG;AACG,SAAU,qBAAqB,CAAC,GAAiB,EAAA;AAIrD,IAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;AACpD,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;IACnE;AACA,IAAA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AACjB,IAAA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACjB,IAAI,IAAI,GAAG,IAAI;IACf,IAAI,IAAI,GAAG,IAAI;IACf,IAAI,IAAI,GAAG,IAAI;AACf,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACtC,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC;IACA,OAAO;AACL,QAAA,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;AACvC,QAAA,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;KACxC;AACH;AAEA;;;;;;AAMG;AACG,SAAU,mBAAmB,CAAC,GAAiB,EAAA;AAInD,IAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;AACpD,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;IACnE;IACA,IAAI,QAAQ,GAAG,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC;AAChB,IAAA,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,MAAM,GAAG,MAAM;AACnB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACtC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,IAAI,GAAG,GAAG,MAAM,EAAE;YAChB,MAAM,GAAG,GAAG;YACZ,QAAQ,GAAG,CAAC;QACd;AACA,QAAA,IAAI,GAAG,GAAG,MAAM,EAAE;YAChB,MAAM,GAAG,GAAG;YACZ,QAAQ,GAAG,CAAC;QACd;IACF;IACA,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE;QAC1E,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE;KAC3E;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"synced-euler.js","sources":["../../src/transform/synced-euler.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synced-euler.js","sources":["../../src/transform/synced-euler.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 { Euler } from '../runtime/three.js';\nimport type { SyncedQuaternion } from './synced-quaternion.js';\n\n/**\n * Euler rotation that stays automatically synced with a SyncedQuaternion using lazy evaluation.\n *\n * @remarks\n * - When you modify rotation.x/y/z, it automatically updates the synced quaternion\n * - When the quaternion is updated (via methods OR direct buffer writes), rotation is recomputed\n * - Rotation values are lazily computed from quaternion only when read (performance optimization)\n * - Multiple reads in the same frame use cached values (quaternion comparison detects changes)\n * - This is MORE performant than Three.js's default behavior which always syncs immediately\n *\n * @category Scene\n */\nexport class SyncedEuler extends Euler {\n private syncedQuaternion: SyncedQuaternion | null = null;\n private __x: number = 0;\n private __y: number = 0;\n private __z: number = 0;\n private __order: string = 'XYZ';\n private isDirty: boolean = false;\n // Cache last quaternion values to detect external buffer modifications\n private lastQuatX: number = 0;\n private lastQuatY: number = 0;\n private lastQuatZ: number = 0;\n private lastQuatW: number = 1;\n\n constructor(x = 0, y = 0, z = 0, order: any = 'XYZ') {\n super(x, y, z, order);\n // Preserve values from parent constructor\n this.__x = (this as any)._x;\n this.__y = (this as any)._y;\n this.__z = (this as any)._z;\n this.__order = (this as any)._order;\n this.setupProperties();\n }\n\n private setupProperties() {\n // Override internal properties with lazy sync behavior\n Object.defineProperty(this, '_x', {\n get: () => {\n // Check if quaternion changed externally (e.g., direct buffer write)\n this.checkQuaternionChanged();\n // Lazily sync from quaternion if dirty\n if (this.isDirty) {\n this.syncFromQuaternion();\n }\n return this.__x;\n },\n set: (value: number) => {\n this.__x = value;\n this.isDirty = false; // Values are fresh since we just set them\n this.updateQuaternion();\n // Call parent's onChange callback for any listeners\n (this as any)._onChangeCallback();\n },\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(this, '_y', {\n get: () => {\n // Check if quaternion changed externally (e.g., direct buffer write)\n this.checkQuaternionChanged();\n // Lazily sync from quaternion if dirty\n if (this.isDirty) {\n this.syncFromQuaternion();\n }\n return this.__y;\n },\n set: (value: number) => {\n this.__y = value;\n this.isDirty = false; // Values are fresh since we just set them\n this.updateQuaternion();\n // Call parent's onChange callback for any listeners\n (this as any)._onChangeCallback();\n },\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(this, '_z', {\n get: () => {\n // Check if quaternion changed externally (e.g., direct buffer write)\n this.checkQuaternionChanged();\n // Lazily sync from quaternion if dirty\n if (this.isDirty) {\n this.syncFromQuaternion();\n }\n return this.__z;\n },\n set: (value: number) => {\n this.__z = value;\n this.isDirty = false; // Values are fresh since we just set them\n this.updateQuaternion();\n // Call parent's onChange callback for any listeners\n (this as any)._onChangeCallback();\n },\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(this, '_order', {\n get: () => {\n // Order doesn't need sync from quaternion, but check dirty for consistency\n if (this.isDirty) {\n this.syncFromQuaternion();\n }\n return this.__order;\n },\n set: (value: string) => {\n this.__order = value;\n this.isDirty = false; // Values are fresh since we just set them\n this.updateQuaternion();\n // Call parent's onChange callback for any listeners\n (this as any)._onChangeCallback();\n },\n enumerable: true,\n configurable: true,\n });\n }\n\n /**\n * Link this Euler to a SyncedQuaternion for automatic bidirectional sync.\n */\n setSyncedQuaternion(quaternion: SyncedQuaternion): this {\n this.syncedQuaternion = quaternion;\n\n // Initialize cached quaternion values\n this.lastQuatX = quaternion.x;\n this.lastQuatY = quaternion.y;\n this.lastQuatZ = quaternion.z;\n this.lastQuatW = quaternion.w;\n\n // Register callback that marks rotation dirty when quaternion changes from external sources\n // The callback is automatically suppressed when rotation updates quaternion\n quaternion._onChangeWithSuppression(() => {\n this.markDirty();\n });\n\n return this;\n }\n\n /**\n * Check if quaternion values changed (e.g., via direct buffer writes).\n * If changed, mark as dirty so we recompute on next read.\n * This is cheap: just 4 float comparisons!\n */\n private checkQuaternionChanged(): void {\n if (!this.syncedQuaternion || this.isDirty) {\n return; // Already dirty, no need to check\n }\n\n // Compare current quaternion values to cached values\n // This catches external buffer modifications that bypass onChange callbacks\n if (\n this.syncedQuaternion.x !== this.lastQuatX ||\n this.syncedQuaternion.y !== this.lastQuatY ||\n this.syncedQuaternion.z !== this.lastQuatZ ||\n this.syncedQuaternion.w !== this.lastQuatW\n ) {\n this.isDirty = true;\n }\n }\n\n /**\n * Mark rotation as dirty (needs recompute from quaternion).\n * Called automatically when quaternion changes.\n * This is cheap - just a flag flip, no computation!\n */\n private markDirty(): void {\n this.isDirty = true;\n }\n\n /**\n * Update the synced quaternion from current Euler values.\n * Called automatically when Euler values change.\n */\n private updateQuaternion(): void {\n if (!this.syncedQuaternion) {\n return;\n }\n\n // Suppress the onChange callback to prevent marking rotation dirty\n // when we're the ones updating the quaternion!\n this.syncedQuaternion._withSuppressedOnChange(() => {\n // Use setFromEuler to convert Euler to quaternion\n this.syncedQuaternion!.setFromEuler(this, false);\n });\n\n // Update cached quaternion values since we just changed it\n this.lastQuatX = this.syncedQuaternion.x;\n this.lastQuatY = this.syncedQuaternion.y;\n this.lastQuatZ = this.syncedQuaternion.z;\n this.lastQuatW = this.syncedQuaternion.w;\n }\n\n /**\n * Update Euler values from the synced quaternion.\n * Called lazily when rotation is read and marked dirty.\n * After this, isDirty is cleared and values are cached.\n */\n private syncFromQuaternion(): void {\n if (!this.syncedQuaternion || !this.isDirty) {\n return;\n }\n\n // Update internal values from quaternion (without triggering setters)\n const euler = new Euler().setFromQuaternion(\n this.syncedQuaternion,\n this.__order as any,\n false,\n );\n\n this.__x = (euler as any)._x;\n this.__y = (euler as any)._y;\n this.__z = (euler as any)._z;\n\n // Cache current quaternion values so we can detect external changes\n this.lastQuatX = this.syncedQuaternion.x;\n this.lastQuatY = this.syncedQuaternion.y;\n this.lastQuatZ = this.syncedQuaternion.z;\n this.lastQuatW = this.syncedQuaternion.w;\n\n // Clear dirty flag - values are now fresh and cached\n this.isDirty = false;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"synced-quaternion.js","sources":["../../src/transform/synced-quaternion.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAIH;;;;;;;;;;AAUG;AACG,MAAO,gBAAiB,SAAQ,UAAU,CAAA;AAS9C,IAAA,WAAA,CAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAA;QACpC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QATX,IAAA,CAAA,MAAM,GAAwB,IAAI;QAClC,IAAA,CAAA,YAAY,GAAW,CAAC;QACxB,IAAA,CAAA,GAAG,GAAW,CAAC;QACf,IAAA,CAAA,GAAG,GAAW,CAAC;QACf,IAAA,CAAA,GAAG,GAAW,CAAC;QACf,IAAA,CAAA,GAAG,GAAW,CAAC;QACf,IAAA,CAAA,gBAAgB,GAAY,KAAK;;AAKvC,QAAA,IAAI,CAAC,GAAG,GAAI,IAAY,CAAC,EAAE;AAC3B,QAAA,IAAI,CAAC,GAAG,GAAI,IAAY,CAAC,EAAE;AAC3B,QAAA,IAAI,CAAC,GAAG,GAAI,IAAY,CAAC,EAAE;AAC3B,QAAA,IAAI,CAAC,GAAG,GAAI,IAAY,CAAC,EAAE;QAC3B,IAAI,CAAC,eAAe,EAAE;IACxB;IAEQ,eAAe,GAAA;;;;AAKrB,QAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,MAAK;AACR,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;gBACvC;;gBAEA,OAAO,IAAI,CAAC,GAAG;YACjB,CAAC;AACD,YAAA,GAAG,EAAE,CAAC,KAAa,KAAI;AACrB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK;gBACxC;qBAAO;AACL,oBAAA,IAAI,CAAC,GAAG,GAAG,KAAK;gBAClB;;gBAEC,IAAY,CAAC,iBAAiB,EAAE;YACnC,CAAC;AACD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC;AAEF,QAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,MAAK;AACR,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC3C;gBACA,OAAO,IAAI,CAAC,GAAG;YACjB,CAAC;AACD,YAAA,GAAG,EAAE,CAAC,KAAa,KAAI;AACrB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK;gBAC5C;qBAAO;AACL,oBAAA,IAAI,CAAC,GAAG,GAAG,KAAK;gBAClB;;gBAEC,IAAY,CAAC,iBAAiB,EAAE;YACnC,CAAC;AACD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC;AAEF,QAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,MAAK;AACR,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC3C;gBACA,OAAO,IAAI,CAAC,GAAG;YACjB,CAAC;AACD,YAAA,GAAG,EAAE,CAAC,KAAa,KAAI;AACrB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK;gBAC5C;qBAAO;AACL,oBAAA,IAAI,CAAC,GAAG,GAAG,KAAK;gBAClB;;gBAEC,IAAY,CAAC,iBAAiB,EAAE;YACnC,CAAC;AACD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC;AAEF,QAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,MAAK;AACR,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC3C;gBACA,OAAO,IAAI,CAAC,GAAG;YACjB,CAAC;AACD,YAAA,GAAG,EAAE,CAAC,KAAa,KAAI;AACrB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK;gBAC5C;qBAAO;AACL,oBAAA,IAAI,CAAC,GAAG,GAAG,KAAK;gBAClB;;gBAEC,IAAY,CAAC,iBAAiB,EAAE;YACnC,CAAC;AACD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC;IACJ;AAEA;;;;AAIG;AACH,IAAA,SAAS,CAAC,MAAoB,EAAE,MAAM,GAAG,CAAC,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;AAC1B,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACH,IAAA,wBAAwB,CAAC,QAAoB,EAAA;AAC1C,QAAA,IAAY,CAAC,SAAS,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,QAAQ,EAAE;YACZ;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,uBAAuB,CAAC,EAAc,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,EAAE,EAAE;AACJ,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IAC/B;AACD;;;;"}
1
+ {"version":3,"file":"synced-quaternion.js","sources":["../../src/transform/synced-quaternion.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 { Quaternion } from '../runtime/three.js';\n\n/**\n * Quaternion whose internal `_x/_y/_z/_w` are backed by a Float32Array.\n *\n * @remarks\n * - Three.js quaternion math reads/writes the internal fields; by replacing\n * those with array‑backed accessors, all operations become zero‑copy against\n * the ECS component buffer.\n * - When no target is set, it behaves like a normal `Quaternion`.\n *\n * @category Scene\n */\nexport class SyncedQuaternion extends Quaternion {\n private target: Float32Array | null = null;\n private targetOffset: number = 0;\n private __x: number = 0;\n private __y: number = 0;\n private __z: number = 0;\n private __w: number = 1;\n private suppressOnChange: boolean = false;\n\n constructor(x = 0, y = 0, z = 0, w = 1) {\n super(x, y, z, w);\n // Preserve the values set by parent constructor before overriding properties\n this.__x = (this as any)._x;\n this.__y = (this as any)._y;\n this.__z = (this as any)._z;\n this.__w = (this as any)._w;\n this.setupProperties();\n }\n\n private setupProperties() {\n // Override the internal _x, _y, _z, _w properties to sync with target\n // This approach leverages the existing Three.js getter/setter architecture\n // All Three.js methods will automatically sync because they use these internal properties\n\n Object.defineProperty(this, '_x', {\n get: () => {\n if (this.target) {\n return this.target[this.targetOffset];\n }\n // Fallback to a private property when no target is set\n return this.__x;\n },\n set: (value: number) => {\n if (this.target) {\n this.target[this.targetOffset] = value;\n } else {\n this.__x = value;\n }\n // Always call onChange - the callback will check if it should act\n (this as any)._onChangeCallback();\n },\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(this, '_y', {\n get: () => {\n if (this.target) {\n return this.target[this.targetOffset + 1];\n }\n return this.__y;\n },\n set: (value: number) => {\n if (this.target) {\n this.target[this.targetOffset + 1] = value;\n } else {\n this.__y = value;\n }\n // Always call onChange - the callback will check if it should act\n (this as any)._onChangeCallback();\n },\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(this, '_z', {\n get: () => {\n if (this.target) {\n return this.target[this.targetOffset + 2];\n }\n return this.__z;\n },\n set: (value: number) => {\n if (this.target) {\n this.target[this.targetOffset + 2] = value;\n } else {\n this.__z = value;\n }\n // Always call onChange - the callback will check if it should act\n (this as any)._onChangeCallback();\n },\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(this, '_w', {\n get: () => {\n if (this.target) {\n return this.target[this.targetOffset + 3];\n }\n return this.__w;\n },\n set: (value: number) => {\n if (this.target) {\n this.target[this.targetOffset + 3] = value;\n } else {\n this.__w = value;\n }\n // Always call onChange - the callback will check if it should act\n (this as any)._onChangeCallback();\n },\n enumerable: true,\n configurable: true,\n });\n }\n\n /**\n * Bind this quaternion to a packed float array.\n * @param target Float32Array to read/write (xyzw at consecutive indices).\n * @param offset Starting index within the array (x at `offset`).\n */\n setTarget(target: Float32Array, offset = 0): this {\n this.target = target;\n this.targetOffset = offset;\n return this;\n }\n\n /**\n * Register a callback that will be called when quaternion changes from external sources.\n * The callback is suppressed when changes originate from rotation to prevent loops.\n */\n _onChangeWithSuppression(callback: () => void): void {\n (this as any)._onChange(() => {\n if (!this.suppressOnChange) {\n callback();\n }\n });\n }\n\n /**\n * Temporarily suppress onChange callbacks while executing a function.\n * Used when rotation updates quaternion to prevent circular updates.\n */\n _withSuppressedOnChange(fn: () => void): void {\n this.suppressOnChange = true;\n fn();\n this.suppressOnChange = false;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"synced-vector3.js","sources":["../../src/transform/synced-vector3.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synced-vector3.js","sources":["../../src/transform/synced-vector3.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 { Vector3 } from '../runtime/three.js';\n\n/**\n * Vector3 whose x/y/z accessors read from and write to a target Float32Array.\n *\n * @remarks\n * - Used by {@link TransformSystem} to bind Object3D.position/scale directly to\n * ECS component storage for zero‑copy updates.\n * - When no target is set, falls back to internal fields so it behaves like a\n * normal `Vector3`.\n *\n * @category Scene\n */\nexport class SyncedVector3 extends Vector3 {\n private target: Float32Array | null = null;\n private targetOffset: number = 0;\n private __x: number = 0;\n private __y: number = 0;\n private __z: number = 0;\n\n constructor(x = 0, y = 0, z = 0) {\n super(x, y, z);\n // Preserve the values set by parent constructor before overriding properties\n this.__x = this.x;\n this.__y = this.y;\n this.__z = this.z;\n this.setupProperties();\n }\n\n private setupProperties() {\n // Override x, y, z properties to sync with target\n Object.defineProperty(this, 'x', {\n get: () => {\n if (this.target) {\n return this.target[this.targetOffset];\n }\n // Fallback to a private property when no target is set\n return this.__x;\n },\n set: (value: number) => {\n if (this.target) {\n this.target[this.targetOffset] = value;\n } else {\n this.__x = value;\n }\n },\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(this, 'y', {\n get: () => {\n if (this.target) {\n return this.target[this.targetOffset + 1];\n }\n return this.__y;\n },\n set: (value: number) => {\n if (this.target) {\n this.target[this.targetOffset + 1] = value;\n } else {\n this.__y = value;\n }\n },\n enumerable: true,\n configurable: true,\n });\n\n Object.defineProperty(this, 'z', {\n get: () => {\n if (this.target) {\n return this.target[this.targetOffset + 2];\n }\n return this.__z;\n },\n set: (value: number) => {\n if (this.target) {\n this.target[this.targetOffset + 2] = value;\n } else {\n this.__z = value;\n }\n },\n enumerable: true,\n configurable: true,\n });\n }\n\n /**\n * Bind this vector to a packed float array.\n * @param target Float32Array to read/write.\n * @param offset Starting index within the array (x at `offset`).\n */\n setTarget(target: Float32Array, offset = 0): this {\n this.target = target;\n this.targetOffset = offset;\n return this;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform-component.js","sources":["../../src/transform/transform-component.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAKH;;;;;AAKG;MACU,SAAS,GAAG,0BAA0B,CACjD,eAAe,CACb,WAAW,EACX;AACE,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AACxD,IAAA,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AAChE,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IACrD,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAgB,EAAE;AAC1D,CAAA,EACD,6DAA6D,CAC9D,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;;;;"}
1
+ {"version":3,"file":"transform-component.js","sources":["../../src/transform/transform-component.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 { setComponentEditorMetadata } from '../ecs/component-editor-metadata.js';\nimport { Types, createComponent } from '../ecs/component.js';\n\n/**\n * 3D transform component that binds an entity to a Three.js Object3D.\n *\n * @category Scene\n * @hideineditor\n */\nexport const Transform = setComponentEditorMetadata(\n createComponent(\n 'Transform',\n {\n position: { type: Types.Vec3, default: [NaN, NaN, NaN] },\n orientation: { type: Types.Vec4, default: [NaN, NaN, NaN, NaN] },\n scale: { type: Types.Vec3, default: [NaN, NaN, NaN] },\n parent: { type: Types.Entity, default: undefined as any },\n },\n 'Component for 3D transformation (position, rotation, scale)',\n ),\n { hidden: true, intrinsic: true },\n);\n"],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAKH;;;;;AAKG;MACU,SAAS,GAAG,0BAA0B,CACjD,eAAe,CACb,WAAW,EACX;AACE,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AACxD,IAAA,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AAChE,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IACrD,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAgB,EAAE;AAC1D,CAAA,EACD,6DAA6D,CAC9D,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform-utils.js","sources":["../../src/transform/transform-utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;AACA,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE;AACzB,MAAM,GAAG,GAAG,IAAI,UAAU,EAAE;AAC5B,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE;AAC/B,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE;AAE5B;;;;;;AAMG;AACG,SAAU,gBAAgB,CAC9B,MAAgB,EAChB,aAAsB,EAAA;AAEtB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;IACrC;SAAO;AACL,QAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;AACrC,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;IACvD;AACF;AAEA;;;;;;AAMG;AACG,SAAU,kBAAkB,CAChC,MAAgB,EAChB,eAA2B,EAAA;AAE3B,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;IACzC;SAAO;AACL,QAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;;QAErC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACpD,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IACnE;AACF;;;;"}
1
+ {"version":3,"file":"transform-utils.js","sources":["../../src/transform/transform-utils.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Matrix4, Object3D, Quaternion, Vector3 } from 'three';\n\n// Reusable objects to avoid allocations in hot paths\nconst _m1 = new Matrix4();\nconst _q1 = new Quaternion();\nconst _position = new Vector3();\nconst _scale = new Vector3();\n\n/**\n * Sets an object's position such that its world position matches the given world position.\n * Handles parent transforms correctly.\n *\n * @param object - The Object3D to set the position on\n * @param worldPosition - The desired world position\n */\nexport function setWorldPosition(\n object: Object3D,\n worldPosition: Vector3,\n): void {\n const parent = object.parent;\n if (parent === null) {\n object.position.copy(worldPosition);\n } else {\n parent.updateWorldMatrix(true, false);\n _m1.copy(parent.matrixWorld).invert();\n object.position.copy(worldPosition).applyMatrix4(_m1);\n }\n}\n\n/**\n * Sets an object's quaternion such that its world quaternion matches the given world quaternion.\n * Handles parent transforms correctly, including parents with non-uniform scale.\n *\n * @param object - The Object3D to set the quaternion on\n * @param worldQuaternion - The desired world quaternion\n */\nexport function setWorldQuaternion(\n object: Object3D,\n worldQuaternion: Quaternion,\n): void {\n const parent = object.parent;\n if (parent === null) {\n object.quaternion.copy(worldQuaternion);\n } else {\n parent.updateWorldMatrix(true, false);\n // Extract parent's world quaternion via decompose (handles non-uniform scale correctly)\n parent.matrixWorld.decompose(_position, _q1, _scale);\n object.quaternion.copy(worldQuaternion).premultiply(_q1.invert());\n }\n}\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;AACA,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE;AACzB,MAAM,GAAG,GAAG,IAAI,UAAU,EAAE;AAC5B,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE;AAC/B,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE;AAE5B;;;;;;AAMG;AACG,SAAU,gBAAgB,CAC9B,MAAgB,EAChB,aAAsB,EAAA;AAEtB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;IACrC;SAAO;AACL,QAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;AACrC,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;IACvD;AACF;AAEA;;;;;;AAMG;AACG,SAAU,kBAAkB,CAChC,MAAgB,EAChB,eAA2B,EAAA;AAE3B,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;IACzC;SAAO;AACL,QAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;;QAErC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACpD,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IACnE;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sources":["../../src/transform/transform.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AAaH,SAAS,cAAc,CAAC,MAAc,EAAA;AACpC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAChC,IAAI,CAAC,QAAQ,EAAE;QACb;IACF;AACA,IAAA,IAAK,QAAgB,CAAC,mBAAmB,EAAE;QACzC;IACF;AACC,IAAA,QAAgB,CAAC,mBAAmB,GAAG,IAAI;AAE5C,IAAA,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK;IACjC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa,CAC1C,SAAS,EACT,UAAU,CACK;IACjB,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAC5C,SAAS,EACT,aAAa,CACE;IACjB,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAiB;;IAG7E,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC5C,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAClD;IACA,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC9C,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IACtD;IACA,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACzC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC5C;AAEA,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC1C,KAAK,EAAE,IAAI,aAAa,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC3D,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;AAE5E,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE;AAC5C,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;;AAGF,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC1C,KAAK,EAAE,IAAI,WAAW;AACnB,aAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ;aACtB,mBAAmB,CAAC,UAAU,CAAC;AAClC,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;QACvC,KAAK,EAAE,IAAI,aAAa,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;IAEF,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnC,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACxC,GAAG,EAAE,MAAK;YACR,OAAO,QAAQ,CAAC,OAAO;QACzB,CAAC;AACD,QAAA,GAAG,EAAE,CAAC,KAAK,KAAI;;AACb,YAAA,QAAQ,CAAC,OAAO,GAAG,KAAK;YACxB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,UAAU;QACtE,CAAC;AACD,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AACJ;AAEA,SAAS,gBAAgB,CAAC,MAAc,EAAA;AACtC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAChC,IAAI,CAAC,QAAQ,EAAE;QACb;IACF;AACA,IAAA,IAAI,CAAE,QAAgB,CAAC,mBAAmB,EAAE;QAC1C;IACF;IAEA,OAAO,QAAQ,CAAC,SAAS;IACzB,OAAO,QAAQ,CAAC,YAAY;IAC5B,OAAO,QAAQ,CAAC,cAAc;IAC9B,OAAO,QAAQ,CAAC,SAAS;AAEzB,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC1C,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5C,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE;QAC5C,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACjD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC1C,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1C,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;QACvC,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzC,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACxC,KAAK,EAAE,QAAQ,CAAC,OAAO;AACvB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA,CAAC;IAEF,OAAO,QAAQ,CAAC,OAAO;IACvB,OAAQ,QAAgB,CAAC,mBAAmB;AAC9C;AAEA;;;;;;;;;;;AAWG;AACG,MAAO,eAAgB,SAAQ,YAAY,CAAC;AAChD,IAAA,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;CACrC,CAAC,CAAA;IACA,IAAI,GAAA;QACF,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAClE;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;;AACjD,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;YAC9B,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC1C;YACF;YACA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;YACzD,MAAM,YAAY,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZ,YAAY,CAAE,QAAQ;YAE3C,IAAI,CAAC,YAAY,EAAE;;gBAEjB,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,0CAAE,SAAS,MAAK,SAAS,EAAE;;AAE1C,oBAAA,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS;gBAC/D;qBAAO;;AAEL,oBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ;AAC/C,0BAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AACzB,0BAAE,IAAI,CAAC,KAAK,CAAC,WAAW;oBAC1B,OAAO,CAAC,IAAI,CACV,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAA,yBAAA,EAA4B,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,mBAAmB,GAAG,YAAY,CAAA,0DAAA,CAA4D,CACjL;AACD,oBAAA,YAAY,CAAC,QAAS,CAAC,GAAG,CAAC,MAAM,CAAC;oBAClC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC;gBACpD;YACF;AAAO,iBAAA,IAAI,YAAY,KAAK,MAAM,CAAC,MAAM,EAAE;;AAEzC,gBAAA,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC;IACJ;AACD;;;;"}
1
+ {"version":3,"file":"transform.js","sources":["../../src/transform/transform.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Entity, NullEntity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport { LevelTag } from '../level/index.js';\nimport { Quaternion, Vector3, Euler } from '../runtime/three.js';\nimport { SyncedEuler } from './synced-euler.js';\nimport { SyncedQuaternion } from './synced-quaternion.js';\nimport { SyncedVector3 } from './synced-vector3.js';\nimport { Transform } from './transform-component.js';\n\nexport { Transform } from './transform-component.js';\n\nfunction attachToEntity(entity: Entity): void {\n const object3D = entity.object3D;\n if (!object3D) {\n return;\n }\n if ((object3D as any).__transformAttached) {\n return;\n }\n (object3D as any).__transformAttached = true;\n\n object3D.entityIdx = entity.index;\n object3D.positionView = entity.getVectorView(\n Transform,\n 'position',\n ) as Float32Array;\n object3D.quaternionView = entity.getVectorView(\n Transform,\n 'orientation',\n ) as Float32Array;\n object3D.scaleView = entity.getVectorView(Transform, 'scale') as Float32Array;\n\n // if component values contains NaN, keep original values instead\n if (object3D.positionView.some(Number.isNaN)) {\n object3D.position.toArray(object3D.positionView);\n }\n if (object3D.quaternionView.some(Number.isNaN)) {\n object3D.quaternion.toArray(object3D.quaternionView);\n }\n if (object3D.scaleView.some(Number.isNaN)) {\n object3D.scale.toArray(object3D.scaleView);\n }\n\n Object.defineProperty(object3D, 'position', {\n value: new SyncedVector3().setTarget(object3D.positionView),\n writable: false,\n configurable: true,\n enumerable: true,\n });\n\n const syncedQuat = new SyncedQuaternion().setTarget(object3D.quaternionView);\n\n Object.defineProperty(object3D, 'quaternion', {\n value: syncedQuat,\n writable: false,\n configurable: true,\n enumerable: true,\n });\n\n // Replace rotation with SyncedEuler that stays in sync with the quaternion\n Object.defineProperty(object3D, 'rotation', {\n value: new SyncedEuler()\n .copy(object3D.rotation)\n .setSyncedQuaternion(syncedQuat),\n writable: false,\n configurable: true,\n enumerable: true,\n });\n\n Object.defineProperty(object3D, 'scale', {\n value: new SyncedVector3().setTarget(object3D.scaleView),\n writable: false,\n configurable: true,\n enumerable: true,\n });\n\n object3D._parent = object3D.parent; // save original parent\n Object.defineProperty(object3D, 'parent', {\n get: () => {\n return object3D._parent;\n },\n set: (value) => {\n object3D._parent = value;\n Transform.data.parent[entity.index] = value?.entityIdx ?? NullEntity;\n },\n configurable: true,\n enumerable: true,\n });\n}\n\nfunction detachFromEntity(entity: Entity): void {\n const object3D = entity.object3D;\n if (!object3D) {\n return;\n }\n if (!(object3D as any).__transformAttached) {\n return;\n }\n\n delete object3D.entityIdx;\n delete object3D.positionView;\n delete object3D.quaternionView;\n delete object3D.scaleView;\n\n Object.defineProperty(object3D, 'position', {\n value: new Vector3().copy(object3D.position),\n writable: false,\n configurable: true,\n enumerable: true,\n });\n\n Object.defineProperty(object3D, 'quaternion', {\n value: new Quaternion().copy(object3D.quaternion),\n writable: false,\n configurable: true,\n enumerable: true,\n });\n\n Object.defineProperty(object3D, 'rotation', {\n value: new Euler().copy(object3D.rotation),\n writable: false,\n configurable: true,\n enumerable: true,\n });\n\n Object.defineProperty(object3D, 'scale', {\n value: new Vector3().copy(object3D.scale),\n writable: false,\n configurable: true,\n enumerable: true,\n });\n\n Object.defineProperty(object3D, 'parent', {\n value: object3D._parent,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n\n delete object3D._parent;\n delete (object3D as any).__transformAttached;\n}\n\n/**\n * Keeps Object3D and Transform component in sync and manages parenting.\n *\n * @remarks\n * - Replaces Object3D accessors with synced views for fast ECS writes.\n * - Ensures entities without an explicit `parent` attach to the level root\n * (or the scene for persistent objects).\n * - If an Object3D is manually reparented under another entity, the component\n * `parent` value is updated to match.\n *\n * @category Scene\n */\nexport class TransformSystem extends createSystem({\n transform: { required: [Transform] },\n}) {\n init(): void {\n this.queries.transform.subscribe('qualify', attachToEntity);\n this.queries.transform.subscribe('disqualify', detachFromEntity);\n }\n\n update(): void {\n this.queries.transform.entities.forEach((entity) => {\n const object = entity.object3D;\n if (!object || object === this.world.scene) {\n return;\n }\n const parentEntity = entity.getValue(Transform, 'parent');\n const parentObject = parentEntity?.object3D;\n\n if (!parentObject) {\n // no valid parent specified in Transform\n if (object.parent?.entityIdx !== undefined) {\n // check whether object is already parented under an entity, if so, update parent in Transform\n Transform.data.parent[entity.index] = object.parent.entityIdx;\n } else {\n // Default parent: active level if entity has LevelTag; otherwise scene (persistent)\n const targetEntity = entity.hasComponent(LevelTag)\n ? this.world.activeLevel.value\n : this.world.sceneEntity;\n console.warn(\n `Entity ${entity.index} is being parented under ${entity.hasComponent(LevelTag) ? 'active level root' : 'scene root'} by default because it doesn't have a valid parent entity.`,\n );\n targetEntity.object3D!.add(object);\n entity.setValue(Transform, 'parent', targetEntity);\n }\n } else if (parentObject !== object.parent) {\n // parent changed in Transform\n parentObject.add(object);\n }\n });\n }\n}\n"],"names":[],"mappings":"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"}