@relu-interactives/spatial-ecs 0.3.10 → 0.3.11

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 (38) hide show
  1. package/dist/{XRHandPose-CjacJ_16.d.ts → XRHandPose-B6I4y1lj.d.ts} +48 -14
  2. package/dist/{XRHandPose-hAtj9wm-.d.cts → XRHandPose-C-KJeYcJ.d.cts} +48 -14
  3. package/dist/{chunk-5UVBEAGW.js → chunk-FSHRPY65.js} +4 -4
  4. package/dist/{chunk-5UVBEAGW.js.map → chunk-FSHRPY65.js.map} +1 -1
  5. package/dist/{chunk-O2HSIZFC.js → chunk-KLU2M43M.js} +270 -33
  6. package/dist/chunk-KLU2M43M.js.map +1 -0
  7. package/dist/{chunk-ELSZ5U3F.js → chunk-TXEGYR76.js} +5 -4
  8. package/dist/chunk-TXEGYR76.js.map +1 -0
  9. package/dist/{chunk-NJOO7NO6.js → chunk-Y3AC3VZ2.js} +3 -3
  10. package/dist/{chunk-NJOO7NO6.js.map → chunk-Y3AC3VZ2.js.map} +1 -1
  11. package/dist/components/index.cjs +3 -2
  12. package/dist/components/index.cjs.map +1 -1
  13. package/dist/components/index.d.cts +2 -2
  14. package/dist/components/index.d.ts +2 -2
  15. package/dist/components/index.js +1 -1
  16. package/dist/docs/guide/vr-and-hand-poses.md +7 -3
  17. package/dist/factories/index.cjs +3 -2
  18. package/dist/factories/index.cjs.map +1 -1
  19. package/dist/factories/index.d.cts +1 -1
  20. package/dist/factories/index.d.ts +1 -1
  21. package/dist/factories/index.js +3 -3
  22. package/dist/{index-B-KhN8Ox.d.ts → index-Bi_wIo1o.d.ts} +56 -1
  23. package/dist/{index-B7JDsx4a.d.ts → index-CEZp7qLL.d.ts} +2 -3
  24. package/dist/{index-B9JqYr3Q.d.cts → index-DPRnnSI-.d.cts} +2 -3
  25. package/dist/{index-DU-CF-3m.d.cts → index-jlgDou9W.d.cts} +56 -1
  26. package/dist/index.cjs +270 -30
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +5 -5
  29. package/dist/index.d.ts +5 -5
  30. package/dist/index.js +8 -8
  31. package/dist/systems/index.cjs +270 -30
  32. package/dist/systems/index.cjs.map +1 -1
  33. package/dist/systems/index.d.cts +1 -1
  34. package/dist/systems/index.d.ts +1 -1
  35. package/dist/systems/index.js +3 -3
  36. package/package.json +1 -1
  37. package/dist/chunk-ELSZ5U3F.js.map +0 -1
  38. package/dist/chunk-O2HSIZFC.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { k as EcsSystem, C as Component, W as WorldEntityView, T as TransformComponent, l as World, S as SpawnPrefabSource, m as SpawnPrefabOptions, n as ComponentClass, o as ParentLookup, p as EcsEntityKind, O as ObjectManagementSystem, q as SubtreeSnapshot, r as EntityId, s as ExternalRefWarning } from './System-31wk-A0g.cjs';
2
2
  export { A as AssetInput, t as CheckboxInput, u as ColorInput, v as ComponentFactory, w as ComponentInput, x as ComponentKind, y as DropdownInput, z as DropdownOption, B as EcsComponentFactoryKind, F as EcsEntityEditorKind, G as EntityInput, H as FloatInput, I as InputSystem, J as IntersectionResult, K as KeyboardKey, L as KeyboardKeys, M as MouseButton, N as PREFAB_FILE_VERSION, Q as PREFAB_FILE_VERSION_NESTED, R as PrefabAsset, U as RemapSnapshotOptions, X as RenderSystem, Y as SelectionListener, Z as SliderInput, _ as TextInput, $ as ToggleInput, a0 as TransformSyncSystem, a1 as Vec3, a2 as Vector2Input, a3 as Vector3Input, a4 as clearPrefabCache, a5 as despawnPrefab, a6 as loadPrefab, a7 as parsePrefabAsset, a8 as prefabFileVersionFor, a9 as remapSnapshotEntityIds, aa as setPrefabAssetUrlResolver, ab as spawnPrefab } from './System-31wk-A0g.cjs';
3
3
  import * as THREE from 'three';
4
- import { O as Object3DRef, ao as XrHandPreset } from './XRHandPose-hAtj9wm-.cjs';
5
- export { aA as AnimationStateCallbacks, aB as AnimationStateMachine, aC as AnimationStateManager, aD as StateMachine } from './XRHandPose-hAtj9wm-.cjs';
6
- import { X as XrCapabilities, a as XrInputState, b as XrHandPoseEventDetail } from './index-DU-CF-3m.cjs';
7
- export { A as AnimationSystem, c as AudioSystem, C as CameraSyncSystem, E as EnvironmentSyncSystem, I as InstancedMeshSystem, L as LightSyncSystem, M as MaterialSyncSystem, d as MeshGeometrySystem, e as ModuleLoader, N as NO_XR_CAPABILITIES, O as ObjectVisibilitySystem, P as PhysicsSyncSystem, f as PostprocessingSyncSystem, S as SCRIPT_OBJECT_ROOT_FLAG, g as ScriptBehaviourSystem, h as ScriptObjectSystem, i as SelectionContext, V as VRTeleportAreaSystem, j as VideoSystem, k as XRControllerVisualSystem, l as XRHandPoseSystem, m as XRInputSystem, n as XRInteractionSystem, o as XRLocomotionSystem, p as XRSessionSystem, q as XRTeleportVisualSystem, r as XrHandedness, s as XrInputKind, t as readXrCapabilities } from './index-DU-CF-3m.cjs';
8
- export { i as CoreComponents } from './index-B9JqYr3Q.cjs';
4
+ import { O as Object3DRef, an as XrHandPreset } from './XRHandPose-C-KJeYcJ.cjs';
5
+ export { az as AnimationStateCallbacks, aA as AnimationStateMachine, aB as AnimationStateManager, aC as StateMachine } from './XRHandPose-C-KJeYcJ.cjs';
6
+ import { X as XrCapabilities, a as XrInputState, b as XrHandPoseEventDetail } from './index-jlgDou9W.cjs';
7
+ export { A as AnimationSystem, c as AudioSystem, C as CameraSyncSystem, E as EnvironmentSyncSystem, I as InstancedMeshSystem, L as LightSyncSystem, M as MaterialSyncSystem, d as MeshGeometrySystem, e as ModuleLoader, N as NO_XR_CAPABILITIES, O as ObjectVisibilitySystem, P as PhysicsSyncSystem, f as PostprocessingSyncSystem, S as SCRIPT_OBJECT_ROOT_FLAG, g as ScriptBehaviourSystem, h as ScriptObjectSystem, i as SelectionContext, V as VRTeleportAreaSystem, j as VideoSystem, k as XRControllerVisualSystem, l as XRHandPoseSystem, m as XRHoverVisualSystem, n as XRInputSystem, o as XRInteractionSystem, p as XRLocomotionSystem, q as XRSessionSystem, r as XRTeleportVisualSystem, s as XR_HOVER_SHELL_FLAG, t as XrHandedness, u as XrInputKind, v as readXrCapabilities } from './index-jlgDou9W.cjs';
8
+ export { i as CoreComponents } from './index-DPRnnSI-.cjs';
9
9
  export { createAnimationComponent, createAudioComponent, createCameraComponent, createEntityTypeComponent, createEnvironmentComponent, createImageComponent, createImageTargetAnchorComponent, createImageTargetComponent, createInstanceSlotComponent, createInstancedMeshComponent, createLightComponent, createMaterialComponent, createMeshComponent, createMeshGeometryComponent, createModelComponent, createNameComponent, createObject3DRefComponent, createParentIdComponent, createPhysicsComponent, createPostprocessingComponent, createScriptComponent, createScriptObjectComponent, createSelectableComponent, createSelectionTransformStateComponent, createSpriteComponent, createTransformComponent, createVRTeleportAreaComponent, createVideoComponent, createXRHandPoseComponent, createXRInteractableComponent, createXRInteractorComponent, createXRInteractorSideComponent, createXRRigComponent, registerDefaultComponentFactories, registerDefaultFactories } from './factories/index.cjs';
10
10
  import { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';
11
11
  import { X as XrHandPoseDefinition, a as XrFinger, b as XrHandPoseOrientation } from './handPose-dFxqbFFY.cjs';
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { k as EcsSystem, C as Component, W as WorldEntityView, T as TransformComponent, l as World, S as SpawnPrefabSource, m as SpawnPrefabOptions, n as ComponentClass, o as ParentLookup, p as EcsEntityKind, O as ObjectManagementSystem, q as SubtreeSnapshot, r as EntityId, s as ExternalRefWarning } from './System-31wk-A0g.js';
2
2
  export { A as AssetInput, t as CheckboxInput, u as ColorInput, v as ComponentFactory, w as ComponentInput, x as ComponentKind, y as DropdownInput, z as DropdownOption, B as EcsComponentFactoryKind, F as EcsEntityEditorKind, G as EntityInput, H as FloatInput, I as InputSystem, J as IntersectionResult, K as KeyboardKey, L as KeyboardKeys, M as MouseButton, N as PREFAB_FILE_VERSION, Q as PREFAB_FILE_VERSION_NESTED, R as PrefabAsset, U as RemapSnapshotOptions, X as RenderSystem, Y as SelectionListener, Z as SliderInput, _ as TextInput, $ as ToggleInput, a0 as TransformSyncSystem, a1 as Vec3, a2 as Vector2Input, a3 as Vector3Input, a4 as clearPrefabCache, a5 as despawnPrefab, a6 as loadPrefab, a7 as parsePrefabAsset, a8 as prefabFileVersionFor, a9 as remapSnapshotEntityIds, aa as setPrefabAssetUrlResolver, ab as spawnPrefab } from './System-31wk-A0g.js';
3
3
  import * as THREE from 'three';
4
- import { O as Object3DRef, ao as XrHandPreset } from './XRHandPose-CjacJ_16.js';
5
- export { aA as AnimationStateCallbacks, aB as AnimationStateMachine, aC as AnimationStateManager, aD as StateMachine } from './XRHandPose-CjacJ_16.js';
6
- import { X as XrCapabilities, a as XrInputState, b as XrHandPoseEventDetail } from './index-B-KhN8Ox.js';
7
- export { A as AnimationSystem, c as AudioSystem, C as CameraSyncSystem, E as EnvironmentSyncSystem, I as InstancedMeshSystem, L as LightSyncSystem, M as MaterialSyncSystem, d as MeshGeometrySystem, e as ModuleLoader, N as NO_XR_CAPABILITIES, O as ObjectVisibilitySystem, P as PhysicsSyncSystem, f as PostprocessingSyncSystem, S as SCRIPT_OBJECT_ROOT_FLAG, g as ScriptBehaviourSystem, h as ScriptObjectSystem, i as SelectionContext, V as VRTeleportAreaSystem, j as VideoSystem, k as XRControllerVisualSystem, l as XRHandPoseSystem, m as XRInputSystem, n as XRInteractionSystem, o as XRLocomotionSystem, p as XRSessionSystem, q as XRTeleportVisualSystem, r as XrHandedness, s as XrInputKind, t as readXrCapabilities } from './index-B-KhN8Ox.js';
8
- export { i as CoreComponents } from './index-B7JDsx4a.js';
4
+ import { O as Object3DRef, an as XrHandPreset } from './XRHandPose-B6I4y1lj.js';
5
+ export { az as AnimationStateCallbacks, aA as AnimationStateMachine, aB as AnimationStateManager, aC as StateMachine } from './XRHandPose-B6I4y1lj.js';
6
+ import { X as XrCapabilities, a as XrInputState, b as XrHandPoseEventDetail } from './index-Bi_wIo1o.js';
7
+ export { A as AnimationSystem, c as AudioSystem, C as CameraSyncSystem, E as EnvironmentSyncSystem, I as InstancedMeshSystem, L as LightSyncSystem, M as MaterialSyncSystem, d as MeshGeometrySystem, e as ModuleLoader, N as NO_XR_CAPABILITIES, O as ObjectVisibilitySystem, P as PhysicsSyncSystem, f as PostprocessingSyncSystem, S as SCRIPT_OBJECT_ROOT_FLAG, g as ScriptBehaviourSystem, h as ScriptObjectSystem, i as SelectionContext, V as VRTeleportAreaSystem, j as VideoSystem, k as XRControllerVisualSystem, l as XRHandPoseSystem, m as XRHoverVisualSystem, n as XRInputSystem, o as XRInteractionSystem, p as XRLocomotionSystem, q as XRSessionSystem, r as XRTeleportVisualSystem, s as XR_HOVER_SHELL_FLAG, t as XrHandedness, u as XrInputKind, v as readXrCapabilities } from './index-Bi_wIo1o.js';
8
+ export { i as CoreComponents } from './index-CEZp7qLL.js';
9
9
  export { createAnimationComponent, createAudioComponent, createCameraComponent, createEntityTypeComponent, createEnvironmentComponent, createImageComponent, createImageTargetAnchorComponent, createImageTargetComponent, createInstanceSlotComponent, createInstancedMeshComponent, createLightComponent, createMaterialComponent, createMeshComponent, createMeshGeometryComponent, createModelComponent, createNameComponent, createObject3DRefComponent, createParentIdComponent, createPhysicsComponent, createPostprocessingComponent, createScriptComponent, createScriptObjectComponent, createSelectableComponent, createSelectionTransformStateComponent, createSpriteComponent, createTransformComponent, createVRTeleportAreaComponent, createVideoComponent, createXRHandPoseComponent, createXRInteractableComponent, createXRInteractorComponent, createXRInteractorSideComponent, createXRRigComponent, registerDefaultComponentFactories, registerDefaultFactories } from './factories/index.js';
10
10
  import { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';
11
11
  import { X as XrHandPoseDefinition, a as XrFinger, b as XrHandPoseOrientation } from './handPose-dFxqbFFY.js';
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import { MeshGeometrySystem, InstancedMeshSystem, EnvironmentSyncSystem, PostprocessingSyncSystem, LightSyncSystem, MaterialSyncSystem, VRTeleportAreaSystem, PhysicsSyncSystem, AnimationSystem, AudioSystem, VideoSystem, CameraSyncSystem, TransformSyncSystem, ObjectVisibilitySystem, RenderSystem, spawnPrefab, despawnPrefab, buildNodeKeyMapsFromSnapshot, indexSnapshotByEntity, findTopLevelNestedRegions, collectSnapshotSubtreeIds, groupOverridePaths, OVERRIDE_DIFF_EXCLUDED_COMPONENTS, OVERRIDE_ROOT_EXCLUDED_COMPONENTS, canonicalizeComponentValue, mergeComponentValue, decanonicalizeComponentValue, computeInstanceOverrides, collectEntitySubtree, ADDED_NODE_MARKER_COMPONENT } from './chunk-O2HSIZFC.js';
2
- export { ADDED_NODE_MARKER_COMPONENT, ARC_GRAVITY, ARC_MAX_TIME, ARC_SPEED, ARC_STEPS, AnimationSystem, AudioSystem, Behaviour, CURLED_COS, CameraSyncSystem, DEFAULT_ENTER_CONFIDENCE, DEFAULT_EXIT_CONFIDENCE, DEFAULT_LOST_GRACE_SECONDS, DEFAULT_MIN_HOLD_SECONDS, EnvironmentSyncSystem, FALLBACK_HAND_SCALE, HYDRATABLE_ENTITY_KINDS, HandPoseTracker, InputSystem, InstancedMeshSystem, KeyboardKeys, LightSyncSystem, MATCH_FALLOFF, MAX_PLAUSIBLE_SPEED, MAX_SAMPLE_AGE_SECONDS, MaterialSyncSystem, MeshGeometrySystem, NODE_KEY_SEPARATOR, NO_XR_CAPABILITIES, OVERRIDE_DIFF_EXCLUDED_COMPONENTS, OVERRIDE_ROOT_EXCLUDED_COMPONENTS, ObjectVisibilitySystem, PINCH_FINGERS, PREFAB_FILE_VERSION, PREFAB_FILE_VERSION_NESTED, PhysicsSyncSystem, PostprocessingSyncSystem, RenderSystem, SCRIPT_OBJECT_ROOT_FLAG, STRAIGHT_COS, ScriptBehaviourSystem, ScriptObject, ScriptObjectSystem, ThrowVelocityTracker, TransformSyncSystem, VELOCITY_SAMPLES, VRTeleportAreaSystem, VideoSystem, XRControllerVisualSystem, XRHandPoseSystem, XRInputSystem, XRInteractionSystem, XRLocomotionSystem, XRSessionSystem, XRTeleportVisualSystem, XR_FINGERS, angularVelocityFrom, applyHandMaterial, arcGroundCrossing, buildComponentValueMaps, buildNodeKeyMapsFromSnapshot, buildNodeMapsFromSnapshot, canonicalizeComponentValue, clearPrefabCache, collectDiffPaths, collectEntitySubtree, collectSnapshotSubtreeIds, computeFingerCurl, computeHandShape, computeInstanceOverrides, computePalmPose, computePalmWidth, computePinch, computeSpread, createHandMaterial, decanonicalizeComponentValue, despawnPrefab, encodeOverride, estimateHandScale, findSnapshotRootEntityIds, findTopLevelNestedRegions, groupOverridePaths, hydrateWorldFromSnapshot, hydrateWorldFromSnapshotDetailed, indexSnapshotByEntity, instantiateSubtree, loadPrefab, matchHandPose, mergeComponentValue, parseOverride, parsePrefabAsset, prefabFileVersionFor, readXrCapabilities, restoreComponentState, restorePostCreateComponents, sampleTeleportArc, setPrefabAssetUrlResolver, spawnPrefab } from './chunk-O2HSIZFC.js';
3
- import { registerDefaultFactories } from './chunk-5UVBEAGW.js';
4
- export { createAnimationComponent, createAudioComponent, createCameraComponent, createEntityTypeComponent, createEnvironmentComponent, createImageComponent, createImageTargetAnchorComponent, createImageTargetComponent, createInstanceSlotComponent, createInstancedMeshComponent, createLightComponent, createMaterialComponent, createMeshComponent, createMeshGeometryComponent, createModelComponent, createNameComponent, createObject3DRefComponent, createParentIdComponent, createPhysicsComponent, createPostprocessingComponent, createScriptComponent, createScriptObjectComponent, createSelectableComponent, createSelectionTransformStateComponent, createSpriteComponent, createTransformComponent, createVRTeleportAreaComponent, createVideoComponent, createXRHandPoseComponent, createXRInteractableComponent, createXRInteractorComponent, createXRInteractorSideComponent, createXRRigComponent, registerDefaultComponentFactories, registerDefaultFactories } from './chunk-5UVBEAGW.js';
5
- import { ObjectManagementSystem } from './chunk-NJOO7NO6.js';
6
- export { ObjectManagementSystem, SHARED_MODEL_RESOURCE_FLAG, clearModelCache, loadSharedGltf, resolveDracoDecoderPath, setDracoDecoderPath } from './chunk-NJOO7NO6.js';
7
- import { SelectionTransformState, Object3DRef, Name, EntityType, ParentId, Environment, Postprocessing, ScriptComponent } from './chunk-ELSZ5U3F.js';
8
- export { AnimationStateMachine, AnimationStateManager, components_exports as CoreComponents, HAND_POSE_PRESETS, HAND_POSE_PRESET_IDS, cloneHandPose, getHandPosePreset, handPoseFromCurls } from './chunk-ELSZ5U3F.js';
1
+ import { MeshGeometrySystem, InstancedMeshSystem, EnvironmentSyncSystem, PostprocessingSyncSystem, LightSyncSystem, MaterialSyncSystem, VRTeleportAreaSystem, PhysicsSyncSystem, AnimationSystem, AudioSystem, VideoSystem, CameraSyncSystem, TransformSyncSystem, ObjectVisibilitySystem, RenderSystem, spawnPrefab, despawnPrefab, buildNodeKeyMapsFromSnapshot, indexSnapshotByEntity, findTopLevelNestedRegions, collectSnapshotSubtreeIds, groupOverridePaths, OVERRIDE_DIFF_EXCLUDED_COMPONENTS, OVERRIDE_ROOT_EXCLUDED_COMPONENTS, canonicalizeComponentValue, mergeComponentValue, decanonicalizeComponentValue, computeInstanceOverrides, collectEntitySubtree, ADDED_NODE_MARKER_COMPONENT } from './chunk-KLU2M43M.js';
2
+ export { ADDED_NODE_MARKER_COMPONENT, ARC_GRAVITY, ARC_MAX_TIME, ARC_SPEED, ARC_STEPS, AnimationSystem, AudioSystem, Behaviour, CURLED_COS, CameraSyncSystem, DEFAULT_ENTER_CONFIDENCE, DEFAULT_EXIT_CONFIDENCE, DEFAULT_LOST_GRACE_SECONDS, DEFAULT_MIN_HOLD_SECONDS, EnvironmentSyncSystem, FALLBACK_HAND_SCALE, HYDRATABLE_ENTITY_KINDS, HandPoseTracker, InputSystem, InstancedMeshSystem, KeyboardKeys, LightSyncSystem, MATCH_FALLOFF, MAX_PLAUSIBLE_SPEED, MAX_SAMPLE_AGE_SECONDS, MaterialSyncSystem, MeshGeometrySystem, NODE_KEY_SEPARATOR, NO_XR_CAPABILITIES, OVERRIDE_DIFF_EXCLUDED_COMPONENTS, OVERRIDE_ROOT_EXCLUDED_COMPONENTS, ObjectVisibilitySystem, PINCH_FINGERS, PREFAB_FILE_VERSION, PREFAB_FILE_VERSION_NESTED, PhysicsSyncSystem, PostprocessingSyncSystem, RenderSystem, SCRIPT_OBJECT_ROOT_FLAG, STRAIGHT_COS, ScriptBehaviourSystem, ScriptObject, ScriptObjectSystem, ThrowVelocityTracker, TransformSyncSystem, VELOCITY_SAMPLES, VRTeleportAreaSystem, VideoSystem, XRControllerVisualSystem, XRHandPoseSystem, XRHoverVisualSystem, XRInputSystem, XRInteractionSystem, XRLocomotionSystem, XRSessionSystem, XRTeleportVisualSystem, XR_FINGERS, XR_HOVER_SHELL_FLAG, angularVelocityFrom, applyHandMaterial, arcGroundCrossing, buildComponentValueMaps, buildNodeKeyMapsFromSnapshot, buildNodeMapsFromSnapshot, canonicalizeComponentValue, clearPrefabCache, collectDiffPaths, collectEntitySubtree, collectSnapshotSubtreeIds, computeFingerCurl, computeHandShape, computeInstanceOverrides, computePalmPose, computePalmWidth, computePinch, computeSpread, createHandMaterial, decanonicalizeComponentValue, despawnPrefab, encodeOverride, estimateHandScale, findSnapshotRootEntityIds, findTopLevelNestedRegions, groupOverridePaths, hydrateWorldFromSnapshot, hydrateWorldFromSnapshotDetailed, indexSnapshotByEntity, instantiateSubtree, loadPrefab, matchHandPose, mergeComponentValue, parseOverride, parsePrefabAsset, prefabFileVersionFor, readXrCapabilities, restoreComponentState, restorePostCreateComponents, sampleTeleportArc, setPrefabAssetUrlResolver, spawnPrefab } from './chunk-KLU2M43M.js';
3
+ import { registerDefaultFactories } from './chunk-FSHRPY65.js';
4
+ export { createAnimationComponent, createAudioComponent, createCameraComponent, createEntityTypeComponent, createEnvironmentComponent, createImageComponent, createImageTargetAnchorComponent, createImageTargetComponent, createInstanceSlotComponent, createInstancedMeshComponent, createLightComponent, createMaterialComponent, createMeshComponent, createMeshGeometryComponent, createModelComponent, createNameComponent, createObject3DRefComponent, createParentIdComponent, createPhysicsComponent, createPostprocessingComponent, createScriptComponent, createScriptObjectComponent, createSelectableComponent, createSelectionTransformStateComponent, createSpriteComponent, createTransformComponent, createVRTeleportAreaComponent, createVideoComponent, createXRHandPoseComponent, createXRInteractableComponent, createXRInteractorComponent, createXRInteractorSideComponent, createXRRigComponent, registerDefaultComponentFactories, registerDefaultFactories } from './chunk-FSHRPY65.js';
5
+ import { ObjectManagementSystem } from './chunk-Y3AC3VZ2.js';
6
+ export { ObjectManagementSystem, SHARED_MODEL_RESOURCE_FLAG, clearModelCache, loadSharedGltf, resolveDracoDecoderPath, setDracoDecoderPath } from './chunk-Y3AC3VZ2.js';
7
+ import { SelectionTransformState, Object3DRef, Name, EntityType, ParentId, Environment, Postprocessing, ScriptComponent } from './chunk-TXEGYR76.js';
8
+ export { AnimationStateMachine, AnimationStateManager, components_exports as CoreComponents, HAND_POSE_PRESETS, HAND_POSE_PRESET_IDS, cloneHandPose, getHandPosePreset, handPoseFromCurls } from './chunk-TXEGYR76.js';
9
9
  import './chunk-QHILSPT4.js';
10
10
  import { normalizeDebugValue, DEBUG_CHANGE_IGNORED_SYSTEMS, cloneHistoryValue } from './chunk-OWQSESTO.js';
11
11
  import { __name } from './chunk-OY7ZODZP.js';
@@ -2098,7 +2098,6 @@ var _XRInteractableComponent = class _XRInteractableComponent extends Component
2098
2098
  this.enabled = options?.enabled ?? true;
2099
2099
  this.grabbable = options?.grabbable ?? true;
2100
2100
  this.pointable = options?.pointable ?? true;
2101
- this.grabMode = options?.grabMode ?? "kinematic";
2102
2101
  this.grabReach = options?.grabReach ?? "both";
2103
2102
  this.distanceBehavior = options?.distanceBehavior ?? "snap";
2104
2103
  this.grabGesture = options?.grabGesture ?? "any";
@@ -2123,7 +2122,9 @@ var _XRInteractableComponent = class _XRInteractableComponent extends Component
2123
2122
  );
2124
2123
  this.throwOnRelease = options?.throwOnRelease ?? true;
2125
2124
  this.throwStrength = options?.throwStrength ?? 1;
2126
- this.highlightOnHover = options?.highlightOnHover ?? true;
2125
+ this.hoverBehavior = options?.hoverBehavior ?? "color";
2126
+ this.hoverColor = options?.hoverColor ?? "#4da3ff";
2127
+ this.hoverScale = options?.hoverScale ?? 1.06;
2127
2128
  }
2128
2129
  };
2129
2130
  __name(_XRInteractableComponent, "XRInteractableComponent");
@@ -3285,6 +3286,20 @@ var _PostprocessingSyncSystem = class _PostprocessingSyncSystem {
3285
3286
  __name(_PostprocessingSyncSystem, "PostprocessingSyncSystem");
3286
3287
  var PostprocessingSyncSystem = _PostprocessingSyncSystem;
3287
3288
  var MIN_SIZE = 1e-4;
3289
+ function toBodyType(RAPIER, bodyType) {
3290
+ switch (bodyType) {
3291
+ case "fixed":
3292
+ return RAPIER.RigidBodyType.Fixed;
3293
+ case "kinematicPosition":
3294
+ return RAPIER.RigidBodyType.KinematicPositionBased;
3295
+ case "kinematicVelocity":
3296
+ return RAPIER.RigidBodyType.KinematicVelocityBased;
3297
+ case "dynamic":
3298
+ default:
3299
+ return RAPIER.RigidBodyType.Dynamic;
3300
+ }
3301
+ }
3302
+ __name(toBodyType, "toBodyType");
3288
3303
  function createRigidBodyDesc(RAPIER, bodyType) {
3289
3304
  if (bodyType === "fixed") {
3290
3305
  return RAPIER.RigidBodyDesc.fixed();
@@ -3583,7 +3598,8 @@ var _PhysicsSyncSystem = class _PhysicsSyncSystem {
3583
3598
  setPhysicsLiveRef(physics, "collider", null);
3584
3599
  continue;
3585
3600
  }
3586
- const rigidBodySignature = JSON.stringify(physics.values.rigidbody);
3601
+ const { type: _desiredBodyType, ...rigidBodyRebuildValues } = physics.values.rigidbody;
3602
+ const rigidBodySignature = JSON.stringify(rigidBodyRebuildValues);
3587
3603
  const previousRigidBodySignature = this.rigidBodySignatures.get(entityId);
3588
3604
  const hasRigidBody = this.rigidBodyHandles.has(entityId);
3589
3605
  const shouldRecreateBody = !hasRigidBody || previousRigidBodySignature !== rigidBodySignature;
@@ -3638,6 +3654,25 @@ var _PhysicsSyncSystem = class _PhysicsSyncSystem {
3638
3654
  continue;
3639
3655
  }
3640
3656
  setPhysicsLiveRef(physics, "rigidBody", body);
3657
+ const desiredBodyType = this.isEditorMode ? "fixed" : physics.values.rigidbody.type;
3658
+ const desiredRapierType = toBodyType(this.rapier, desiredBodyType);
3659
+ if (body.bodyType() !== desiredRapierType) {
3660
+ body.setBodyType(desiredRapierType, true);
3661
+ if (!this.isEditorMode && desiredBodyType === "dynamic") {
3662
+ body.setAdditionalMass(physics.values.rigidbody.mass, true);
3663
+ }
3664
+ }
3665
+ const pending = physics.pendingVelocity;
3666
+ if (pending) {
3667
+ setPhysicsLiveRef(physics, "pendingVelocity", null);
3668
+ if (!this.isEditorMode && desiredBodyType === "dynamic") {
3669
+ try {
3670
+ body.setLinvel(pending.linear, true);
3671
+ body.setAngvel(pending.angular, true);
3672
+ } catch {
3673
+ }
3674
+ }
3675
+ }
3641
3676
  if (this.isEditorMode || physics.values.rigidbody.type !== "dynamic") {
3642
3677
  syncBodyFromTransform(body, transform);
3643
3678
  }
@@ -5365,9 +5400,6 @@ function restorePostCreateComponents(world, objectManagementSystem, targetEntity
5365
5400
  if (typeof sourceInteractable.pointable === "boolean") {
5366
5401
  interactable.pointable = sourceInteractable.pointable;
5367
5402
  }
5368
- if (typeof sourceInteractable.grabMode === "string") {
5369
- interactable.grabMode = sourceInteractable.grabMode;
5370
- }
5371
5403
  if (typeof sourceInteractable.grabReach === "string") {
5372
5404
  interactable.grabReach = sourceInteractable.grabReach;
5373
5405
  }
@@ -5426,8 +5458,16 @@ function restorePostCreateComponents(world, objectManagementSystem, targetEntity
5426
5458
  z: typeof grabRot.z === "number" ? grabRot.z : 0
5427
5459
  };
5428
5460
  }
5429
- if (typeof sourceInteractable.highlightOnHover === "boolean") {
5430
- interactable.highlightOnHover = sourceInteractable.highlightOnHover;
5461
+ if (typeof sourceInteractable.hoverBehavior === "string") {
5462
+ interactable.hoverBehavior = sourceInteractable.hoverBehavior;
5463
+ } else if (sourceInteractable.highlightOnHover === false) {
5464
+ interactable.hoverBehavior = "none";
5465
+ }
5466
+ if (typeof sourceInteractable.hoverColor === "string") {
5467
+ interactable.hoverColor = sourceInteractable.hoverColor;
5468
+ }
5469
+ if (typeof sourceInteractable.hoverScale === "number") {
5470
+ interactable.hoverScale = sourceInteractable.hoverScale;
5431
5471
  }
5432
5472
  }
5433
5473
  }
@@ -8378,6 +8418,8 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8378
8418
  this.raycaster = new THREE26__namespace.Raycaster();
8379
8419
  this.grabs = /* @__PURE__ */ new Map();
8380
8420
  this.hoveredEntityId = null;
8421
+ /** Per-hand hover, with the hit distance so the ray can stop at the surface. */
8422
+ this.hovers = /* @__PURE__ */ new Map();
8381
8423
  /** Monotonic seconds, accumulated from deltaTime for velocity sampling. */
8382
8424
  this.elapsed = 0;
8383
8425
  this.inputSystem = inputSystem;
@@ -8391,6 +8433,7 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8391
8433
  const inputs = this.inputSystem.getInputs();
8392
8434
  const interactables = this.collectInteractables(world);
8393
8435
  this.hoveredEntityId = null;
8436
+ this.hovers.clear();
8394
8437
  for (const input of inputs) {
8395
8438
  if (!input.connected) {
8396
8439
  this.release(world, input);
@@ -8408,6 +8451,10 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8408
8451
  if (this.hoveredEntityId === null) {
8409
8452
  this.hoveredEntityId = candidate.entityId;
8410
8453
  }
8454
+ this.hovers.set(input, {
8455
+ entityId: candidate.entityId,
8456
+ distance: candidate.distance
8457
+ });
8411
8458
  const interactable = world.getComponent(
8412
8459
  candidate.entityId,
8413
8460
  XRInteractableComponent
@@ -8480,7 +8527,7 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8480
8527
  transform.position.x - hand.x,
8481
8528
  transform.position.y - hand.y,
8482
8529
  transform.position.z - hand.z
8483
- );
8530
+ ).applyQuaternion(handQuaternion.clone().invert());
8484
8531
  record.handRotationOffset = handQuaternion.clone().invert().multiply(objectQuaternion);
8485
8532
  record.remote = false;
8486
8533
  record.tracker.clear();
@@ -8591,13 +8638,22 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8591
8638
  }
8592
8639
  }
8593
8640
  if (nearestId !== null) {
8594
- return { entityId: nearestId, viaDistance: false };
8641
+ return {
8642
+ entityId: nearestId,
8643
+ viaDistance: false,
8644
+ distance: nearestDistance
8645
+ };
8595
8646
  }
8596
- const hitId = this.raycast(input, interactables);
8597
- if (hitId === null) return null;
8647
+ const hit = this.raycast(input, interactables);
8648
+ if (hit === null) return null;
8649
+ const hitId = hit.entityId;
8598
8650
  const interactable = world.getComponent(hitId, XRInteractableComponent);
8599
8651
  const viaDistanceAllowed = interactable?.grabReach === "distance" || interactable?.grabReach === "both";
8600
- return { entityId: hitId, viaDistance: viaDistanceAllowed };
8652
+ return {
8653
+ entityId: hitId,
8654
+ viaDistance: viaDistanceAllowed,
8655
+ distance: hit.distance
8656
+ };
8601
8657
  }
8602
8658
  collectInteractables(world) {
8603
8659
  const out = [];
@@ -8628,7 +8684,7 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8628
8684
  nearestId = entry.entityId;
8629
8685
  }
8630
8686
  }
8631
- return nearestId;
8687
+ return nearestId === null ? null : { entityId: nearestId, distance: nearestDistance };
8632
8688
  }
8633
8689
  /**
8634
8690
  * Pick the authored hold this hand should take.
@@ -8703,7 +8759,7 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8703
8759
  transform.position.x - hand.x,
8704
8760
  transform.position.y - hand.y,
8705
8761
  transform.position.z - hand.z
8706
- );
8762
+ ).applyQuaternion(handQuaternion.clone().invert());
8707
8763
  }
8708
8764
  const physics = world.getComponent(entityId, PhysicsComponent);
8709
8765
  let restoreBodyType = null;
@@ -8838,9 +8894,10 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8838
8894
  transform.position.z = hand.z - anchor.z;
8839
8895
  writeEuler(transform.rotation, objectQuaternion);
8840
8896
  } else {
8841
- transform.position.x = hand.x + held.offset.x;
8842
- transform.position.y = hand.y + held.offset.y;
8843
- transform.position.z = hand.z + held.offset.z;
8897
+ const carried = held.offset.clone().applyQuaternion(handQuaternion);
8898
+ transform.position.x = hand.x + carried.x;
8899
+ transform.position.y = hand.y + carried.y;
8900
+ transform.position.z = hand.z + carried.z;
8844
8901
  writeEuler(transform.rotation, objectQuaternion);
8845
8902
  }
8846
8903
  held.tracker.record(
@@ -8893,19 +8950,14 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8893
8950
  const physics = world.getComponent(held.entityId, PhysicsComponent);
8894
8951
  if (held.restoreBodyType !== null && physics) {
8895
8952
  physics.values.rigidbody.type = held.restoreBodyType;
8896
- const body = physics.rigidBody;
8897
8953
  const dynamic = held.restoreBodyType === "dynamic";
8898
- if (body && dynamic && interactable?.throwOnRelease) {
8954
+ if (dynamic && interactable?.throwOnRelease) {
8899
8955
  const velocity = held.tracker.computeVelocity(this.elapsed).multiplyScalar(interactable.throwStrength);
8900
- try {
8901
- body.setLinvel(
8902
- { x: velocity.x, y: velocity.y, z: velocity.z },
8903
- true
8904
- );
8905
- const spin = held.angularVelocity;
8906
- body.setAngvel({ x: spin.x, y: spin.y, z: spin.z }, true);
8907
- } catch {
8908
- }
8956
+ const spin = held.angularVelocity;
8957
+ setPhysicsLiveRef(physics, "pendingVelocity", {
8958
+ linear: { x: velocity.x, y: velocity.y, z: velocity.z },
8959
+ angular: { x: spin.x, y: spin.y, z: spin.z }
8960
+ });
8909
8961
  }
8910
8962
  }
8911
8963
  held.tracker.clear();
@@ -8953,6 +9005,30 @@ var _XRInteractionSystem = class _XRInteractionSystem {
8953
9005
  getHoveredEntityId() {
8954
9006
  return this.hoveredEntityId;
8955
9007
  }
9008
+ /**
9009
+ * What this hand is pointing at, with the distance to it.
9010
+ *
9011
+ * The distance is what lets the pointer ray stop at the surface instead of
9012
+ * passing through the object.
9013
+ */
9014
+ getHoverFor(handedness) {
9015
+ for (const [input, hover] of this.hovers) {
9016
+ if (input.handedness === handedness) return hover;
9017
+ }
9018
+ return null;
9019
+ }
9020
+ /** Every entity under a pointer this frame — drives hover feedback. */
9021
+ getHoveredEntityIds() {
9022
+ const ids = /* @__PURE__ */ new Set();
9023
+ for (const hover of this.hovers.values()) ids.add(hover.entityId);
9024
+ return ids;
9025
+ }
9026
+ /** Entities currently held, so hover feedback can skip them. */
9027
+ getHeldEntityIds() {
9028
+ const ids = /* @__PURE__ */ new Set();
9029
+ for (const record of this.grabs.values()) ids.add(record.entityId);
9030
+ return ids;
9031
+ }
8956
9032
  /** True when any source is holding something. */
8957
9033
  isGrabbing() {
8958
9034
  return this.grabs.size > 0;
@@ -9500,6 +9576,9 @@ function applyHandMaterial(root, material) {
9500
9576
  });
9501
9577
  }
9502
9578
  __name(applyHandMaterial, "applyHandMaterial");
9579
+
9580
+ // core/systems/XRControllerVisualSystem.ts
9581
+ var RAY_LENGTH = 5;
9503
9582
  var SLOTS = [
9504
9583
  { index: 0, side: "left" },
9505
9584
  { index: 1, side: "right" }
@@ -9538,6 +9617,7 @@ var _XRControllerVisualSystem = class _XRControllerVisualSystem {
9538
9617
  visuals.controllerModel.visible = showControllers && hasController;
9539
9618
  visuals.handModel.visible = showHands && hasHand;
9540
9619
  visuals.ray.visible = this.shouldShowRay(interactor);
9620
+ this.fitRayToHover(visuals.ray, side);
9541
9621
  if (showHands && this.handMaterial) {
9542
9622
  applyHandMaterial(visuals.handModel, this.handMaterial);
9543
9623
  }
@@ -9618,6 +9698,18 @@ var _XRControllerVisualSystem = class _XRControllerVisualSystem {
9618
9698
  if (!this.interactionSystem) return true;
9619
9699
  return this.interactionSystem.getHoveredEntityId() !== null || this.interactionSystem.isGrabbing();
9620
9700
  }
9701
+ /**
9702
+ * Stop the ray at whatever it is pointing at.
9703
+ *
9704
+ * A fixed-length ray drawn with depth testing off punches straight through the
9705
+ * object, so the user cannot tell where the pointer actually lands. Scaling it
9706
+ * to the hit distance turns it into a pointer that meets the surface.
9707
+ */
9708
+ fitRayToHover(ray, side) {
9709
+ const hover = this.interactionSystem?.getHoverFor(side) ?? null;
9710
+ const length = hover && Number.isFinite(hover.distance) && hover.distance > 0 ? Math.min(hover.distance, RAY_LENGTH) : RAY_LENGTH;
9711
+ ray.scale.z = length / RAY_LENGTH;
9712
+ }
9621
9713
  /** Lazily build per-slot visuals; the device reports profiles late. */
9622
9714
  ensureSlots(world) {
9623
9715
  const renderer = world.getRenderer();
@@ -9659,7 +9751,7 @@ var _XRControllerVisualSystem = class _XRControllerVisualSystem {
9659
9751
  createRay() {
9660
9752
  const geometry = new THREE26__namespace.BufferGeometry().setFromPoints([
9661
9753
  new THREE26__namespace.Vector3(0, 0, 0),
9662
- new THREE26__namespace.Vector3(0, 0, -5)
9754
+ new THREE26__namespace.Vector3(0, 0, -RAY_LENGTH)
9663
9755
  ]);
9664
9756
  const material = new THREE26__namespace.LineBasicMaterial({
9665
9757
  color: "#4da3ff",
@@ -10322,6 +10414,152 @@ var _XRHandPoseSystem = class _XRHandPoseSystem {
10322
10414
  };
10323
10415
  __name(_XRHandPoseSystem, "XRHandPoseSystem");
10324
10416
  var XRHandPoseSystem = _XRHandPoseSystem;
10417
+ var XR_HOVER_SHELL_FLAG = "__xrHoverShell";
10418
+ var SHELL_INFLATE = 1.04;
10419
+ var SCALE_SMOOTH_SECONDS = 0.09;
10420
+ var _XRHoverVisualSystem = class _XRHoverVisualSystem {
10421
+ constructor(interactionSystem) {
10422
+ this.records = /* @__PURE__ */ new Map();
10423
+ this.interactionSystem = interactionSystem;
10424
+ }
10425
+ update(world, deltaTime) {
10426
+ if (!world.isXrPresenting()) {
10427
+ this.clearAll(world);
10428
+ return;
10429
+ }
10430
+ const hovered = this.interactionSystem.getHoveredEntityIds();
10431
+ const held = this.interactionSystem.getHeldEntityIds();
10432
+ for (const entityId of hovered) {
10433
+ if (held.has(entityId)) continue;
10434
+ const interactable = world.getComponent(entityId, XRInteractableComponent);
10435
+ if (!interactable?.enabled) continue;
10436
+ if (interactable.hoverBehavior === "none") continue;
10437
+ this.begin(world, entityId, interactable);
10438
+ }
10439
+ for (const [entityId, record] of this.records) {
10440
+ if (!hovered.has(entityId) || held.has(entityId)) {
10441
+ record.active = false;
10442
+ }
10443
+ }
10444
+ this.animate(world, deltaTime);
10445
+ }
10446
+ begin(world, entityId, interactable) {
10447
+ const existing = this.records.get(entityId);
10448
+ if (existing) {
10449
+ existing.active = true;
10450
+ return;
10451
+ }
10452
+ const transform = world.getComponent(entityId, TransformComponent);
10453
+ if (!transform) return;
10454
+ const wantsColor = interactable.hoverBehavior === "color" || interactable.hoverBehavior === "both";
10455
+ this.records.set(entityId, {
10456
+ shell: wantsColor ? this.addShell(world, entityId, interactable) : null,
10457
+ baseScale: new THREE26__namespace.Vector3(
10458
+ transform.scale.x,
10459
+ transform.scale.y,
10460
+ transform.scale.z
10461
+ ),
10462
+ progress: 0,
10463
+ active: true
10464
+ });
10465
+ }
10466
+ /** Build an inflated back-face copy of the object's meshes. */
10467
+ addShell(world, entityId, interactable) {
10468
+ const object = world.getComponent(entityId, Object3DRef)?.object;
10469
+ if (!object) return null;
10470
+ const material = new THREE26__namespace.MeshBasicMaterial({
10471
+ color: new THREE26__namespace.Color(interactable.hoverColor),
10472
+ // Back faces only, so the shell shows just outside the silhouette instead
10473
+ // of covering the object.
10474
+ side: THREE26__namespace.BackSide,
10475
+ transparent: true,
10476
+ opacity: 0.85,
10477
+ depthWrite: false
10478
+ });
10479
+ const group = new THREE26__namespace.Group();
10480
+ group.name = "XRHoverShell";
10481
+ group.userData[XR_HOVER_SHELL_FLAG] = true;
10482
+ group.renderOrder = 998;
10483
+ object.traverse((child) => {
10484
+ if (!(child instanceof THREE26__namespace.Mesh) || !child.geometry) return;
10485
+ if (child.userData[XR_HOVER_SHELL_FLAG]) return;
10486
+ const clone = new THREE26__namespace.Mesh(child.geometry, material);
10487
+ child.updateWorldMatrix(true, false);
10488
+ object.updateWorldMatrix(true, false);
10489
+ clone.matrixAutoUpdate = false;
10490
+ clone.matrix.copy(object.matrixWorld).invert().multiply(child.matrixWorld).scale(new THREE26__namespace.Vector3(SHELL_INFLATE, SHELL_INFLATE, SHELL_INFLATE));
10491
+ clone.userData[XR_HOVER_SHELL_FLAG] = true;
10492
+ clone.raycast = () => {
10493
+ };
10494
+ group.add(clone);
10495
+ });
10496
+ if (group.children.length === 0) {
10497
+ material.dispose();
10498
+ return null;
10499
+ }
10500
+ object.add(group);
10501
+ return group;
10502
+ }
10503
+ animate(world, deltaTime) {
10504
+ const step = 1 - Math.exp(-Math.max(0, deltaTime) / SCALE_SMOOTH_SECONDS);
10505
+ for (const [entityId, record] of Array.from(this.records)) {
10506
+ const interactable = world.getComponent(entityId, XRInteractableComponent);
10507
+ const target = record.active ? 1 : 0;
10508
+ record.progress += (target - record.progress) * step;
10509
+ const wantsScale = interactable?.hoverBehavior === "scale" || interactable?.hoverBehavior === "both";
10510
+ if (wantsScale) {
10511
+ const transform = world.getComponent(entityId, TransformComponent);
10512
+ if (transform) {
10513
+ const factor = 1 + (interactable.hoverScale - 1) * Math.min(1, record.progress);
10514
+ transform.scale.x = record.baseScale.x * factor;
10515
+ transform.scale.y = record.baseScale.y * factor;
10516
+ transform.scale.z = record.baseScale.z * factor;
10517
+ }
10518
+ }
10519
+ if (!record.active && record.progress < 0.01) {
10520
+ this.finish(world, entityId, record);
10521
+ }
10522
+ }
10523
+ }
10524
+ /** Remove the effect and restore the authored scale exactly. */
10525
+ finish(world, entityId, record) {
10526
+ const transform = world.getComponent(entityId, TransformComponent);
10527
+ if (transform) {
10528
+ transform.scale.x = record.baseScale.x;
10529
+ transform.scale.y = record.baseScale.y;
10530
+ transform.scale.z = record.baseScale.z;
10531
+ }
10532
+ this.disposeShell(record.shell);
10533
+ this.records.delete(entityId);
10534
+ }
10535
+ disposeShell(shell) {
10536
+ if (!shell) return;
10537
+ shell.parent?.remove(shell);
10538
+ shell.traverse((child) => {
10539
+ if (child instanceof THREE26__namespace.Mesh) {
10540
+ const material = child.material;
10541
+ if (Array.isArray(material)) {
10542
+ for (const entry of material) entry.dispose();
10543
+ } else {
10544
+ material?.dispose();
10545
+ }
10546
+ }
10547
+ });
10548
+ }
10549
+ clearAll(world) {
10550
+ for (const [entityId, record] of Array.from(this.records)) {
10551
+ this.finish(world, entityId, record);
10552
+ }
10553
+ }
10554
+ dispose() {
10555
+ for (const record of this.records.values()) {
10556
+ this.disposeShell(record.shell);
10557
+ }
10558
+ this.records.clear();
10559
+ }
10560
+ };
10561
+ __name(_XRHoverVisualSystem, "XRHoverVisualSystem");
10562
+ var XRHoverVisualSystem = _XRHoverVisualSystem;
10325
10563
 
10326
10564
  exports.AnimationSystem = AnimationSystem;
10327
10565
  exports.AudioSystem = AudioSystem;
@@ -10346,10 +10584,12 @@ exports.VRTeleportAreaSystem = VRTeleportAreaSystem;
10346
10584
  exports.VideoSystem = VideoSystem;
10347
10585
  exports.XRControllerVisualSystem = XRControllerVisualSystem;
10348
10586
  exports.XRHandPoseSystem = XRHandPoseSystem;
10587
+ exports.XRHoverVisualSystem = XRHoverVisualSystem;
10349
10588
  exports.XRInputSystem = XRInputSystem;
10350
10589
  exports.XRInteractionSystem = XRInteractionSystem;
10351
10590
  exports.XRLocomotionSystem = XRLocomotionSystem;
10352
10591
  exports.XRSessionSystem = XRSessionSystem;
10353
10592
  exports.XRTeleportVisualSystem = XRTeleportVisualSystem;
10593
+ exports.XR_HOVER_SHELL_FLAG = XR_HOVER_SHELL_FLAG;
10354
10594
  //# sourceMappingURL=index.cjs.map
10355
10595
  //# sourceMappingURL=index.cjs.map