@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
package/dist/index.cjs CHANGED
@@ -3147,6 +3147,21 @@ function createXRAnchorComponent(world, entityId, ...args) {
3147
3147
  __name(createXRAnchorComponent, "createXRAnchorComponent");
3148
3148
 
3149
3149
  // core/components/BoneAttachment.ts
3150
+ var xyz = /* @__PURE__ */ __name((value) => {
3151
+ const v = value;
3152
+ return typeof v?.x === "number" && typeof v.y === "number" && typeof v.z === "number" ? { x: v.x, y: v.y, z: v.z } : null;
3153
+ }, "xyz");
3154
+ function normalizeBoneHold(hold) {
3155
+ return {
3156
+ clips: Array.isArray(hold.clips) ? hold.clips.filter((c) => typeof c === "string") : [],
3157
+ bone: typeof hold.bone === "string" && hold.bone ? hold.bone : null,
3158
+ humanoid: typeof hold.humanoid === "string" && hold.humanoid ? hold.humanoid : null,
3159
+ hidden: hold.hidden === true,
3160
+ position: xyz(hold.position),
3161
+ rotation: xyz(hold.rotation)
3162
+ };
3163
+ }
3164
+ __name(normalizeBoneHold, "normalizeBoneHold");
3150
3165
  var _BoneAttachmentComponent = class _BoneAttachmentComponent extends Component {
3151
3166
  constructor(options) {
3152
3167
  super();
@@ -3154,6 +3169,8 @@ var _BoneAttachmentComponent = class _BoneAttachmentComponent extends Component
3154
3169
  this.humanoid = options?.humanoid ?? null;
3155
3170
  this.compensateScale = options?.compensateScale ?? true;
3156
3171
  this.enabled = options?.enabled ?? true;
3172
+ this.holds = (options?.holds ?? []).map(normalizeBoneHold);
3173
+ this.hideInOtherClips = options?.hideInOtherClips ?? false;
3157
3174
  }
3158
3175
  };
3159
3176
  __name(_BoneAttachmentComponent, "BoneAttachmentComponent");
@@ -3176,7 +3193,9 @@ function normalizeIKChain(chain) {
3176
3193
  pole: typeof chain.pole === "number" ? chain.pole : null,
3177
3194
  weight: Math.min(1, Math.max(0, weight)),
3178
3195
  matchRotation: chain.matchRotation ?? false,
3179
- enabled: chain.enabled ?? true
3196
+ enabled: chain.enabled ?? true,
3197
+ clips: Array.isArray(chain.clips) ? chain.clips.filter((c) => typeof c === "string") : null,
3198
+ fade: typeof chain.fade === "number" && Number.isFinite(chain.fade) && chain.fade >= 0 ? chain.fade : null
3180
3199
  };
3181
3200
  }
3182
3201
  __name(normalizeIKChain, "normalizeIKChain");
@@ -3864,6 +3883,7 @@ function restPositions(root) {
3864
3883
  return out;
3865
3884
  }
3866
3885
  __name(restPositions, "restPositions");
3886
+ var NUMBERED_NAME = /_\d+$/;
3867
3887
  function splitBoneName(raw) {
3868
3888
  let n = raw.replace(/^.*[:|]/, "").replace(/^(mixamorig\d*|def[-_]|org[-_]|mch[-_]|bip\d*[ _]|b[-_])/i, "").trim();
3869
3889
  let side = null;
@@ -3965,6 +3985,37 @@ function findHips(root) {
3965
3985
  __name(findHips, "findHips");
3966
3986
  var isSpineLike = /* @__PURE__ */ __name((base) => /^(spine|chest|upperchest|torso|back)\d*$/.test(base), "isSpineLike");
3967
3987
  function detectRig(root) {
3988
+ const plain = readRig(root);
3989
+ if (plain.missing.length === 0) return plain;
3990
+ const stems = /* @__PURE__ */ new Map();
3991
+ const count = /* @__PURE__ */ __name((n) => {
3992
+ const stem = n.name.replace(NUMBERED_NAME, "");
3993
+ stems.set(stem, (stems.get(stem) ?? 0) + 1);
3994
+ n.children.forEach(count);
3995
+ }, "count");
3996
+ count(root);
3997
+ const real = /* @__PURE__ */ new Map();
3998
+ const strip = /* @__PURE__ */ __name((n) => {
3999
+ const stem = n.name.replace(NUMBERED_NAME, "");
4000
+ const name = stems.get(stem) === 1 ? stem : n.name;
4001
+ real.set(name, n.name);
4002
+ return { ...n, name, children: n.children.map(strip) };
4003
+ }, "strip");
4004
+ const found = readRig(strip(root));
4005
+ if (found.missing.length >= plain.missing.length) return plain;
4006
+ const realName = /* @__PURE__ */ __name((name) => real.get(name) ?? name, "realName");
4007
+ const bones = {};
4008
+ for (const [bone, name] of Object.entries(found.bones)) {
4009
+ bones[bone] = realName(name);
4010
+ }
4011
+ return {
4012
+ ...found,
4013
+ bones,
4014
+ byName: new Map([...found.byName].map(([name, bone]) => [realName(name), bone]))
4015
+ };
4016
+ }
4017
+ __name(detectRig, "detectRig");
4018
+ function readRig(root) {
3968
4019
  const all = [];
3969
4020
  const collect = /* @__PURE__ */ __name((n) => {
3970
4021
  all.push(n);
@@ -4038,7 +4089,7 @@ function detectRig(root) {
4038
4089
  missing: REQUIRED_HUMANOID_BONES.filter((b) => !bones[b])
4039
4090
  };
4040
4091
  }
4041
- __name(detectRig, "detectRig");
4092
+ __name(readRig, "readRig");
4042
4093
  function skeletonFromObject3D(object) {
4043
4094
  const o = object;
4044
4095
  return {
@@ -4264,6 +4315,7 @@ __export(components_exports, {
4264
4315
  createHandPoseEntry: () => createHandPoseEntry,
4265
4316
  defaultMaterialValue: () => defaultMaterialValue,
4266
4317
  handPoseDefinitionFor: () => handPoseDefinitionFor,
4318
+ normalizeBoneHold: () => normalizeBoneHold,
4267
4319
  normalizeEnvironmentLighting: () => normalizeEnvironmentLighting,
4268
4320
  normalizeIKChain: () => normalizeIKChain,
4269
4321
  normalizePhysicsState: () => normalizePhysicsState,
@@ -4435,6 +4487,15 @@ __name(reloadModelEntity, "reloadModelEntity");
4435
4487
  var BONE_SOCKET_FLAG = "__reluBoneSocket";
4436
4488
  var _boneScale = new THREE67__namespace.Vector3();
4437
4489
  var _anchorScale = new THREE67__namespace.Vector3();
4490
+ var _holdPosition = new THREE67__namespace.Vector3();
4491
+ var _holdRotation = new THREE67__namespace.Quaternion();
4492
+ var _heldPosition = new THREE67__namespace.Vector3();
4493
+ var _heldRotation = new THREE67__namespace.Quaternion();
4494
+ var _holdMatrix = new THREE67__namespace.Matrix4();
4495
+ var _heldMatrix = new THREE67__namespace.Matrix4();
4496
+ var _holdEuler = new THREE67__namespace.Euler();
4497
+ var _unitScale = new THREE67__namespace.Vector3(1, 1, 1);
4498
+ var _ignoredScale = new THREE67__namespace.Vector3();
4438
4499
  function createTransform(input) {
4439
4500
  return new TransformComponent(input);
4440
4501
  }
@@ -4461,6 +4522,8 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
4461
4522
  this.boneSockets = /* @__PURE__ */ new Map();
4462
4523
  /** Attachments whose bone wasn't found in a given model (skip re-searching every frame). */
4463
4524
  this.boneMisses = /* @__PURE__ */ new Map();
4525
+ /** Attachments with holds, and which one the current clip calls for (`null`: none). */
4526
+ this.boneHolds = /* @__PURE__ */ new Map();
4464
4527
  this.scene = scene;
4465
4528
  this.camera = camera;
4466
4529
  this.isEditor = isEditor;
@@ -4647,6 +4710,9 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
4647
4710
  for (const entityId of [...this.boneSockets.keys()]) {
4648
4711
  if (!world.hasEntity(entityId)) this.dropBoneSocket(entityId);
4649
4712
  }
4713
+ for (const entityId of [...this.boneHolds.keys()]) {
4714
+ if (!world.hasEntity(entityId)) this.boneHolds.delete(entityId);
4715
+ }
4650
4716
  for (const [entityId, object] of worldObjects.entries()) {
4651
4717
  const parentEntityId = world.getComponent(entityId, ParentId)?.value;
4652
4718
  const parentObject = typeof parentEntityId === "number" ? worldObjects.get(parentEntityId) : void 0;
@@ -4680,6 +4746,7 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
4680
4746
  if (!attachment) {
4681
4747
  if (this.boneSockets.has(entityId)) this.dropBoneSocket(entityId);
4682
4748
  this.boneMisses.delete(entityId);
4749
+ this.boneHolds.delete(entityId);
4683
4750
  return null;
4684
4751
  }
4685
4752
  const root = attachment.enabled && parentEntityId !== null ? world.getComponent(parentEntityId, ModelComponent)?.object ?? null : null;
@@ -4687,7 +4754,9 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
4687
4754
  this.dropBoneSocket(entityId);
4688
4755
  return null;
4689
4756
  }
4690
- const key = `${attachment.bone}|${attachment.humanoid ?? ""}|${attachment.compensateScale}`;
4757
+ const hold = this.boneHolds.get(entityId);
4758
+ const ref = hold?.bone || hold?.humanoid ? hold : attachment;
4759
+ const key = `${ref.bone ?? ""}|${ref.humanoid ?? ""}|${attachment.compensateScale}`;
4691
4760
  const current = this.boneSockets.get(entityId);
4692
4761
  if (current && current.modelUuid === root.uuid && current.key === key && current.socket.parent === current.bone) {
4693
4762
  this.fitSocketScale(world, current, parentEntityId, attachment.compensateScale);
@@ -4696,7 +4765,7 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
4696
4765
  this.dropBoneSocket(entityId);
4697
4766
  const missKey = `${root.uuid}|${key}`;
4698
4767
  if (this.boneMisses.get(entityId) === missKey) return null;
4699
- const bone = findModelBone(root, attachment);
4768
+ const bone = findModelBone(root, ref);
4700
4769
  if (!bone) {
4701
4770
  this.boneMisses.set(entityId, missKey);
4702
4771
  return null;
@@ -4734,6 +4803,50 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
4734
4803
  _anchorScale.z / safe(_boneScale.z)
4735
4804
  );
4736
4805
  }
4806
+ /** Whether {@link applyBoneHold} is managing this attachment. */
4807
+ hasBoneHold(entityId) {
4808
+ return this.boneHolds.has(entityId);
4809
+ }
4810
+ /**
4811
+ * Put an attachment in a hold for the clip now playing (`hold` null: the
4812
+ * attachment's own bone and Transform), moving it to the hold's bone if that
4813
+ * changed. Called each frame, since a socket can be rebuilt under it.
4814
+ */
4815
+ applyBoneHold(world, entityId, hold, hidden) {
4816
+ const before = this.boneHolds.get(entityId) ?? null;
4817
+ this.boneHolds.set(entityId, hold);
4818
+ if ((before?.bone ?? null) !== (hold?.bone ?? null) || (before?.humanoid ?? null) !== (hold?.humanoid ?? null)) {
4819
+ this.boneMisses.delete(entityId);
4820
+ this.reconcileSceneFromWorld(world);
4821
+ }
4822
+ const socket = this.boneSockets.get(entityId)?.socket;
4823
+ if (!socket) return;
4824
+ socket.visible = !hidden;
4825
+ if (!hold?.position && !hold?.rotation) {
4826
+ socket.position.set(0, 0, 0);
4827
+ socket.quaternion.identity();
4828
+ return;
4829
+ }
4830
+ const held = world.getComponent(entityId, TransformComponent);
4831
+ if (!held) return;
4832
+ const own = held.position;
4833
+ _heldPosition.set(own.x, own.y, own.z);
4834
+ _heldRotation.setFromEuler(_holdEuler.set(held.rotation.x, held.rotation.y, held.rotation.z));
4835
+ if (hold.position) _holdPosition.set(hold.position.x, hold.position.y, hold.position.z);
4836
+ else _holdPosition.copy(_heldPosition);
4837
+ if (hold.rotation) {
4838
+ _holdRotation.setFromEuler(_holdEuler.set(hold.rotation.x, hold.rotation.y, hold.rotation.z));
4839
+ } else {
4840
+ _holdRotation.copy(_heldRotation);
4841
+ }
4842
+ _holdMatrix.compose(_holdPosition, _holdRotation, _unitScale).multiply(_heldMatrix.compose(_heldPosition, _heldRotation, _unitScale).invert()).decompose(socket.position, socket.quaternion, _ignoredScale);
4843
+ socket.position.multiply(socket.scale);
4844
+ }
4845
+ /** Stop managing an attachment that no longer has holds, and put it back. */
4846
+ releaseBoneHold(world, entityId) {
4847
+ this.applyBoneHold(world, entityId, null, false);
4848
+ this.boneHolds.delete(entityId);
4849
+ }
4737
4850
  /**
4738
4851
  * Load a model entity's file again and swap it in (the file was rewritten);
4739
4852
  * the entity, its components and children stay, attachments re-home.
@@ -6840,6 +6953,10 @@ function restorePostCreateComponents(world, objectManagementSystem, targetEntity
6840
6953
  if (typeof source.humanoid === "string" || source.humanoid === null) attachment.humanoid = source.humanoid;
6841
6954
  if (typeof source.compensateScale === "boolean") attachment.compensateScale = source.compensateScale;
6842
6955
  if (typeof source.enabled === "boolean") attachment.enabled = source.enabled;
6956
+ if (Array.isArray(source.holds)) {
6957
+ attachment.holds = source.holds.map((raw) => asRecord3(raw)).filter((h) => !!h).map((h) => normalizeBoneHold(h));
6958
+ }
6959
+ if (typeof source.hideInOtherClips === "boolean") attachment.hideInOtherClips = source.hideInOtherClips;
6843
6960
  }
6844
6961
  }
6845
6962
  if (values.networkIdentityValues.has(sourceEntityId) && !world.getComponent(targetEntityId, NetworkIdentityComponent)) {
@@ -17864,6 +17981,29 @@ var _XRAnchorSystem = class _XRAnchorSystem {
17864
17981
  };
17865
17982
  __name(_XRAnchorSystem, "XRAnchorSystem");
17866
17983
  var XRAnchorSystem = _XRAnchorSystem;
17984
+
17985
+ // core/systems/BoneHoldSystem.ts
17986
+ var _BoneHoldSystem = class _BoneHoldSystem {
17987
+ update(world) {
17988
+ const oms = world.getObjectManagementSystem();
17989
+ if (!oms) return;
17990
+ for (const id of world.query(BoneAttachmentComponent)) {
17991
+ const attachment = world.getComponent(id, BoneAttachmentComponent);
17992
+ if (!attachment) continue;
17993
+ if (attachment.holds.length === 0 && !attachment.hideInOtherClips) {
17994
+ if (oms.hasBoneHold(id)) oms.releaseBoneHold(world, id);
17995
+ continue;
17996
+ }
17997
+ const character = world.getComponent(id, ParentId)?.value;
17998
+ const clip = typeof character === "number" ? world.getComponent(character, AnimationComponent)?.active?.clip.name : void 0;
17999
+ const hold = clip === void 0 ? void 0 : attachment.holds.find((h) => h.clips.includes(clip));
18000
+ const hidden = hold ? hold.hidden : clip !== void 0 && attachment.hideInOtherClips;
18001
+ oms.applyBoneHold(world, id, hold ?? null, hidden);
18002
+ }
18003
+ }
18004
+ };
18005
+ __name(_BoneHoldSystem, "BoneHoldSystem");
18006
+ var BoneHoldSystem = _BoneHoldSystem;
17867
18007
  var _q = new THREE67__namespace.Quaternion();
17868
18008
  var _q2 = new THREE67__namespace.Quaternion();
17869
18009
  var _s = new THREE67__namespace.Vector3();
@@ -17871,6 +18011,7 @@ var _e = new THREE67__namespace.Vector3();
17871
18011
  var _w = new THREE67__namespace.Vector3();
17872
18012
  var _v = new THREE67__namespace.Vector3();
17873
18013
  var _p = new THREE67__namespace.Vector3();
18014
+ var FORWARD = new THREE67__namespace.Vector3(0, 0, 1);
17874
18015
  function setWorldQuaternion(o, q) {
17875
18016
  if (o.parent) {
17876
18017
  o.parent.getWorldQuaternion(_q2).invert();
@@ -17886,7 +18027,7 @@ function turn(o, q) {
17886
18027
  setWorldQuaternion(o, q.clone().multiply(_q));
17887
18028
  }
17888
18029
  __name(turn, "turn");
17889
- function twoBoneIK(upper, lower, end, target, pole) {
18030
+ function twoBoneIK(upper, lower, end, target, pole, forward = FORWARD) {
17890
18031
  upper.getWorldPosition(_s);
17891
18032
  lower.getWorldPosition(_e);
17892
18033
  end.getWorldPosition(_w);
@@ -17899,7 +18040,10 @@ function twoBoneIK(upper, lower, end, target, pole) {
17899
18040
  const dir = toT.divideScalar(want || 1).clone();
17900
18041
  const pv = _p.subVectors(pole, _s);
17901
18042
  pv.addScaledVector(dir, -pv.dot(dir));
17902
- if (pv.lengthSq() < 1e-8) pv.set(0, -1, 0).addScaledVector(dir, dir.y);
18043
+ if (pv.lengthSq() < 1e-8) {
18044
+ if (Math.abs(dir.y) > 0.9) pv.copy(forward).addScaledVector(dir, -dir.dot(forward));
18045
+ else pv.set(0, -1, 0).addScaledVector(dir, dir.y);
18046
+ }
17903
18047
  pv.normalize();
17904
18048
  const cosA = THREE67__namespace.MathUtils.clamp((a * a + c * c - b * b) / (2 * a * c), -1, 1);
17905
18049
  const joint = _s.clone().addScaledVector(dir, a * cosA).addScaledVector(pv, a * Math.sqrt(1 - cosA * cosA));
@@ -17934,6 +18078,7 @@ var _t = new THREE67__namespace.Vector3();
17934
18078
  var _p2 = new THREE67__namespace.Vector3();
17935
18079
  var _q3 = new THREE67__namespace.Quaternion();
17936
18080
  var _pq = new THREE67__namespace.Quaternion();
18081
+ var _forward = new THREE67__namespace.Vector3();
17937
18082
  var _IKSystem = class _IKSystem {
17938
18083
  constructor() {
17939
18084
  this.runtimes = /* @__PURE__ */ new Map();
@@ -17951,7 +18096,18 @@ var _IKSystem = class _IKSystem {
17951
18096
  }
17952
18097
  runtime.written.clear();
17953
18098
  }
17954
- update(world) {
18099
+ /** How strongly a chain applies now, moving its fade on by `deltaTime`. */
18100
+ fadeOf(runtime, chain, animation, deltaTime) {
18101
+ if (!chain.clips) return 1;
18102
+ const clip = animation?.active?.clip.name;
18103
+ const wanted = clip !== void 0 && chain.clips.includes(clip) ? 1 : 0;
18104
+ const was = runtime.fades.get(chain);
18105
+ const seconds = chain.fade ?? animation?.crossFadeDuration ?? 0;
18106
+ const next = was === void 0 || seconds <= 0 ? wanted : was + Math.sign(wanted - was) * Math.min(Math.abs(wanted - was), deltaTime / seconds);
18107
+ runtime.fades.set(chain, next);
18108
+ return THREE67__namespace.MathUtils.smoothstep(next, 0, 1);
18109
+ }
18110
+ update(world, deltaTime = 0) {
17955
18111
  const ids = world.query(IKComponent, ModelComponent);
17956
18112
  const alive = new Set(ids);
17957
18113
  for (const [id, runtime] of this.runtimes) {
@@ -17969,7 +18125,7 @@ var _IKSystem = class _IKSystem {
17969
18125
  let runtime = this.runtimes.get(id);
17970
18126
  if (!runtime || runtime.rootUuid !== root.uuid) {
17971
18127
  if (runtime) this.restore(runtime);
17972
- runtime = { rootUuid: root.uuid, limbs: /* @__PURE__ */ new Map(), written: /* @__PURE__ */ new Map(), reach: /* @__PURE__ */ new Map() };
18128
+ runtime = { rootUuid: root.uuid, limbs: /* @__PURE__ */ new Map(), written: /* @__PURE__ */ new Map(), reach: /* @__PURE__ */ new Map(), fades: /* @__PURE__ */ new WeakMap() };
17973
18129
  this.runtimes.set(id, runtime);
17974
18130
  }
17975
18131
  for (const [bone, w] of runtime.written) {
@@ -17978,13 +18134,15 @@ var _IKSystem = class _IKSystem {
17978
18134
  runtime.written.clear();
17979
18135
  runtime.reach.clear();
17980
18136
  if (!ik.enabled) continue;
17981
- const active = ik.chains.filter((c) => c.enabled && c.weight > 0 && typeof c.target === "number");
18137
+ const animation = world.getComponent(id, AnimationComponent);
18138
+ 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");
17982
18139
  if (active.length === 0) continue;
17983
18140
  if (!matricesFresh) {
17984
18141
  world.getScene().updateMatrixWorld(true);
17985
18142
  matricesFresh = true;
17986
18143
  }
17987
- for (const chain of active) {
18144
+ root.getWorldDirection(_forward);
18145
+ for (const { chain, weight } of active) {
17988
18146
  let limb = runtime.limbs.get(chain.limb);
17989
18147
  if (!limb) {
17990
18148
  const names = LIMB_BONES[chain.limb];
@@ -18005,16 +18163,16 @@ var _IKSystem = class _IKSystem {
18005
18163
  const poleObject = typeof chain.pole === "number" ? world.getComponent(chain.pole, Object3DRef)?.object : null;
18006
18164
  if (poleObject) poleObject.getWorldPosition(_p2);
18007
18165
  else lower.getWorldPosition(_p2);
18008
- const miss = twoBoneIK(upper, lower, end, _t, _p2);
18166
+ const miss = twoBoneIK(upper, lower, end, _t, _p2, _forward);
18009
18167
  runtime.reach.set(chain.limb, Math.max(0, miss));
18010
18168
  if (chain.matchRotation) {
18011
18169
  target.getWorldQuaternion(_q3);
18012
18170
  end.parent?.getWorldQuaternion(_pq);
18013
18171
  end.quaternion.copy(_pq.invert().multiply(_q3));
18014
18172
  }
18015
- if (chain.weight < 1) {
18173
+ if (weight < 1) {
18016
18174
  [upper, lower, end].forEach((bone, i) => {
18017
- bone.quaternion.copy(animated[i].slerp(bone.quaternion, chain.weight));
18175
+ bone.quaternion.copy(animated[i].slerp(bone.quaternion, weight));
18018
18176
  });
18019
18177
  }
18020
18178
  for (const bone of [upper, lower, end]) {
@@ -19647,6 +19805,7 @@ var _World = class _World {
19647
19805
  isEditor: isEditor ?? false
19648
19806
  });
19649
19807
  const animationSystem = new AnimationSystem();
19808
+ const boneHoldSystem = new BoneHoldSystem();
19650
19809
  const ikSystem = new IKSystem();
19651
19810
  const audioSystem = new AudioSystem({ isEditor: isEditor ?? false });
19652
19811
  const videoSystem = new VideoSystem({ isEditor: isEditor ?? false });
@@ -19681,6 +19840,7 @@ var _World = class _World {
19681
19840
  lightSyncSystem,
19682
19841
  materialSyncSystem,
19683
19842
  animationSystem,
19843
+ boneHoldSystem,
19684
19844
  ikSystem,
19685
19845
  audioSystem,
19686
19846
  videoSystem,
@@ -20846,6 +21006,7 @@ exports.AnimationSystem = AnimationSystem;
20846
21006
  exports.AudioMixer = AudioMixer;
20847
21007
  exports.AudioSystem = AudioSystem;
20848
21008
  exports.Behaviour = Behaviour;
21009
+ exports.BoneHoldSystem = BoneHoldSystem;
20849
21010
  exports.CURLED_COS = CURLED_COS;
20850
21011
  exports.CameraSyncSystem = CameraSyncSystem;
20851
21012
  exports.Component = Component;