@relu-interactives/spatial-ecs 0.11.0 → 0.11.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 (503) hide show
  1. package/dist/{System-BldSHxZV.d.cts → System-D8vm-Jvv.d.cts} +110 -3
  2. package/dist/{System-CADhPyQs.d.ts → System-ttkDQCrj.d.ts} +110 -3
  3. package/dist/{XRHandPose-D3Ab1Dfs.d.cts → XRHandPose-C97XVW2R.d.cts} +2 -41
  4. package/dist/{XRHandPose-BNSwd1y9.d.ts → XRHandPose-CxXtWF1y.d.ts} +2 -41
  5. package/dist/animation/index.cjs +33 -1
  6. package/dist/animation/index.cjs.map +1 -1
  7. package/dist/animation/index.js +1 -1
  8. package/dist/{chunk-TY3XCHOR.js → chunk-2DJBNWBB.js} +56 -15
  9. package/dist/chunk-2DJBNWBB.js.map +1 -0
  10. package/dist/{chunk-WWP46AEF.js → chunk-4FHJA6U4.js} +8 -4
  11. package/dist/chunk-4FHJA6U4.js.map +1 -0
  12. package/dist/{chunk-GSWC6LLD.js → chunk-GMSFEXUZ.js} +35 -3
  13. package/dist/chunk-GMSFEXUZ.js.map +1 -0
  14. package/dist/{chunk-JEPUCLZX.js → chunk-QAZCVCMP.js} +88 -27
  15. package/dist/chunk-QAZCVCMP.js.map +1 -0
  16. package/dist/{chunk-NXASMBDS.js → chunk-SM5KGNYX.js} +4 -4
  17. package/dist/{chunk-NXASMBDS.js.map → chunk-SM5KGNYX.js.map} +1 -1
  18. package/dist/{chunk-JNYPJB55.js → chunk-T7SRBLPJ.js} +24 -4
  19. package/dist/chunk-T7SRBLPJ.js.map +1 -0
  20. package/dist/components/index.cjs +21 -1
  21. package/dist/components/index.cjs.map +1 -1
  22. package/dist/components/index.d.cts +3 -3
  23. package/dist/components/index.d.ts +3 -3
  24. package/dist/components/index.js +1 -1
  25. package/dist/docs/api/Behaviour/classes/Behaviour.md +187 -46
  26. package/dist/docs/api/Behaviour/type-aliases/UiInteractionEvent.md +5 -5
  27. package/dist/docs/api/Component/classes/Component.md +7 -1
  28. package/dist/docs/api/components/classes/AnimationComponent.md +26 -26
  29. package/dist/docs/api/components/classes/AudioComponent.md +20 -19
  30. package/dist/docs/api/components/classes/BoneAttachmentComponent.md +65 -0
  31. package/dist/docs/api/components/classes/CameraComponent.md +14 -14
  32. package/dist/docs/api/components/classes/EntityType.md +3 -3
  33. package/dist/docs/api/components/classes/Environment.md +3 -3
  34. package/dist/docs/api/components/classes/IKComponent.md +59 -0
  35. package/dist/docs/api/components/classes/ImageComponent.md +7 -7
  36. package/dist/docs/api/components/classes/ImageTarget.md +7 -7
  37. package/dist/docs/api/components/classes/ImageTargetAnchor.md +4 -4
  38. package/dist/docs/api/components/classes/InstanceSlotComponent.md +4 -4
  39. package/dist/docs/api/components/classes/InstancedMeshComponent.md +10 -10
  40. package/dist/docs/api/components/classes/LightComponent.md +6 -6
  41. package/dist/docs/api/components/classes/MaterialComponent.md +14 -14
  42. package/dist/docs/api/components/classes/MeshComponent.md +3 -3
  43. package/dist/docs/api/components/classes/MeshGeometryComponent.md +9 -9
  44. package/dist/docs/api/components/classes/ModelComponent.md +6 -6
  45. package/dist/docs/api/components/classes/Name.md +3 -3
  46. package/dist/docs/api/components/classes/NetworkIdentityComponent.md +42 -0
  47. package/dist/docs/api/components/classes/NetworkSpawnerComponent.md +48 -0
  48. package/dist/docs/api/components/classes/NetworkTransformComponent.md +51 -0
  49. package/dist/docs/api/components/classes/NetworkedPropsComponent.md +47 -0
  50. package/dist/docs/api/components/classes/Object3DRef.md +4 -4
  51. package/dist/docs/api/components/classes/ParentId.md +3 -3
  52. package/dist/docs/api/components/classes/PhysicsComponent.md +7 -7
  53. package/dist/docs/api/components/classes/Postprocessing.md +3 -3
  54. package/dist/docs/api/components/classes/PrefabInstance.md +5 -5
  55. package/dist/docs/api/components/classes/PrefabNode.md +3 -3
  56. package/dist/docs/api/components/classes/ScriptComponent.md +5 -5
  57. package/dist/docs/api/components/classes/ScriptObjectComponent.md +9 -9
  58. package/dist/docs/api/components/classes/Selectable.md +3 -3
  59. package/dist/docs/api/components/classes/SelectionTransformState.md +5 -5
  60. package/dist/docs/api/components/classes/SpriteComponent.md +7 -7
  61. package/dist/docs/api/components/classes/TransformComponent.md +12 -12
  62. package/dist/docs/api/components/classes/UIButtonComponent.md +18 -14
  63. package/dist/docs/api/components/classes/UIPanelComponent.md +13 -11
  64. package/dist/docs/api/components/classes/UISliderComponent.md +16 -11
  65. package/dist/docs/api/components/classes/UITextComponent.md +14 -12
  66. package/dist/docs/api/components/classes/UIToggleComponent.md +12 -9
  67. package/dist/docs/api/components/classes/VRTeleportAreaComponent.md +6 -6
  68. package/dist/docs/api/components/classes/VideoComponent.md +28 -28
  69. package/dist/docs/api/components/classes/XRAnchorComponent.md +3 -3
  70. package/dist/docs/api/components/classes/XREnvironmentComponent.md +5 -5
  71. package/dist/docs/api/components/classes/XRHandPoseComponent.md +4 -4
  72. package/dist/docs/api/components/classes/XRInteractableComponent.md +28 -28
  73. package/dist/docs/api/components/classes/XRInteractorComponent.md +10 -10
  74. package/dist/docs/api/components/classes/XRInteractorSideComponent.md +3 -3
  75. package/dist/docs/api/components/classes/XRRigComponent.md +17 -17
  76. package/dist/docs/api/components/functions/createAttachPoint.md +1 -1
  77. package/dist/docs/api/components/functions/createHandPoseEntry.md +1 -1
  78. package/dist/docs/api/components/functions/defaultMaterialValue.md +1 -1
  79. package/dist/docs/api/components/functions/handPoseDefinitionFor.md +1 -1
  80. package/dist/docs/api/components/functions/normalizeBoneHold.md +25 -0
  81. package/dist/docs/api/components/functions/normalizeEnvironmentLighting.md +1 -1
  82. package/dist/docs/api/components/functions/normalizeIKChain.md +25 -0
  83. package/dist/docs/api/components/functions/normalizePhysicsState.md +1 -1
  84. package/dist/docs/api/components/functions/setModelLoadState.md +1 -1
  85. package/dist/docs/api/components/functions/setPhysicsLiveRef.md +1 -1
  86. package/dist/docs/api/components/index.md +18 -0
  87. package/dist/docs/api/components/type-aliases/AnimationComponentOptions.md +9 -9
  88. package/dist/docs/api/components/type-aliases/BoneAttachmentOptions.md +35 -0
  89. package/dist/docs/api/components/type-aliases/BoneHold.md +34 -0
  90. package/dist/docs/api/components/type-aliases/CameraComponentOptions.md +13 -13
  91. package/dist/docs/api/components/type-aliases/CameraProjection.md +1 -1
  92. package/dist/docs/api/components/type-aliases/CameraRuntimeType.md +1 -1
  93. package/dist/docs/api/components/type-aliases/ColliderShape.md +1 -1
  94. package/dist/docs/api/components/type-aliases/ColliderState.md +20 -20
  95. package/dist/docs/api/components/type-aliases/CubeMeshParameters.md +4 -4
  96. package/dist/docs/api/components/type-aliases/EditableMeshObjectKind.md +1 -1
  97. package/dist/docs/api/components/type-aliases/EnvironmentFogState.md +8 -8
  98. package/dist/docs/api/components/type-aliases/EnvironmentFogType.md +1 -1
  99. package/dist/docs/api/components/type-aliases/EnvironmentGradientEffect.md +1 -1
  100. package/dist/docs/api/components/type-aliases/EnvironmentLightingState.md +9 -9
  101. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxImageProjection.md +1 -1
  102. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxState.md +8 -8
  103. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxType.md +1 -1
  104. package/dist/docs/api/components/type-aliases/EnvironmentState.md +6 -6
  105. package/dist/docs/api/components/type-aliases/EnvironmentToneMapping.md +1 -1
  106. package/dist/docs/api/components/type-aliases/IKChain.md +37 -0
  107. package/dist/docs/api/components/type-aliases/IKLimb.md +15 -0
  108. package/dist/docs/api/components/type-aliases/IKOptions.md +27 -0
  109. package/dist/docs/api/components/type-aliases/ImageTargetAnchorOptions.md +3 -3
  110. package/dist/docs/api/components/type-aliases/ImageTargetReference.md +7 -7
  111. package/dist/docs/api/components/type-aliases/InstanceTransform.md +13 -13
  112. package/dist/docs/api/components/type-aliases/InstancedMeshKind.md +1 -1
  113. package/dist/docs/api/components/type-aliases/LightShadowState.md +8 -8
  114. package/dist/docs/api/components/type-aliases/LightValueState.md +12 -12
  115. package/dist/docs/api/components/type-aliases/MaterialTypeValue.md +1 -1
  116. package/dist/docs/api/components/type-aliases/MaterialValueState.md +28 -28
  117. package/dist/docs/api/components/type-aliases/MeshGeometryParameters.md +1 -1
  118. package/dist/docs/api/components/type-aliases/MeshGeometryParametersByKind.md +7 -7
  119. package/dist/docs/api/components/type-aliases/ModelLoadState.md +1 -1
  120. package/dist/docs/api/components/type-aliases/NetValue.md +23 -0
  121. package/dist/docs/api/components/type-aliases/NetworkTransformOptions.md +18 -0
  122. package/dist/docs/api/components/type-aliases/PhysicsState.md +3 -3
  123. package/dist/docs/api/components/type-aliases/PlaneMeshParameters.md +3 -3
  124. package/dist/docs/api/components/type-aliases/PostprocessingState.md +62 -62
  125. package/dist/docs/api/components/type-aliases/RadiusHeightMeshParameters.md +3 -3
  126. package/dist/docs/api/components/type-aliases/RadiusMeshParameters.md +2 -2
  127. package/dist/docs/api/components/type-aliases/RigidbodyState.md +17 -17
  128. package/dist/docs/api/components/type-aliases/RigidbodyType.md +1 -1
  129. package/dist/docs/api/components/type-aliases/ScriptEntry.md +8 -8
  130. package/dist/docs/api/components/type-aliases/ScriptObjectComponentInput.md +1 -1
  131. package/dist/docs/api/components/type-aliases/ScriptObjectRuntimeState.md +1 -1
  132. package/dist/docs/api/components/type-aliases/TextureFilteringValue.md +1 -1
  133. package/dist/docs/api/components/type-aliases/TransformData.md +4 -4
  134. package/dist/docs/api/components/type-aliases/TransformModeValue.md +1 -1
  135. package/dist/docs/api/components/type-aliases/TransformSpaceValue.md +1 -1
  136. package/dist/docs/api/components/type-aliases/UIButtonOptions.md +21 -13
  137. package/dist/docs/api/components/type-aliases/UIPanelOptions.md +14 -10
  138. package/dist/docs/api/components/type-aliases/UISliderOptions.md +20 -10
  139. package/dist/docs/api/components/type-aliases/UITextOptions.md +15 -11
  140. package/dist/docs/api/components/type-aliases/UIToggleOptions.md +14 -8
  141. package/dist/docs/api/components/type-aliases/UiFollowMode.md +1 -1
  142. package/dist/docs/api/components/type-aliases/UiIconPosition.md +13 -0
  143. package/dist/docs/api/components/type-aliases/UiSliderVariant.md +13 -0
  144. package/dist/docs/api/components/type-aliases/UiTextAlign.md +1 -1
  145. package/dist/docs/api/components/type-aliases/UiTextVAlign.md +1 -1
  146. package/dist/docs/api/components/type-aliases/UiToggleVariant.md +13 -0
  147. package/dist/docs/api/components/type-aliases/VRTeleportAreaOptions.md +5 -5
  148. package/dist/docs/api/components/type-aliases/Vec3.md +4 -4
  149. package/dist/docs/api/components/type-aliases/VrTeleportShape.md +1 -1
  150. package/dist/docs/api/components/type-aliases/XRAnchorOptions.md +2 -2
  151. package/dist/docs/api/components/type-aliases/XRHandPoseOptions.md +3 -3
  152. package/dist/docs/api/components/type-aliases/XRInteractableOptions.md +27 -27
  153. package/dist/docs/api/components/type-aliases/XRInteractorOptions.md +9 -9
  154. package/dist/docs/api/components/type-aliases/XRRigOptions.md +16 -16
  155. package/dist/docs/api/components/type-aliases/XrAttachPoint.md +13 -13
  156. package/dist/docs/api/components/type-aliases/XrDistanceGrabBehavior.md +1 -1
  157. package/dist/docs/api/components/type-aliases/XrEnvironmentKind.md +1 -1
  158. package/dist/docs/api/components/type-aliases/XrEnvironmentOrientation.md +1 -1
  159. package/dist/docs/api/components/type-aliases/XrEnvironmentPhysics.md +1 -1
  160. package/dist/docs/api/components/type-aliases/XrGrabGesture.md +1 -1
  161. package/dist/docs/api/components/type-aliases/XrGrabHands.md +1 -1
  162. package/dist/docs/api/components/type-aliases/XrGrabReach.md +1 -1
  163. package/dist/docs/api/components/type-aliases/XrHandPoseEntry.md +12 -12
  164. package/dist/docs/api/components/type-aliases/XrHandPreset.md +1 -1
  165. package/dist/docs/api/components/type-aliases/XrInteractorSide.md +1 -1
  166. package/dist/docs/api/components/type-aliases/XrInteractorType.md +1 -1
  167. package/dist/docs/api/components/type-aliases/XrLocomotionMode.md +1 -1
  168. package/dist/docs/api/components/type-aliases/XrTrackingOrigin.md +1 -1
  169. package/dist/docs/api/components/type-aliases/XrTwoHandRotation.md +1 -1
  170. package/dist/docs/api/components/variables/DEFAULT_COLLIDER_STATE.md +1 -1
  171. package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_LIGHTING.md +1 -1
  172. package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_STATE.md +1 -1
  173. package/dist/docs/api/components/variables/DEFAULT_INSTANCED_MESH_PARAMETERS.md +1 -1
  174. package/dist/docs/api/components/variables/DEFAULT_INSTANCE_TRANSFORM.md +1 -1
  175. package/dist/docs/api/components/variables/DEFAULT_MESH_GEOMETRY_PARAMETERS.md +1 -1
  176. package/dist/docs/api/components/variables/DEFAULT_PHYSICS_STATE.md +1 -1
  177. package/dist/docs/api/components/variables/DEFAULT_POSE_CURLS.md +1 -1
  178. package/dist/docs/api/components/variables/DEFAULT_POSE_DIRECTIONS.md +1 -1
  179. package/dist/docs/api/components/variables/DEFAULT_POSTPROCESSING_STATE.md +1 -1
  180. package/dist/docs/api/components/variables/DEFAULT_RIGIDBODY_STATE.md +1 -1
  181. package/dist/docs/api/components/variables/MODEL_NO_PATH_MESSAGE.md +1 -1
  182. package/dist/docs/api/index/classes/AnimationStateMachine.md +16 -16
  183. package/dist/docs/api/index/classes/AnimationStateManager.md +13 -13
  184. package/dist/docs/api/index/classes/AnimationSystem.md +3 -3
  185. package/dist/docs/api/index/classes/AudioMixer.md +161 -0
  186. package/dist/docs/api/index/classes/AudioSystem.md +138 -4
  187. package/dist/docs/api/index/classes/BoneHoldSystem.md +54 -0
  188. package/dist/docs/api/index/classes/CameraSyncSystem.md +2 -2
  189. package/dist/docs/api/index/classes/EnvironmentSyncSystem.md +4 -4
  190. package/dist/docs/api/index/classes/HandPoseTracker.md +6 -6
  191. package/dist/docs/api/index/classes/IKSystem.md +98 -0
  192. package/dist/docs/api/index/classes/InputSystem.md +33 -33
  193. package/dist/docs/api/index/classes/InstancedMeshSystem.md +2 -2
  194. package/dist/docs/api/index/classes/LightSyncSystem.md +2 -2
  195. package/dist/docs/api/index/classes/MaterialSyncSystem.md +3 -3
  196. package/dist/docs/api/index/classes/MeshGeometrySystem.md +2 -2
  197. package/dist/docs/api/index/classes/ObjectManagementSystem.md +269 -14
  198. package/dist/docs/api/index/classes/ObjectVisibilitySystem.md +2 -2
  199. package/dist/docs/api/index/classes/PhysicsSyncSystem.md +4 -4
  200. package/dist/docs/api/index/classes/PostprocessingSyncSystem.md +4 -4
  201. package/dist/docs/api/index/classes/RenderSystem.md +3 -3
  202. package/dist/docs/api/index/classes/ScriptBehaviourSystem.md +4 -4
  203. package/dist/docs/api/index/classes/ScriptObject.md +10 -10
  204. package/dist/docs/api/index/classes/ScriptObjectSystem.md +6 -6
  205. package/dist/docs/api/index/classes/SlotChooser.md +59 -0
  206. package/dist/docs/api/index/classes/TeleportAimGate.md +4 -4
  207. package/dist/docs/api/index/classes/ThrowVelocityTracker.md +4 -4
  208. package/dist/docs/api/index/classes/TransformSyncSystem.md +2 -2
  209. package/dist/docs/api/index/classes/UIInteractionSystem.md +3 -3
  210. package/dist/docs/api/index/classes/UIPanelSystem.md +4 -4
  211. package/dist/docs/api/index/classes/VRTeleportAreaSystem.md +2 -2
  212. package/dist/docs/api/index/classes/VideoSystem.md +4 -4
  213. package/dist/docs/api/index/classes/World.md +168 -98
  214. package/dist/docs/api/index/classes/XRAnchorSystem.md +4 -4
  215. package/dist/docs/api/index/classes/XRControllerVisualSystem.md +4 -4
  216. package/dist/docs/api/index/classes/XREnvironmentSystem.md +7 -7
  217. package/dist/docs/api/index/classes/XRHandPoseSystem.md +5 -5
  218. package/dist/docs/api/index/classes/XRHitTestSystem.md +4 -4
  219. package/dist/docs/api/index/classes/XRHoverVisualSystem.md +4 -4
  220. package/dist/docs/api/index/classes/XRInputSystem.md +9 -9
  221. package/dist/docs/api/index/classes/XRInteractionSystem.md +18 -18
  222. package/dist/docs/api/index/classes/XRLocomotionSystem.md +7 -7
  223. package/dist/docs/api/index/classes/XRSessionSystem.md +6 -6
  224. package/dist/docs/api/index/classes/XRTeleportVisualSystem.md +4 -4
  225. package/dist/docs/api/index/functions/angularVelocityFrom.md +1 -1
  226. package/dist/docs/api/index/functions/applyHandMaterial.md +1 -1
  227. package/dist/docs/api/index/functions/applyPrefabToSnapshotInstances.md +1 -1
  228. package/dist/docs/api/index/functions/arcGroundCrossing.md +1 -1
  229. package/dist/docs/api/index/functions/buildComponentValueMaps.md +1 -1
  230. package/dist/docs/api/index/functions/buildNodeKeyMapsFromSnapshot.md +1 -1
  231. package/dist/docs/api/index/functions/buildNodeMapsFromSnapshot.md +1 -1
  232. package/dist/docs/api/index/functions/canonicalizeComponentValue.md +1 -1
  233. package/dist/docs/api/index/functions/clearModelCache.md +1 -1
  234. package/dist/docs/api/index/functions/clearPrefabCache.md +1 -1
  235. package/dist/docs/api/index/functions/cloneHandPose.md +1 -1
  236. package/dist/docs/api/index/functions/collectDiffPaths.md +1 -1
  237. package/dist/docs/api/index/functions/collectDirectPrefabDependencies.md +1 -1
  238. package/dist/docs/api/index/functions/collectEntitySubtree.md +1 -1
  239. package/dist/docs/api/index/functions/collectSnapshotSubtreeIds.md +1 -1
  240. package/dist/docs/api/index/functions/computeFingerCurl.md +1 -1
  241. package/dist/docs/api/index/functions/computeHandShape.md +1 -1
  242. package/dist/docs/api/index/functions/computeInstanceOverrides.md +1 -1
  243. package/dist/docs/api/index/functions/computePalmPose.md +1 -1
  244. package/dist/docs/api/index/functions/computePalmWidth.md +1 -1
  245. package/dist/docs/api/index/functions/computePinch.md +1 -1
  246. package/dist/docs/api/index/functions/computeSpread.md +1 -1
  247. package/dist/docs/api/index/functions/createAnimationComponent.md +1 -1
  248. package/dist/docs/api/index/functions/createAudioComponent.md +1 -1
  249. package/dist/docs/api/index/functions/createBoneAttachmentComponent.md +28 -0
  250. package/dist/docs/api/index/functions/createCameraComponent.md +1 -1
  251. package/dist/docs/api/index/functions/createEntityTypeComponent.md +1 -1
  252. package/dist/docs/api/index/functions/createEnvironmentComponent.md +1 -1
  253. package/dist/docs/api/index/functions/createGLTFLoader.md +30 -0
  254. package/dist/docs/api/index/functions/createHandMaterial.md +1 -1
  255. package/dist/docs/api/index/functions/createIKComponent.md +28 -0
  256. package/dist/docs/api/index/functions/createImageComponent.md +1 -1
  257. package/dist/docs/api/index/functions/createImageTargetAnchorComponent.md +1 -1
  258. package/dist/docs/api/index/functions/createImageTargetComponent.md +1 -1
  259. package/dist/docs/api/index/functions/createInstanceSlotComponent.md +1 -1
  260. package/dist/docs/api/index/functions/createInstancedMeshComponent.md +1 -1
  261. package/dist/docs/api/index/functions/createLightComponent.md +1 -1
  262. package/dist/docs/api/index/functions/createMaterialComponent.md +1 -1
  263. package/dist/docs/api/index/functions/createMeshComponent.md +1 -1
  264. package/dist/docs/api/index/functions/createMeshGeometryComponent.md +1 -1
  265. package/dist/docs/api/index/functions/createModelComponent.md +1 -1
  266. package/dist/docs/api/index/functions/createNameComponent.md +1 -1
  267. package/dist/docs/api/index/functions/createNetworkIdentityComponent.md +24 -0
  268. package/dist/docs/api/index/functions/createNetworkSpawnerComponent.md +28 -0
  269. package/dist/docs/api/index/functions/createNetworkTransformComponent.md +28 -0
  270. package/dist/docs/api/index/functions/createNetworkedPropsComponent.md +28 -0
  271. package/dist/docs/api/index/functions/createObject3DRefComponent.md +1 -1
  272. package/dist/docs/api/index/functions/createParentIdComponent.md +1 -1
  273. package/dist/docs/api/index/functions/createPhysicsComponent.md +1 -1
  274. package/dist/docs/api/index/functions/createPostprocessingComponent.md +1 -1
  275. package/dist/docs/api/index/functions/createScriptComponent.md +1 -1
  276. package/dist/docs/api/index/functions/createScriptObjectComponent.md +1 -1
  277. package/dist/docs/api/index/functions/createSelectableComponent.md +1 -1
  278. package/dist/docs/api/index/functions/createSelectionTransformStateComponent.md +1 -1
  279. package/dist/docs/api/index/functions/createSpriteComponent.md +1 -1
  280. package/dist/docs/api/index/functions/createTransformComponent.md +1 -1
  281. package/dist/docs/api/index/functions/createUIButtonComponent.md +1 -1
  282. package/dist/docs/api/index/functions/createUIPanelComponent.md +1 -1
  283. package/dist/docs/api/index/functions/createUISliderComponent.md +1 -1
  284. package/dist/docs/api/index/functions/createUITextComponent.md +1 -1
  285. package/dist/docs/api/index/functions/createUIToggleComponent.md +1 -1
  286. package/dist/docs/api/index/functions/createVRTeleportAreaComponent.md +1 -1
  287. package/dist/docs/api/index/functions/createVideoComponent.md +1 -1
  288. package/dist/docs/api/index/functions/createXRAnchorComponent.md +1 -1
  289. package/dist/docs/api/index/functions/createXRHandPoseComponent.md +1 -1
  290. package/dist/docs/api/index/functions/createXRInteractableComponent.md +1 -1
  291. package/dist/docs/api/index/functions/createXRInteractorComponent.md +1 -1
  292. package/dist/docs/api/index/functions/createXRInteractorSideComponent.md +1 -1
  293. package/dist/docs/api/index/functions/createXRRigComponent.md +1 -1
  294. package/dist/docs/api/index/functions/decanonicalizeComponentValue.md +1 -1
  295. package/dist/docs/api/index/functions/despawnPrefab.md +1 -1
  296. package/dist/docs/api/index/functions/encodeOverride.md +1 -1
  297. package/dist/docs/api/index/functions/estimateHandScale.md +1 -1
  298. package/dist/docs/api/index/functions/findModelBone.md +30 -0
  299. package/dist/docs/api/index/functions/findSnapshotRootEntityIds.md +1 -1
  300. package/dist/docs/api/index/functions/findTopLevelNestedRegions.md +1 -1
  301. package/dist/docs/api/index/functions/getHandPosePreset.md +1 -1
  302. package/dist/docs/api/index/functions/gripQuaternion.md +36 -0
  303. package/dist/docs/api/index/functions/groupOverridePaths.md +1 -1
  304. package/dist/docs/api/index/functions/handPoseFromCurls.md +1 -1
  305. package/dist/docs/api/index/functions/hydrateWorldFromSnapshot.md +1 -1
  306. package/dist/docs/api/index/functions/hydrateWorldFromSnapshotDetailed.md +1 -1
  307. package/dist/docs/api/index/functions/indexSnapshotByEntity.md +1 -1
  308. package/dist/docs/api/index/functions/instantiateSubtree.md +1 -1
  309. package/dist/docs/api/index/functions/listModelBones.md +25 -0
  310. package/dist/docs/api/index/functions/loadPrefab.md +1 -1
  311. package/dist/docs/api/index/functions/loadSharedGltf.md +1 -1
  312. package/dist/docs/api/index/functions/matchHandPose.md +1 -1
  313. package/dist/docs/api/index/functions/mergeComponentValue.md +1 -1
  314. package/dist/docs/api/index/functions/parseOverride.md +1 -1
  315. package/dist/docs/api/index/functions/parsePrefabAsset.md +1 -1
  316. package/dist/docs/api/index/functions/prefabFileVersionFor.md +1 -1
  317. package/dist/docs/api/index/functions/readXrCapabilities.md +1 -1
  318. package/dist/docs/api/index/functions/registerDefaultComponentFactories.md +1 -1
  319. package/dist/docs/api/index/functions/registerDefaultFactories.md +1 -1
  320. package/dist/docs/api/index/functions/remapSnapshotEntityIds.md +3 -3
  321. package/dist/docs/api/index/functions/resolveDracoDecoderPath.md +1 -1
  322. package/dist/docs/api/index/functions/restoreComponentState.md +1 -1
  323. package/dist/docs/api/index/functions/restorePostCreateComponents.md +1 -1
  324. package/dist/docs/api/index/functions/sampleTeleportArc.md +1 -1
  325. package/dist/docs/api/index/functions/serializeEntitySubtree.md +1 -1
  326. package/dist/docs/api/index/functions/setDracoDecoderPath.md +1 -1
  327. package/dist/docs/api/index/functions/setPrefabAssetUrlResolver.md +1 -1
  328. package/dist/docs/api/index/functions/setWorldQuaternion.md +26 -0
  329. package/dist/docs/api/index/functions/soundBankFiles.md +25 -0
  330. package/dist/docs/api/index/functions/spawnPrefab.md +1 -1
  331. package/dist/docs/api/index/functions/twoBoneIK.md +41 -0
  332. package/dist/docs/api/index/index.md +31 -0
  333. package/dist/docs/api/index/interfaces/ChromaKeyOptions.md +5 -5
  334. package/dist/docs/api/index/interfaces/EcsSystem.md +3 -3
  335. package/dist/docs/api/index/interfaces/NetworkHandle.md +180 -0
  336. package/dist/docs/api/index/interfaces/PostprocessingBuildContext.md +6 -6
  337. package/dist/docs/api/index/interfaces/PostprocessingPipeline.md +5 -5
  338. package/dist/docs/api/index/interfaces/RenderBackend.md +8 -8
  339. package/dist/docs/api/index/interfaces/SoundBankAsset.md +18 -0
  340. package/dist/docs/api/index/interfaces/SoundSlot.md +31 -0
  341. package/dist/docs/api/index/interfaces/SoundTake.md +18 -0
  342. package/dist/docs/api/index/interfaces/StateMachine.md +13 -13
  343. package/dist/docs/api/index/type-aliases/AnimationStateCallbacks.md +4 -4
  344. package/dist/docs/api/index/type-aliases/ApplyPrefabToSnapshotResult.md +3 -3
  345. package/dist/docs/api/index/type-aliases/AudioBus.md +15 -0
  346. package/dist/docs/api/index/type-aliases/ComponentFactory.md +1 -1
  347. package/dist/docs/api/index/type-aliases/ComponentValueMaps.md +50 -38
  348. package/dist/docs/api/index/type-aliases/EcsComponentFactoryKind.md +7 -1
  349. package/dist/docs/api/index/type-aliases/EcsRenderer.md +1 -1
  350. package/dist/docs/api/index/type-aliases/EcsWorldComponentSnapshot.md +3 -3
  351. package/dist/docs/api/index/type-aliases/EcsWorldStateSnapshotLike.md +4 -4
  352. package/dist/docs/api/index/type-aliases/ExternalRefWarning.md +5 -5
  353. package/dist/docs/api/index/type-aliases/HandMaterialOptions.md +4 -4
  354. package/dist/docs/api/index/type-aliases/HandPoseTrackerOptions.md +5 -5
  355. package/dist/docs/api/index/type-aliases/HydrateOptions.md +3 -3
  356. package/dist/docs/api/index/type-aliases/HydrateWorldFromSnapshotResult.md +4 -4
  357. package/dist/docs/api/index/type-aliases/InstantiateSubtreeResult.md +3 -3
  358. package/dist/docs/api/index/type-aliases/KeyboardKey.md +1 -1
  359. package/dist/docs/api/index/type-aliases/ModelBoneInfo.md +29 -0
  360. package/dist/docs/api/index/type-aliases/ModuleLoader.md +1 -1
  361. package/dist/docs/api/index/type-aliases/MouseButton.md +1 -1
  362. package/dist/docs/api/index/type-aliases/NestedRegion.md +5 -5
  363. package/dist/docs/api/index/type-aliases/NetSpawnOptions.md +41 -0
  364. package/dist/docs/api/index/type-aliases/NodeKeyMaps.md +5 -5
  365. package/dist/docs/api/index/type-aliases/NodeMaps.md +4 -4
  366. package/dist/docs/api/index/type-aliases/PlaySlotOptions.md +32 -0
  367. package/dist/docs/api/index/type-aliases/PrefabAsset.md +5 -5
  368. package/dist/docs/api/index/type-aliases/RemapSnapshotOptions.md +2 -2
  369. package/dist/docs/api/index/type-aliases/RendererKind.md +1 -1
  370. package/dist/docs/api/index/type-aliases/ScriptBehaviourSystemOptions.md +2 -2
  371. package/dist/docs/api/index/type-aliases/ScriptErrorEvent.md +9 -9
  372. package/dist/docs/api/index/type-aliases/ScriptErrorListener.md +1 -1
  373. package/dist/docs/api/index/type-aliases/ScriptErrorPhase.md +1 -1
  374. package/dist/docs/api/index/type-aliases/ScriptErrorReport.md +6 -6
  375. package/dist/docs/api/index/type-aliases/ScriptErrorSource.md +1 -1
  376. package/dist/docs/api/index/type-aliases/SelectionContext.md +4 -4
  377. package/dist/docs/api/index/type-aliases/SerializeEntitySubtreeResult.md +4 -4
  378. package/dist/docs/api/index/type-aliases/SpawnPrefabOptions.md +5 -5
  379. package/dist/docs/api/index/type-aliases/SpawnPrefabSource.md +1 -1
  380. package/dist/docs/api/index/type-aliases/SubtreeSnapshot.md +4 -3
  381. package/dist/docs/api/index/type-aliases/UiCanvasLike.md +4 -4
  382. package/dist/docs/api/index/type-aliases/UiColorStop.md +37 -0
  383. package/dist/docs/api/index/type-aliases/UiPaint.md +81 -0
  384. package/dist/docs/api/index/type-aliases/UiShadow.md +27 -0
  385. package/dist/docs/api/index/type-aliases/UiStyle.md +43 -0
  386. package/dist/docs/api/index/type-aliases/UiTextStyle.md +33 -0
  387. package/dist/docs/api/index/type-aliases/UiTokens.md +13 -0
  388. package/dist/docs/api/index/type-aliases/VelocitySample.md +3 -3
  389. package/dist/docs/api/index/type-aliases/XrCapabilities.md +9 -9
  390. package/dist/docs/api/index/type-aliases/XrFinger.md +1 -1
  391. package/dist/docs/api/index/type-aliases/XrFingerCurl.md +4 -4
  392. package/dist/docs/api/index/type-aliases/XrFingerTarget.md +6 -6
  393. package/dist/docs/api/index/type-aliases/XrHandJointName.md +1 -1
  394. package/dist/docs/api/index/type-aliases/XrHandJoints.md +1 -1
  395. package/dist/docs/api/index/type-aliases/XrHandPoseAxis.md +1 -1
  396. package/dist/docs/api/index/type-aliases/XrHandPoseContext.md +2 -2
  397. package/dist/docs/api/index/type-aliases/XrHandPoseDefinition.md +11 -11
  398. package/dist/docs/api/index/type-aliases/XrHandPoseDirection.md +1 -1
  399. package/dist/docs/api/index/type-aliases/XrHandPoseEvent.md +1 -1
  400. package/dist/docs/api/index/type-aliases/XrHandPoseEventDetail.md +5 -5
  401. package/dist/docs/api/index/type-aliases/XrHandPoseMatch.md +4 -4
  402. package/dist/docs/api/index/type-aliases/XrHandPoseOrientation.md +4 -4
  403. package/dist/docs/api/index/type-aliases/XrHandShape.md +13 -13
  404. package/dist/docs/api/index/type-aliases/XrHandedness.md +1 -1
  405. package/dist/docs/api/index/type-aliases/XrHitResult.md +3 -3
  406. package/dist/docs/api/index/type-aliases/XrInputKind.md +1 -1
  407. package/dist/docs/api/index/type-aliases/XrInputState.md +18 -18
  408. package/dist/docs/api/index/type-aliases/XrPalmPose.md +6 -6
  409. package/dist/docs/api/index/variables/ADDED_NODE_MARKER_COMPONENT.md +1 -1
  410. package/dist/docs/api/index/variables/ARC_GRAVITY.md +1 -1
  411. package/dist/docs/api/index/variables/ARC_MAX_TIME.md +1 -1
  412. package/dist/docs/api/index/variables/ARC_SPEED.md +1 -1
  413. package/dist/docs/api/index/variables/ARC_STEPS.md +1 -1
  414. package/dist/docs/api/index/variables/CURLED_COS.md +1 -1
  415. package/dist/docs/api/index/variables/DEFAULT_DIRECTION_TOLERANCE.md +1 -1
  416. package/dist/docs/api/index/variables/DEFAULT_ENTER_CONFIDENCE.md +1 -1
  417. package/dist/docs/api/index/variables/DEFAULT_EXIT_CONFIDENCE.md +1 -1
  418. package/dist/docs/api/index/variables/DEFAULT_LOST_GRACE_SECONDS.md +1 -1
  419. package/dist/docs/api/index/variables/DEFAULT_MIN_HOLD_SECONDS.md +1 -1
  420. package/dist/docs/api/index/variables/DEFAULT_SCRIPT_ERROR_RETRY_DELAY.md +1 -1
  421. package/dist/docs/api/index/variables/FALLBACK_HAND_SCALE.md +1 -1
  422. package/dist/docs/api/index/variables/HAND_POSE_PRESETS.md +1 -1
  423. package/dist/docs/api/index/variables/HAND_POSE_PRESET_IDS.md +1 -1
  424. package/dist/docs/api/index/variables/HYDRATABLE_ENTITY_KINDS.md +1 -1
  425. package/dist/docs/api/index/variables/KeyboardKeys.md +89 -89
  426. package/dist/docs/api/index/variables/MATCH_FALLOFF.md +1 -1
  427. package/dist/docs/api/index/variables/MAX_PLAUSIBLE_SPEED.md +1 -1
  428. package/dist/docs/api/index/variables/MAX_SAMPLE_AGE_SECONDS.md +1 -1
  429. package/dist/docs/api/index/variables/NODE_KEY_SEPARATOR.md +1 -1
  430. package/dist/docs/api/index/variables/NO_XR_CAPABILITIES.md +1 -1
  431. package/dist/docs/api/index/variables/OVERRIDE_DIFF_EXCLUDED_COMPONENTS.md +1 -1
  432. package/dist/docs/api/index/variables/OVERRIDE_ROOT_EXCLUDED_COMPONENTS.md +1 -1
  433. package/dist/docs/api/index/variables/PINCH_FINGERS.md +1 -1
  434. package/dist/docs/api/index/variables/PREFAB_FILE_VERSION.md +1 -1
  435. package/dist/docs/api/index/variables/PREFAB_FILE_VERSION_NESTED.md +1 -1
  436. package/dist/docs/api/index/variables/SCRIPT_OBJECT_ROOT_FLAG.md +1 -1
  437. package/dist/docs/api/index/variables/SHARED_MODEL_RESOURCE_FLAG.md +1 -1
  438. package/dist/docs/api/index/variables/STRAIGHT_COS.md +1 -1
  439. package/dist/docs/api/index/variables/VELOCITY_SAMPLES.md +1 -1
  440. package/dist/docs/api/index/variables/XR_FINGERS.md +1 -1
  441. package/dist/docs/api/index/variables/XR_HOVER_SHELL_FLAG.md +1 -1
  442. package/dist/docs/api/index/variables/webglBackend.md +1 -1
  443. package/dist/docs/api/typedoc-sidebar.json +1 -1
  444. package/dist/docs/api/types/type-aliases/AssetInput.md +3 -3
  445. package/dist/docs/api/types/type-aliases/CheckboxInput.md +3 -3
  446. package/dist/docs/api/types/type-aliases/ColorInput.md +1 -1
  447. package/dist/docs/api/types/type-aliases/ComponentInput.md +4 -4
  448. package/dist/docs/api/types/type-aliases/ComponentKind.md +1 -1
  449. package/dist/docs/api/types/type-aliases/DropdownInput.md +3 -3
  450. package/dist/docs/api/types/type-aliases/DropdownOption.md +3 -3
  451. package/dist/docs/api/types/type-aliases/EcsEntityEditorKind.md +1 -1
  452. package/dist/docs/api/types/type-aliases/EcsEntityKind.md +1 -1
  453. package/dist/docs/api/types/type-aliases/EntityId.md +1 -1
  454. package/dist/docs/api/types/type-aliases/EntityInput.md +3 -3
  455. package/dist/docs/api/types/type-aliases/FloatInput.md +1 -1
  456. package/dist/docs/api/types/type-aliases/IntersectionResult.md +3 -3
  457. package/dist/docs/api/types/type-aliases/ParentLookup.md +3 -3
  458. package/dist/docs/api/types/type-aliases/SelectionListener.md +1 -1
  459. package/dist/docs/api/types/type-aliases/SliderInput.md +5 -5
  460. package/dist/docs/api/types/type-aliases/TextInput.md +1 -1
  461. package/dist/docs/api/types/type-aliases/ToggleInput.md +1 -1
  462. package/dist/docs/api/types/type-aliases/Vec3.md +1 -1
  463. package/dist/docs/api/types/type-aliases/Vector2Input.md +3 -3
  464. package/dist/docs/api/types/type-aliases/Vector3Input.md +4 -4
  465. package/dist/docs/api/types/type-aliases/WorldEntityView.md +1 -1
  466. package/dist/docs/guide/bone-attachments-and-ik.md +51 -0
  467. package/dist/docs/guide/components/audio.md +1 -1
  468. package/dist/factories/index.cjs +29 -1
  469. package/dist/factories/index.cjs.map +1 -1
  470. package/dist/factories/index.d.cts +2 -2
  471. package/dist/factories/index.d.ts +2 -2
  472. package/dist/factories/index.js +4 -4
  473. package/dist/{index-BXjwEdNq.d.cts → index-BbrnjNXy.d.ts} +5 -3
  474. package/dist/{index-CVG-hREM.d.ts → index-DD7aHv0p.d.cts} +5 -3
  475. package/dist/{index-6pZO_gV7.d.ts → index-OgOoIpEI.d.ts} +14 -2
  476. package/dist/{index-BdghvXKE.d.cts → index-xyqzT0PQ.d.cts} +14 -2
  477. package/dist/index.cjs +174 -13
  478. package/dist/index.cjs.map +1 -1
  479. package/dist/index.d.cts +10 -9
  480. package/dist/index.d.ts +10 -9
  481. package/dist/index.js +13 -11
  482. package/dist/index.js.map +1 -1
  483. package/dist/network/index.cjs +70 -38
  484. package/dist/network/index.cjs.map +1 -1
  485. package/dist/network/index.d.cts +2 -2
  486. package/dist/network/index.d.ts +2 -2
  487. package/dist/network/index.js +4 -4
  488. package/dist/systems/index.cjs +171 -13
  489. package/dist/systems/index.cjs.map +1 -1
  490. package/dist/systems/index.d.cts +2 -2
  491. package/dist/systems/index.d.ts +2 -2
  492. package/dist/systems/index.js +5 -5
  493. package/dist/types.d.cts +1 -1
  494. package/dist/types.d.ts +1 -1
  495. package/dist/webgpu/index.d.ts +2 -2
  496. package/dist/worldSnapshotUtils.d.cts +1 -1
  497. package/dist/worldSnapshotUtils.d.ts +1 -1
  498. package/package.json +2 -1
  499. package/dist/chunk-GSWC6LLD.js.map +0 -1
  500. package/dist/chunk-JEPUCLZX.js.map +0 -1
  501. package/dist/chunk-JNYPJB55.js.map +0 -1
  502. package/dist/chunk-TY3XCHOR.js.map +0 -1
  503. package/dist/chunk-WWP46AEF.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { y as NetworkTransport, z as NetEntityView, A as NetPose, B as NetSound, F as VoiceFromRoom, G as VoiceToRoom, H as VoiceHandle, J as VoicePeer, K as EcsSystem, L as NetworkService, W as World, M as EntityId, O as NetworkHandle } from '../System-BldSHxZV.cjs';
2
- export { Q as NetSpawnOptions, R as VoiceSignal } from '../System-BldSHxZV.cjs';
1
+ import { F as NetworkTransport, G as NetEntityView, H as NetPose, J as NetSound, K as VoiceFromRoom, L as VoiceToRoom, M as VoiceHandle, O as VoicePeer, Q as EcsSystem, R as NetworkService, W as World, S as EntityId, U as NetworkHandle } from '../System-D8vm-Jvv.cjs';
2
+ export { X as NetSpawnOptions, Y as VoiceSignal } from '../System-D8vm-Jvv.cjs';
3
3
  import 'three';
4
4
  import '@dimforge/rapier3d-compat';
5
5
  import '../animation/index.cjs';
@@ -1,5 +1,5 @@
1
- import { G as NetworkTransport, H as NetEntityView, J as NetPose, K as NetSound, L as VoiceFromRoom, M as VoiceToRoom, O as VoiceHandle, Q as VoicePeer, S as EcsSystem, U as NetworkService, W as World, X as EntityId, Y as NetworkHandle } from '../System-CADhPyQs.js';
2
- export { Z as NetSpawnOptions, _ as VoiceSignal } from '../System-CADhPyQs.js';
1
+ import { L as NetworkTransport, M as NetEntityView, O as NetPose, Q as NetSound, S as VoiceFromRoom, U as VoiceToRoom, W as VoiceHandle, X as VoicePeer, Y as EcsSystem, Z as NetworkService, _ as World, $ as EntityId, a0 as NetworkHandle } from '../System-ttkDQCrj.js';
2
+ export { a1 as NetSpawnOptions, a2 as VoiceSignal } from '../System-ttkDQCrj.js';
3
3
  import 'three';
4
4
  import '@dimforge/rapier3d-compat';
5
5
  import '../animation/index.js';
@@ -1,8 +1,8 @@
1
- import { spawnPrefab, despawnPrefab, Behaviour, reportBehaviourHookError } from '../chunk-WWP46AEF.js';
2
- import '../chunk-JEPUCLZX.js';
3
- import { NetworkIdentityComponent, TransformComponent, NetworkedPropsComponent, NetworkSpawnerComponent, NetworkTransformComponent, ScriptComponent } from '../chunk-JNYPJB55.js';
1
+ import { spawnPrefab, despawnPrefab, Behaviour, reportBehaviourHookError } from '../chunk-4FHJA6U4.js';
2
+ import '../chunk-QAZCVCMP.js';
3
+ import { NetworkIdentityComponent, TransformComponent, NetworkedPropsComponent, NetworkSpawnerComponent, NetworkTransformComponent, ScriptComponent } from '../chunk-T7SRBLPJ.js';
4
4
  import '../chunk-CKTHDXPS.js';
5
- import '../chunk-GSWC6LLD.js';
5
+ import '../chunk-GMSFEXUZ.js';
6
6
  import { __name } from '../chunk-XE4OXN2W.js';
7
7
  import { Client, Callbacks } from '@colyseus/sdk';
8
8
  import * as THREE from 'three';
@@ -91,6 +91,7 @@ function restPositions(root) {
91
91
  return out;
92
92
  }
93
93
  __name(restPositions, "restPositions");
94
+ var NUMBERED_NAME = /_\d+$/;
94
95
  function splitBoneName(raw) {
95
96
  let n = raw.replace(/^.*[:|]/, "").replace(/^(mixamorig\d*|def[-_]|org[-_]|mch[-_]|bip\d*[ _]|b[-_])/i, "").trim();
96
97
  let side = null;
@@ -192,6 +193,37 @@ function findHips(root) {
192
193
  __name(findHips, "findHips");
193
194
  var isSpineLike = /* @__PURE__ */ __name((base) => /^(spine|chest|upperchest|torso|back)\d*$/.test(base), "isSpineLike");
194
195
  function detectRig(root) {
196
+ const plain = readRig(root);
197
+ if (plain.missing.length === 0) return plain;
198
+ const stems = /* @__PURE__ */ new Map();
199
+ const count = /* @__PURE__ */ __name((n) => {
200
+ const stem = n.name.replace(NUMBERED_NAME, "");
201
+ stems.set(stem, (stems.get(stem) ?? 0) + 1);
202
+ n.children.forEach(count);
203
+ }, "count");
204
+ count(root);
205
+ const real = /* @__PURE__ */ new Map();
206
+ const strip = /* @__PURE__ */ __name((n) => {
207
+ const stem = n.name.replace(NUMBERED_NAME, "");
208
+ const name = stems.get(stem) === 1 ? stem : n.name;
209
+ real.set(name, n.name);
210
+ return { ...n, name, children: n.children.map(strip) };
211
+ }, "strip");
212
+ const found = readRig(strip(root));
213
+ if (found.missing.length >= plain.missing.length) return plain;
214
+ const realName = /* @__PURE__ */ __name((name) => real.get(name) ?? name, "realName");
215
+ const bones = {};
216
+ for (const [bone, name] of Object.entries(found.bones)) {
217
+ bones[bone] = realName(name);
218
+ }
219
+ return {
220
+ ...found,
221
+ bones,
222
+ byName: new Map([...found.byName].map(([name, bone]) => [realName(name), bone]))
223
+ };
224
+ }
225
+ __name(detectRig, "detectRig");
226
+ function readRig(root) {
195
227
  const all = [];
196
228
  const collect = /* @__PURE__ */ __name((n) => {
197
229
  all.push(n);
@@ -265,7 +297,7 @@ function detectRig(root) {
265
297
  missing: REQUIRED_HUMANOID_BONES.filter((b) => !bones[b])
266
298
  };
267
299
  }
268
- __name(detectRig, "detectRig");
300
+ __name(readRig, "readRig");
269
301
  function skeletonFromObject3D(object) {
270
302
  const o = object;
271
303
  return {
@@ -2541,6 +2573,21 @@ __name(_XRAnchorComponent, "XRAnchorComponent");
2541
2573
  var XRAnchorComponent = _XRAnchorComponent;
2542
2574
 
2543
2575
  // core/components/BoneAttachment.ts
2576
+ var xyz = /* @__PURE__ */ __name((value) => {
2577
+ const v = value;
2578
+ return typeof v?.x === "number" && typeof v.y === "number" && typeof v.z === "number" ? { x: v.x, y: v.y, z: v.z } : null;
2579
+ }, "xyz");
2580
+ function normalizeBoneHold(hold) {
2581
+ return {
2582
+ clips: Array.isArray(hold.clips) ? hold.clips.filter((c) => typeof c === "string") : [],
2583
+ bone: typeof hold.bone === "string" && hold.bone ? hold.bone : null,
2584
+ humanoid: typeof hold.humanoid === "string" && hold.humanoid ? hold.humanoid : null,
2585
+ hidden: hold.hidden === true,
2586
+ position: xyz(hold.position),
2587
+ rotation: xyz(hold.rotation)
2588
+ };
2589
+ }
2590
+ __name(normalizeBoneHold, "normalizeBoneHold");
2544
2591
  var _BoneAttachmentComponent = class _BoneAttachmentComponent extends Component {
2545
2592
  constructor(options) {
2546
2593
  super();
@@ -2548,6 +2595,8 @@ var _BoneAttachmentComponent = class _BoneAttachmentComponent extends Component
2548
2595
  this.humanoid = options?.humanoid ?? null;
2549
2596
  this.compensateScale = options?.compensateScale ?? true;
2550
2597
  this.enabled = options?.enabled ?? true;
2598
+ this.holds = (options?.holds ?? []).map(normalizeBoneHold);
2599
+ this.hideInOtherClips = options?.hideInOtherClips ?? false;
2551
2600
  }
2552
2601
  };
2553
2602
  __name(_BoneAttachmentComponent, "BoneAttachmentComponent");
@@ -2562,7 +2611,9 @@ function normalizeIKChain(chain) {
2562
2611
  pole: typeof chain.pole === "number" ? chain.pole : null,
2563
2612
  weight: Math.min(1, Math.max(0, weight)),
2564
2613
  matchRotation: chain.matchRotation ?? false,
2565
- enabled: chain.enabled ?? true
2614
+ enabled: chain.enabled ?? true,
2615
+ clips: Array.isArray(chain.clips) ? chain.clips.filter((c) => typeof c === "string") : null,
2616
+ fade: typeof chain.fade === "number" && Number.isFinite(chain.fade) && chain.fade >= 0 ? chain.fade : null
2566
2617
  };
2567
2618
  }
2568
2619
  __name(normalizeIKChain, "normalizeIKChain");
@@ -3172,6 +3223,15 @@ __name(reloadModelEntity, "reloadModelEntity");
3172
3223
  var BONE_SOCKET_FLAG = "__reluBoneSocket";
3173
3224
  var _boneScale = new THREE37__namespace.Vector3();
3174
3225
  var _anchorScale = new THREE37__namespace.Vector3();
3226
+ var _holdPosition = new THREE37__namespace.Vector3();
3227
+ var _holdRotation = new THREE37__namespace.Quaternion();
3228
+ var _heldPosition = new THREE37__namespace.Vector3();
3229
+ var _heldRotation = new THREE37__namespace.Quaternion();
3230
+ var _holdMatrix = new THREE37__namespace.Matrix4();
3231
+ var _heldMatrix = new THREE37__namespace.Matrix4();
3232
+ var _holdEuler = new THREE37__namespace.Euler();
3233
+ var _unitScale = new THREE37__namespace.Vector3(1, 1, 1);
3234
+ var _ignoredScale = new THREE37__namespace.Vector3();
3175
3235
  function applyTransform(object, transform) {
3176
3236
  object.position.set(
3177
3237
  transform.position.x,
@@ -3194,6 +3254,8 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
3194
3254
  this.boneSockets = /* @__PURE__ */ new Map();
3195
3255
  /** Attachments whose bone wasn't found in a given model (skip re-searching every frame). */
3196
3256
  this.boneMisses = /* @__PURE__ */ new Map();
3257
+ /** Attachments with holds, and which one the current clip calls for (`null`: none). */
3258
+ this.boneHolds = /* @__PURE__ */ new Map();
3197
3259
  this.scene = scene;
3198
3260
  this.camera = camera;
3199
3261
  this.isEditor = isEditor;
@@ -3380,6 +3442,9 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
3380
3442
  for (const entityId of [...this.boneSockets.keys()]) {
3381
3443
  if (!world.hasEntity(entityId)) this.dropBoneSocket(entityId);
3382
3444
  }
3445
+ for (const entityId of [...this.boneHolds.keys()]) {
3446
+ if (!world.hasEntity(entityId)) this.boneHolds.delete(entityId);
3447
+ }
3383
3448
  for (const [entityId, object] of worldObjects.entries()) {
3384
3449
  const parentEntityId = world.getComponent(entityId, ParentId)?.value;
3385
3450
  const parentObject = typeof parentEntityId === "number" ? worldObjects.get(parentEntityId) : void 0;
@@ -3413,6 +3478,7 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
3413
3478
  if (!attachment) {
3414
3479
  if (this.boneSockets.has(entityId)) this.dropBoneSocket(entityId);
3415
3480
  this.boneMisses.delete(entityId);
3481
+ this.boneHolds.delete(entityId);
3416
3482
  return null;
3417
3483
  }
3418
3484
  const root = attachment.enabled && parentEntityId !== null ? world.getComponent(parentEntityId, ModelComponent)?.object ?? null : null;
@@ -3420,7 +3486,9 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
3420
3486
  this.dropBoneSocket(entityId);
3421
3487
  return null;
3422
3488
  }
3423
- const key = `${attachment.bone}|${attachment.humanoid ?? ""}|${attachment.compensateScale}`;
3489
+ const hold = this.boneHolds.get(entityId);
3490
+ const ref = hold?.bone || hold?.humanoid ? hold : attachment;
3491
+ const key = `${ref.bone ?? ""}|${ref.humanoid ?? ""}|${attachment.compensateScale}`;
3424
3492
  const current = this.boneSockets.get(entityId);
3425
3493
  if (current && current.modelUuid === root.uuid && current.key === key && current.socket.parent === current.bone) {
3426
3494
  this.fitSocketScale(world, current, parentEntityId, attachment.compensateScale);
@@ -3429,7 +3497,7 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
3429
3497
  this.dropBoneSocket(entityId);
3430
3498
  const missKey = `${root.uuid}|${key}`;
3431
3499
  if (this.boneMisses.get(entityId) === missKey) return null;
3432
- const bone = findModelBone(root, attachment);
3500
+ const bone = findModelBone(root, ref);
3433
3501
  if (!bone) {
3434
3502
  this.boneMisses.set(entityId, missKey);
3435
3503
  return null;
@@ -3467,6 +3535,50 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
3467
3535
  _anchorScale.z / safe(_boneScale.z)
3468
3536
  );
3469
3537
  }
3538
+ /** Whether {@link applyBoneHold} is managing this attachment. */
3539
+ hasBoneHold(entityId) {
3540
+ return this.boneHolds.has(entityId);
3541
+ }
3542
+ /**
3543
+ * Put an attachment in a hold for the clip now playing (`hold` null: the
3544
+ * attachment's own bone and Transform), moving it to the hold's bone if that
3545
+ * changed. Called each frame, since a socket can be rebuilt under it.
3546
+ */
3547
+ applyBoneHold(world, entityId, hold, hidden) {
3548
+ const before = this.boneHolds.get(entityId) ?? null;
3549
+ this.boneHolds.set(entityId, hold);
3550
+ if ((before?.bone ?? null) !== (hold?.bone ?? null) || (before?.humanoid ?? null) !== (hold?.humanoid ?? null)) {
3551
+ this.boneMisses.delete(entityId);
3552
+ this.reconcileSceneFromWorld(world);
3553
+ }
3554
+ const socket = this.boneSockets.get(entityId)?.socket;
3555
+ if (!socket) return;
3556
+ socket.visible = !hidden;
3557
+ if (!hold?.position && !hold?.rotation) {
3558
+ socket.position.set(0, 0, 0);
3559
+ socket.quaternion.identity();
3560
+ return;
3561
+ }
3562
+ const held = world.getComponent(entityId, TransformComponent);
3563
+ if (!held) return;
3564
+ const own = held.position;
3565
+ _heldPosition.set(own.x, own.y, own.z);
3566
+ _heldRotation.setFromEuler(_holdEuler.set(held.rotation.x, held.rotation.y, held.rotation.z));
3567
+ if (hold.position) _holdPosition.set(hold.position.x, hold.position.y, hold.position.z);
3568
+ else _holdPosition.copy(_heldPosition);
3569
+ if (hold.rotation) {
3570
+ _holdRotation.setFromEuler(_holdEuler.set(hold.rotation.x, hold.rotation.y, hold.rotation.z));
3571
+ } else {
3572
+ _holdRotation.copy(_heldRotation);
3573
+ }
3574
+ _holdMatrix.compose(_holdPosition, _holdRotation, _unitScale).multiply(_heldMatrix.compose(_heldPosition, _heldRotation, _unitScale).invert()).decompose(socket.position, socket.quaternion, _ignoredScale);
3575
+ socket.position.multiply(socket.scale);
3576
+ }
3577
+ /** Stop managing an attachment that no longer has holds, and put it back. */
3578
+ releaseBoneHold(world, entityId) {
3579
+ this.applyBoneHold(world, entityId, null, false);
3580
+ this.boneHolds.delete(entityId);
3581
+ }
3470
3582
  /**
3471
3583
  * Load a model entity's file again and swap it in (the file was rewritten);
3472
3584
  * the entity, its components and children stay, attachments re-home.
@@ -7503,6 +7615,10 @@ function restorePostCreateComponents(world, objectManagementSystem, targetEntity
7503
7615
  if (typeof source.humanoid === "string" || source.humanoid === null) attachment.humanoid = source.humanoid;
7504
7616
  if (typeof source.compensateScale === "boolean") attachment.compensateScale = source.compensateScale;
7505
7617
  if (typeof source.enabled === "boolean") attachment.enabled = source.enabled;
7618
+ if (Array.isArray(source.holds)) {
7619
+ attachment.holds = source.holds.map((raw) => asRecord3(raw)).filter((h) => !!h).map((h) => normalizeBoneHold(h));
7620
+ }
7621
+ if (typeof source.hideInOtherClips === "boolean") attachment.hideInOtherClips = source.hideInOtherClips;
7506
7622
  }
7507
7623
  }
7508
7624
  if (values.networkIdentityValues.has(sourceEntityId) && !world.getComponent(targetEntityId, NetworkIdentityComponent)) {
@@ -15003,6 +15119,29 @@ var _XRAnchorSystem = class _XRAnchorSystem {
15003
15119
  };
15004
15120
  __name(_XRAnchorSystem, "XRAnchorSystem");
15005
15121
  var XRAnchorSystem = _XRAnchorSystem;
15122
+
15123
+ // core/systems/BoneHoldSystem.ts
15124
+ var _BoneHoldSystem = class _BoneHoldSystem {
15125
+ update(world) {
15126
+ const oms = world.getObjectManagementSystem();
15127
+ if (!oms) return;
15128
+ for (const id of world.query(BoneAttachmentComponent)) {
15129
+ const attachment = world.getComponent(id, BoneAttachmentComponent);
15130
+ if (!attachment) continue;
15131
+ if (attachment.holds.length === 0 && !attachment.hideInOtherClips) {
15132
+ if (oms.hasBoneHold(id)) oms.releaseBoneHold(world, id);
15133
+ continue;
15134
+ }
15135
+ const character = world.getComponent(id, ParentId)?.value;
15136
+ const clip = typeof character === "number" ? world.getComponent(character, AnimationComponent)?.active?.clip.name : void 0;
15137
+ const hold = clip === void 0 ? void 0 : attachment.holds.find((h) => h.clips.includes(clip));
15138
+ const hidden = hold ? hold.hidden : clip !== void 0 && attachment.hideInOtherClips;
15139
+ oms.applyBoneHold(world, id, hold ?? null, hidden);
15140
+ }
15141
+ }
15142
+ };
15143
+ __name(_BoneHoldSystem, "BoneHoldSystem");
15144
+ var BoneHoldSystem = _BoneHoldSystem;
15006
15145
  var _q = new THREE37__namespace.Quaternion();
15007
15146
  var _q2 = new THREE37__namespace.Quaternion();
15008
15147
  var _s = new THREE37__namespace.Vector3();
@@ -15010,6 +15149,7 @@ var _e = new THREE37__namespace.Vector3();
15010
15149
  var _w = new THREE37__namespace.Vector3();
15011
15150
  var _v = new THREE37__namespace.Vector3();
15012
15151
  var _p = new THREE37__namespace.Vector3();
15152
+ var FORWARD = new THREE37__namespace.Vector3(0, 0, 1);
15013
15153
  function setWorldQuaternion(o, q) {
15014
15154
  if (o.parent) {
15015
15155
  o.parent.getWorldQuaternion(_q2).invert();
@@ -15025,7 +15165,7 @@ function turn(o, q) {
15025
15165
  setWorldQuaternion(o, q.clone().multiply(_q));
15026
15166
  }
15027
15167
  __name(turn, "turn");
15028
- function twoBoneIK(upper, lower, end, target, pole) {
15168
+ function twoBoneIK(upper, lower, end, target, pole, forward = FORWARD) {
15029
15169
  upper.getWorldPosition(_s);
15030
15170
  lower.getWorldPosition(_e);
15031
15171
  end.getWorldPosition(_w);
@@ -15038,7 +15178,10 @@ function twoBoneIK(upper, lower, end, target, pole) {
15038
15178
  const dir = toT.divideScalar(want || 1).clone();
15039
15179
  const pv = _p.subVectors(pole, _s);
15040
15180
  pv.addScaledVector(dir, -pv.dot(dir));
15041
- if (pv.lengthSq() < 1e-8) pv.set(0, -1, 0).addScaledVector(dir, dir.y);
15181
+ if (pv.lengthSq() < 1e-8) {
15182
+ if (Math.abs(dir.y) > 0.9) pv.copy(forward).addScaledVector(dir, -dir.dot(forward));
15183
+ else pv.set(0, -1, 0).addScaledVector(dir, dir.y);
15184
+ }
15042
15185
  pv.normalize();
15043
15186
  const cosA = THREE37__namespace.MathUtils.clamp((a * a + c * c - b * b) / (2 * a * c), -1, 1);
15044
15187
  const joint = _s.clone().addScaledVector(dir, a * cosA).addScaledVector(pv, a * Math.sqrt(1 - cosA * cosA));
@@ -15062,6 +15205,7 @@ var _t = new THREE37__namespace.Vector3();
15062
15205
  var _p2 = new THREE37__namespace.Vector3();
15063
15206
  var _q3 = new THREE37__namespace.Quaternion();
15064
15207
  var _pq = new THREE37__namespace.Quaternion();
15208
+ var _forward = new THREE37__namespace.Vector3();
15065
15209
  var _IKSystem = class _IKSystem {
15066
15210
  constructor() {
15067
15211
  this.runtimes = /* @__PURE__ */ new Map();
@@ -15079,7 +15223,18 @@ var _IKSystem = class _IKSystem {
15079
15223
  }
15080
15224
  runtime.written.clear();
15081
15225
  }
15082
- update(world) {
15226
+ /** How strongly a chain applies now, moving its fade on by `deltaTime`. */
15227
+ fadeOf(runtime, chain, animation, deltaTime) {
15228
+ if (!chain.clips) return 1;
15229
+ const clip = animation?.active?.clip.name;
15230
+ const wanted = clip !== void 0 && chain.clips.includes(clip) ? 1 : 0;
15231
+ const was = runtime.fades.get(chain);
15232
+ const seconds = chain.fade ?? animation?.crossFadeDuration ?? 0;
15233
+ const next = was === void 0 || seconds <= 0 ? wanted : was + Math.sign(wanted - was) * Math.min(Math.abs(wanted - was), deltaTime / seconds);
15234
+ runtime.fades.set(chain, next);
15235
+ return THREE37__namespace.MathUtils.smoothstep(next, 0, 1);
15236
+ }
15237
+ update(world, deltaTime = 0) {
15083
15238
  const ids = world.query(IKComponent, ModelComponent);
15084
15239
  const alive = new Set(ids);
15085
15240
  for (const [id, runtime] of this.runtimes) {
@@ -15097,7 +15252,7 @@ var _IKSystem = class _IKSystem {
15097
15252
  let runtime = this.runtimes.get(id);
15098
15253
  if (!runtime || runtime.rootUuid !== root.uuid) {
15099
15254
  if (runtime) this.restore(runtime);
15100
- runtime = { rootUuid: root.uuid, limbs: /* @__PURE__ */ new Map(), written: /* @__PURE__ */ new Map(), reach: /* @__PURE__ */ new Map() };
15255
+ runtime = { rootUuid: root.uuid, limbs: /* @__PURE__ */ new Map(), written: /* @__PURE__ */ new Map(), reach: /* @__PURE__ */ new Map(), fades: /* @__PURE__ */ new WeakMap() };
15101
15256
  this.runtimes.set(id, runtime);
15102
15257
  }
15103
15258
  for (const [bone, w] of runtime.written) {
@@ -15106,13 +15261,15 @@ var _IKSystem = class _IKSystem {
15106
15261
  runtime.written.clear();
15107
15262
  runtime.reach.clear();
15108
15263
  if (!ik.enabled) continue;
15109
- const active = ik.chains.filter((c) => c.enabled && c.weight > 0 && typeof c.target === "number");
15264
+ const animation = world.getComponent(id, AnimationComponent);
15265
+ const active = ik.chains.map((chain) => ({ chain, weight: chain.weight * this.fadeOf(runtime, chain, animation, deltaTime) })).filter(({ chain, weight }) => chain.enabled && weight > 0 && typeof chain.target === "number");
15110
15266
  if (active.length === 0) continue;
15111
15267
  if (!matricesFresh) {
15112
15268
  world.getScene().updateMatrixWorld(true);
15113
15269
  matricesFresh = true;
15114
15270
  }
15115
- for (const chain of active) {
15271
+ root.getWorldDirection(_forward);
15272
+ for (const { chain, weight } of active) {
15116
15273
  let limb = runtime.limbs.get(chain.limb);
15117
15274
  if (!limb) {
15118
15275
  const names = LIMB_BONES[chain.limb];
@@ -15133,16 +15290,16 @@ var _IKSystem = class _IKSystem {
15133
15290
  const poleObject = typeof chain.pole === "number" ? world.getComponent(chain.pole, Object3DRef)?.object : null;
15134
15291
  if (poleObject) poleObject.getWorldPosition(_p2);
15135
15292
  else lower.getWorldPosition(_p2);
15136
- const miss = twoBoneIK(upper, lower, end, _t, _p2);
15293
+ const miss = twoBoneIK(upper, lower, end, _t, _p2, _forward);
15137
15294
  runtime.reach.set(chain.limb, Math.max(0, miss));
15138
15295
  if (chain.matchRotation) {
15139
15296
  target.getWorldQuaternion(_q3);
15140
15297
  end.parent?.getWorldQuaternion(_pq);
15141
15298
  end.quaternion.copy(_pq.invert().multiply(_q3));
15142
15299
  }
15143
- if (chain.weight < 1) {
15300
+ if (weight < 1) {
15144
15301
  [upper, lower, end].forEach((bone, i) => {
15145
- bone.quaternion.copy(animated[i].slerp(bone.quaternion, chain.weight));
15302
+ bone.quaternion.copy(animated[i].slerp(bone.quaternion, weight));
15146
15303
  });
15147
15304
  }
15148
15305
  for (const bone of [upper, lower, end]) {
@@ -16403,6 +16560,7 @@ var XRHoverVisualSystem = _XRHoverVisualSystem;
16403
16560
 
16404
16561
  exports.AnimationSystem = AnimationSystem;
16405
16562
  exports.AudioSystem = AudioSystem;
16563
+ exports.BoneHoldSystem = BoneHoldSystem;
16406
16564
  exports.CameraSyncSystem = CameraSyncSystem;
16407
16565
  exports.DEFAULT_SCRIPT_ERROR_RETRY_DELAY = DEFAULT_SCRIPT_ERROR_RETRY_DELAY;
16408
16566
  exports.EnvironmentSyncSystem = EnvironmentSyncSystem;