@relu-interactives/spatial-ecs 0.5.2 → 0.8.0

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 (511) hide show
  1. package/dist/{System-V_mv07le.d.cts → System-8D-XBDKZ.d.cts} +734 -8
  2. package/dist/{System-V_mv07le.d.ts → System-DPMAW30g.d.ts} +734 -8
  3. package/dist/{XRHandPose-CU3vNFuS.d.ts → XRHandPose-G0Dl-F0w.d.ts} +93 -3
  4. package/dist/{XRHandPose-CQTLGxFC.d.cts → XRHandPose-VQMT1WXj.d.cts} +93 -3
  5. package/dist/animation/index.cjs +252 -0
  6. package/dist/animation/index.cjs.map +1 -0
  7. package/dist/animation/index.d.cts +100 -0
  8. package/dist/animation/index.d.ts +100 -0
  9. package/dist/animation/index.js +4 -0
  10. package/dist/animation/index.js.map +1 -0
  11. package/dist/chunk-CKTHDXPS.js +11 -0
  12. package/dist/chunk-CKTHDXPS.js.map +1 -0
  13. package/dist/chunk-G4XJ53LS.js +1237 -0
  14. package/dist/chunk-G4XJ53LS.js.map +1 -0
  15. package/dist/chunk-GSWC6LLD.js +241 -0
  16. package/dist/chunk-GSWC6LLD.js.map +1 -0
  17. package/dist/{chunk-DF5SSRN6.js → chunk-JIJQFW6P.js} +1216 -2920
  18. package/dist/chunk-JIJQFW6P.js.map +1 -0
  19. package/dist/{chunk-BUEKOSR5.js → chunk-NNDUOQ7O.js} +188 -14
  20. package/dist/chunk-NNDUOQ7O.js.map +1 -0
  21. package/dist/chunk-OHCNPPMX.js +334 -0
  22. package/dist/chunk-OHCNPPMX.js.map +1 -0
  23. package/dist/{chunk-RXBLOO5B.js → chunk-SGF73YTF.js} +105 -715
  24. package/dist/chunk-SGF73YTF.js.map +1 -0
  25. package/dist/chunk-U727NTWQ.js +2856 -0
  26. package/dist/chunk-U727NTWQ.js.map +1 -0
  27. package/dist/{chunk-OY7ZODZP.js → chunk-XE4OXN2W.js} +3 -9
  28. package/dist/chunk-XE4OXN2W.js.map +1 -0
  29. package/dist/{chunk-OWQSESTO.js → chunk-XU2DVWCP.js} +4 -3
  30. package/dist/chunk-XU2DVWCP.js.map +1 -0
  31. package/dist/components/index.cjs +183 -10
  32. package/dist/components/index.cjs.map +1 -1
  33. package/dist/components/index.d.cts +5 -3
  34. package/dist/components/index.d.ts +5 -3
  35. package/dist/components/index.js +3 -2
  36. package/dist/docs/api/Behaviour/classes/Behaviour.md +366 -79
  37. package/dist/docs/api/Behaviour/index.md +7 -3
  38. package/dist/docs/api/Behaviour/type-aliases/UiInteractionEvent.md +35 -0
  39. package/dist/docs/api/Component/classes/Component.md +14 -1
  40. package/dist/docs/api/components/classes/AnimationComponent.md +26 -26
  41. package/dist/docs/api/components/classes/AudioComponent.md +19 -19
  42. package/dist/docs/api/components/classes/CameraComponent.md +14 -14
  43. package/dist/docs/api/components/classes/EntityType.md +4 -4
  44. package/dist/docs/api/components/classes/Environment.md +5 -4
  45. package/dist/docs/api/components/classes/ImageComponent.md +7 -7
  46. package/dist/docs/api/components/classes/ImageTarget.md +8 -8
  47. package/dist/docs/api/components/classes/ImageTargetAnchor.md +4 -4
  48. package/dist/docs/api/components/classes/InstanceSlotComponent.md +4 -4
  49. package/dist/docs/api/components/classes/InstancedMeshComponent.md +10 -10
  50. package/dist/docs/api/components/classes/LightComponent.md +6 -6
  51. package/dist/docs/api/components/classes/MaterialComponent.md +16 -16
  52. package/dist/docs/api/components/classes/MeshComponent.md +3 -3
  53. package/dist/docs/api/components/classes/MeshGeometryComponent.md +9 -9
  54. package/dist/docs/api/components/classes/ModelComponent.md +8 -5
  55. package/dist/docs/api/components/classes/Name.md +3 -3
  56. package/dist/docs/api/components/classes/Object3DRef.md +4 -4
  57. package/dist/docs/api/components/classes/ParentId.md +3 -3
  58. package/dist/docs/api/components/classes/PhysicsComponent.md +7 -6
  59. package/dist/docs/api/components/classes/Postprocessing.md +3 -3
  60. package/dist/docs/api/components/classes/PrefabInstance.md +5 -5
  61. package/dist/docs/api/components/classes/PrefabNode.md +3 -3
  62. package/dist/docs/api/components/classes/ScriptComponent.md +5 -5
  63. package/dist/docs/api/components/classes/ScriptObjectComponent.md +9 -9
  64. package/dist/docs/api/components/classes/Selectable.md +3 -3
  65. package/dist/docs/api/components/classes/SelectionTransformState.md +5 -5
  66. package/dist/docs/api/components/classes/SpriteComponent.md +7 -7
  67. package/dist/docs/api/components/classes/TransformComponent.md +12 -12
  68. package/dist/docs/api/components/classes/UIButtonComponent.md +63 -0
  69. package/dist/docs/api/components/classes/UIPanelComponent.md +62 -0
  70. package/dist/docs/api/components/classes/UISliderComponent.md +59 -0
  71. package/dist/docs/api/components/classes/UITextComponent.md +59 -0
  72. package/dist/docs/api/components/classes/UIToggleComponent.md +56 -0
  73. package/dist/docs/api/components/classes/VRTeleportAreaComponent.md +53 -0
  74. package/dist/docs/api/components/classes/VideoComponent.md +28 -28
  75. package/dist/docs/api/components/classes/XRAnchorComponent.md +64 -0
  76. package/dist/docs/api/components/classes/XREnvironmentComponent.md +64 -0
  77. package/dist/docs/api/components/classes/XRHandPoseComponent.md +50 -0
  78. package/dist/docs/api/components/classes/XRInteractableComponent.md +74 -0
  79. package/dist/docs/api/components/classes/XRInteractorComponent.md +57 -0
  80. package/dist/docs/api/components/classes/XRInteractorSideComponent.md +50 -0
  81. package/dist/docs/api/components/classes/XRRigComponent.md +68 -0
  82. package/dist/docs/api/components/functions/createAttachPoint.md +25 -0
  83. package/dist/docs/api/components/functions/createHandPoseEntry.md +25 -0
  84. package/dist/docs/api/components/functions/defaultMaterialValue.md +1 -1
  85. package/dist/docs/api/components/functions/handPoseDefinitionFor.md +33 -0
  86. package/dist/docs/api/components/functions/normalizeEnvironmentLighting.md +30 -0
  87. package/dist/docs/api/components/functions/normalizePhysicsState.md +1 -1
  88. package/dist/docs/api/components/functions/setModelLoadState.md +33 -0
  89. package/dist/docs/api/components/functions/setPhysicsLiveRef.md +3 -9
  90. package/dist/docs/api/components/index.md +61 -4
  91. package/dist/docs/api/components/type-aliases/AnimationComponentOptions.md +9 -9
  92. package/dist/docs/api/components/type-aliases/CameraComponentOptions.md +13 -13
  93. package/dist/docs/api/components/type-aliases/CameraProjection.md +1 -1
  94. package/dist/docs/api/components/type-aliases/CameraRuntimeType.md +5 -3
  95. package/dist/docs/api/components/type-aliases/ColliderShape.md +1 -1
  96. package/dist/docs/api/components/type-aliases/ColliderState.md +20 -20
  97. package/dist/docs/api/components/type-aliases/CubeMeshParameters.md +4 -4
  98. package/dist/docs/api/components/type-aliases/EditableMeshObjectKind.md +1 -1
  99. package/dist/docs/api/components/type-aliases/EnvironmentFogState.md +8 -8
  100. package/dist/docs/api/components/type-aliases/EnvironmentFogType.md +1 -1
  101. package/dist/docs/api/components/type-aliases/EnvironmentGradientEffect.md +1 -1
  102. package/dist/docs/api/components/type-aliases/EnvironmentLightingState.md +40 -0
  103. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxImageProjection.md +22 -0
  104. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxState.md +9 -7
  105. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxType.md +1 -1
  106. package/dist/docs/api/components/type-aliases/EnvironmentState.md +7 -5
  107. package/dist/docs/api/components/type-aliases/EnvironmentToneMapping.md +16 -0
  108. package/dist/docs/api/components/type-aliases/ImageTargetAnchorOptions.md +3 -3
  109. package/dist/docs/api/components/type-aliases/ImageTargetReference.md +7 -7
  110. package/dist/docs/api/components/type-aliases/InstanceTransform.md +13 -13
  111. package/dist/docs/api/components/type-aliases/InstancedMeshKind.md +1 -1
  112. package/dist/docs/api/components/type-aliases/LightShadowState.md +37 -0
  113. package/dist/docs/api/components/type-aliases/LightValueState.md +13 -11
  114. package/dist/docs/api/components/type-aliases/MaterialTypeValue.md +1 -1
  115. package/dist/docs/api/components/type-aliases/MaterialValueState.md +28 -28
  116. package/dist/docs/api/components/type-aliases/MeshGeometryParameters.md +1 -1
  117. package/dist/docs/api/components/type-aliases/MeshGeometryParametersByKind.md +7 -7
  118. package/dist/docs/api/components/type-aliases/ModelLoadState.md +15 -0
  119. package/dist/docs/api/components/type-aliases/PhysicsState.md +3 -3
  120. package/dist/docs/api/components/type-aliases/PlaneMeshParameters.md +3 -3
  121. package/dist/docs/api/components/type-aliases/PostprocessingState.md +62 -62
  122. package/dist/docs/api/components/type-aliases/RadiusHeightMeshParameters.md +3 -3
  123. package/dist/docs/api/components/type-aliases/RadiusMeshParameters.md +2 -2
  124. package/dist/docs/api/components/type-aliases/RigidbodyState.md +17 -17
  125. package/dist/docs/api/components/type-aliases/RigidbodyType.md +1 -1
  126. package/dist/docs/api/components/type-aliases/ScriptEntry.md +8 -8
  127. package/dist/docs/api/components/type-aliases/ScriptObjectComponentInput.md +1 -1
  128. package/dist/docs/api/components/type-aliases/ScriptObjectRuntimeState.md +1 -1
  129. package/dist/docs/api/components/type-aliases/TextureFilteringValue.md +1 -1
  130. package/dist/docs/api/components/type-aliases/TransformData.md +4 -4
  131. package/dist/docs/api/components/type-aliases/TransformModeValue.md +1 -1
  132. package/dist/docs/api/components/type-aliases/TransformSpaceValue.md +1 -1
  133. package/dist/docs/api/components/type-aliases/UIButtonOptions.md +45 -0
  134. package/dist/docs/api/components/type-aliases/UIPanelOptions.md +39 -0
  135. package/dist/docs/api/components/type-aliases/UISliderOptions.md +39 -0
  136. package/dist/docs/api/components/type-aliases/UITextOptions.md +41 -0
  137. package/dist/docs/api/components/type-aliases/UIToggleOptions.md +35 -0
  138. package/dist/docs/api/components/type-aliases/UiFollowMode.md +15 -0
  139. package/dist/docs/api/components/type-aliases/UiTextAlign.md +13 -0
  140. package/dist/docs/api/components/type-aliases/UiTextVAlign.md +13 -0
  141. package/dist/docs/api/components/type-aliases/VRTeleportAreaOptions.md +29 -0
  142. package/dist/docs/api/components/type-aliases/Vec3.md +4 -4
  143. package/dist/docs/api/components/type-aliases/VrTeleportShape.md +15 -0
  144. package/dist/docs/api/components/type-aliases/XRAnchorOptions.md +23 -0
  145. package/dist/docs/api/components/type-aliases/XRHandPoseOptions.md +23 -0
  146. package/dist/docs/api/components/type-aliases/XRInteractableOptions.md +75 -0
  147. package/dist/docs/api/components/type-aliases/XRInteractorOptions.md +37 -0
  148. package/dist/docs/api/components/type-aliases/XRRigOptions.md +51 -0
  149. package/dist/docs/api/components/type-aliases/XrAttachPoint.md +53 -0
  150. package/dist/docs/api/components/type-aliases/XrDistanceGrabBehavior.md +19 -0
  151. package/dist/docs/api/components/type-aliases/XrEnvironmentKind.md +15 -0
  152. package/dist/docs/api/components/type-aliases/XrEnvironmentOrientation.md +15 -0
  153. package/dist/docs/api/components/type-aliases/XrEnvironmentPhysics.md +25 -0
  154. package/dist/docs/api/components/type-aliases/XrGrabGesture.md +19 -0
  155. package/dist/docs/api/components/type-aliases/XrGrabHands.md +20 -0
  156. package/dist/docs/api/components/type-aliases/XrGrabReach.md +20 -0
  157. package/dist/docs/api/components/type-aliases/XrHandPoseEntry.md +49 -0
  158. package/dist/docs/api/components/type-aliases/XrHandPreset.md +19 -0
  159. package/dist/docs/api/components/type-aliases/XrInteractorSide.md +15 -0
  160. package/dist/docs/api/components/type-aliases/XrInteractorType.md +13 -0
  161. package/dist/docs/api/components/type-aliases/XrLocomotionMode.md +15 -0
  162. package/dist/docs/api/components/type-aliases/XrTrackingOrigin.md +24 -0
  163. package/dist/docs/api/components/type-aliases/XrTwoHandRotation.md +15 -0
  164. package/dist/docs/api/components/variables/DEFAULT_COLLIDER_STATE.md +1 -1
  165. package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_LIGHTING.md +15 -0
  166. package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_STATE.md +1 -1
  167. package/dist/docs/api/components/variables/DEFAULT_INSTANCED_MESH_PARAMETERS.md +1 -1
  168. package/dist/docs/api/components/variables/DEFAULT_INSTANCE_TRANSFORM.md +1 -1
  169. package/dist/docs/api/components/variables/DEFAULT_MESH_GEOMETRY_PARAMETERS.md +1 -1
  170. package/dist/docs/api/components/variables/DEFAULT_PHYSICS_STATE.md +1 -1
  171. package/dist/docs/api/components/variables/DEFAULT_POSE_CURLS.md +13 -0
  172. package/dist/docs/api/components/variables/DEFAULT_POSE_DIRECTIONS.md +13 -0
  173. package/dist/docs/api/components/variables/DEFAULT_POSTPROCESSING_STATE.md +1 -1
  174. package/dist/docs/api/components/variables/DEFAULT_RIGIDBODY_STATE.md +1 -1
  175. package/dist/docs/api/components/variables/MODEL_NO_PATH_MESSAGE.md +15 -0
  176. package/dist/docs/api/index/classes/AnimationStateMachine.md +16 -16
  177. package/dist/docs/api/index/classes/AnimationStateManager.md +13 -13
  178. package/dist/docs/api/index/classes/AnimationSystem.md +3 -3
  179. package/dist/docs/api/index/classes/AudioSystem.md +4 -4
  180. package/dist/docs/api/index/classes/CameraSyncSystem.md +2 -2
  181. package/dist/docs/api/index/classes/EnvironmentSyncSystem.md +19 -4
  182. package/dist/docs/api/index/classes/HandPoseTracker.md +114 -0
  183. package/dist/docs/api/index/classes/InputSystem.md +33 -33
  184. package/dist/docs/api/index/classes/InstancedMeshSystem.md +2 -2
  185. package/dist/docs/api/index/classes/LightSyncSystem.md +2 -2
  186. package/dist/docs/api/index/classes/MaterialSyncSystem.md +3 -3
  187. package/dist/docs/api/index/classes/MeshGeometrySystem.md +2 -2
  188. package/dist/docs/api/index/classes/ObjectManagementSystem.md +14 -14
  189. package/dist/docs/api/index/classes/ObjectVisibilitySystem.md +2 -2
  190. package/dist/docs/api/index/classes/PhysicsSyncSystem.md +4 -4
  191. package/dist/docs/api/index/classes/PostprocessingSyncSystem.md +34 -10
  192. package/dist/docs/api/index/classes/RenderSystem.md +13 -4
  193. package/dist/docs/api/index/classes/ScriptBehaviourSystem.md +9 -5
  194. package/dist/docs/api/index/classes/ScriptObject.md +10 -10
  195. package/dist/docs/api/index/classes/ScriptObjectSystem.md +6 -6
  196. package/dist/docs/api/index/classes/TeleportAimGate.md +114 -0
  197. package/dist/docs/api/index/classes/ThrowVelocityTracker.md +89 -0
  198. package/dist/docs/api/index/classes/TransformSyncSystem.md +2 -2
  199. package/dist/docs/api/index/classes/UIInteractionSystem.md +60 -0
  200. package/dist/docs/api/index/classes/UIPanelSystem.md +79 -0
  201. package/dist/docs/api/index/classes/VRTeleportAreaSystem.md +49 -0
  202. package/dist/docs/api/index/classes/VideoSystem.md +8 -6
  203. package/dist/docs/api/index/classes/World.md +282 -100
  204. package/dist/docs/api/index/classes/XRAnchorSystem.md +90 -0
  205. package/dist/docs/api/index/classes/XRControllerVisualSystem.md +77 -0
  206. package/dist/docs/api/index/classes/XREnvironmentSystem.md +137 -0
  207. package/dist/docs/api/index/classes/XRHandPoseSystem.md +107 -0
  208. package/dist/docs/api/index/classes/XRHitTestSystem.md +93 -0
  209. package/dist/docs/api/index/classes/XRHoverVisualSystem.md +76 -0
  210. package/dist/docs/api/index/classes/XRInputSystem.md +189 -0
  211. package/dist/docs/api/index/classes/XRInteractionSystem.md +323 -0
  212. package/dist/docs/api/index/classes/XRLocomotionSystem.md +128 -0
  213. package/dist/docs/api/index/classes/XRSessionSystem.md +116 -0
  214. package/dist/docs/api/index/classes/XRTeleportVisualSystem.md +75 -0
  215. package/dist/docs/api/index/functions/angularVelocityFrom.md +33 -0
  216. package/dist/docs/api/index/functions/applyHandMaterial.md +26 -0
  217. package/dist/docs/api/index/functions/applyPrefabToSnapshotInstances.md +1 -1
  218. package/dist/docs/api/index/functions/arcGroundCrossing.md +30 -0
  219. package/dist/docs/api/index/functions/buildComponentValueMaps.md +1 -1
  220. package/dist/docs/api/index/functions/buildNodeKeyMapsFromSnapshot.md +1 -1
  221. package/dist/docs/api/index/functions/buildNodeMapsFromSnapshot.md +1 -1
  222. package/dist/docs/api/index/functions/canonicalizeComponentValue.md +1 -1
  223. package/dist/docs/api/index/functions/clearModelCache.md +1 -1
  224. package/dist/docs/api/index/functions/clearPrefabCache.md +1 -1
  225. package/dist/docs/api/index/functions/cloneHandPose.md +23 -0
  226. package/dist/docs/api/index/functions/collectDiffPaths.md +1 -1
  227. package/dist/docs/api/index/functions/collectDirectPrefabDependencies.md +1 -1
  228. package/dist/docs/api/index/functions/collectEntitySubtree.md +1 -1
  229. package/dist/docs/api/index/functions/collectSnapshotSubtreeIds.md +1 -1
  230. package/dist/docs/api/index/functions/computeFingerCurl.md +29 -0
  231. package/dist/docs/api/index/functions/computeHandShape.md +29 -0
  232. package/dist/docs/api/index/functions/computeInstanceOverrides.md +1 -1
  233. package/dist/docs/api/index/functions/computePalmPose.md +30 -0
  234. package/dist/docs/api/index/functions/computePalmWidth.md +25 -0
  235. package/dist/docs/api/index/functions/computePinch.md +29 -0
  236. package/dist/docs/api/index/functions/computeSpread.md +33 -0
  237. package/dist/docs/api/index/functions/createAnimationComponent.md +1 -1
  238. package/dist/docs/api/index/functions/createAudioComponent.md +1 -1
  239. package/dist/docs/api/index/functions/createCameraComponent.md +1 -1
  240. package/dist/docs/api/index/functions/createEntityTypeComponent.md +2 -2
  241. package/dist/docs/api/index/functions/createEnvironmentComponent.md +1 -1
  242. package/dist/docs/api/index/functions/createHandMaterial.md +30 -0
  243. package/dist/docs/api/index/functions/createImageComponent.md +1 -1
  244. package/dist/docs/api/index/functions/createImageTargetAnchorComponent.md +1 -1
  245. package/dist/docs/api/index/functions/createImageTargetComponent.md +2 -2
  246. package/dist/docs/api/index/functions/createInstanceSlotComponent.md +1 -1
  247. package/dist/docs/api/index/functions/createInstancedMeshComponent.md +1 -1
  248. package/dist/docs/api/index/functions/createLightComponent.md +2 -2
  249. package/dist/docs/api/index/functions/createMaterialComponent.md +2 -2
  250. package/dist/docs/api/index/functions/createMeshComponent.md +1 -1
  251. package/dist/docs/api/index/functions/createMeshGeometryComponent.md +1 -1
  252. package/dist/docs/api/index/functions/createModelComponent.md +1 -1
  253. package/dist/docs/api/index/functions/createNameComponent.md +1 -1
  254. package/dist/docs/api/index/functions/createObject3DRefComponent.md +1 -1
  255. package/dist/docs/api/index/functions/createParentIdComponent.md +1 -1
  256. package/dist/docs/api/index/functions/createPhysicsComponent.md +1 -1
  257. package/dist/docs/api/index/functions/createPostprocessingComponent.md +1 -1
  258. package/dist/docs/api/index/functions/createScriptComponent.md +1 -1
  259. package/dist/docs/api/index/functions/createScriptObjectComponent.md +1 -1
  260. package/dist/docs/api/index/functions/createSelectableComponent.md +1 -1
  261. package/dist/docs/api/index/functions/createSelectionTransformStateComponent.md +1 -1
  262. package/dist/docs/api/index/functions/createSpriteComponent.md +1 -1
  263. package/dist/docs/api/index/functions/createTransformComponent.md +1 -1
  264. package/dist/docs/api/index/functions/createUIButtonComponent.md +28 -0
  265. package/dist/docs/api/index/functions/createUIPanelComponent.md +28 -0
  266. package/dist/docs/api/index/functions/createUISliderComponent.md +28 -0
  267. package/dist/docs/api/index/functions/createUITextComponent.md +28 -0
  268. package/dist/docs/api/index/functions/createUIToggleComponent.md +28 -0
  269. package/dist/docs/api/index/functions/createVRTeleportAreaComponent.md +28 -0
  270. package/dist/docs/api/index/functions/createVideoComponent.md +1 -1
  271. package/dist/docs/api/index/functions/createXRAnchorComponent.md +28 -0
  272. package/dist/docs/api/index/functions/createXRHandPoseComponent.md +28 -0
  273. package/dist/docs/api/index/functions/createXRInteractableComponent.md +28 -0
  274. package/dist/docs/api/index/functions/createXRInteractorComponent.md +28 -0
  275. package/dist/docs/api/index/functions/createXRInteractorSideComponent.md +28 -0
  276. package/dist/docs/api/index/functions/createXRRigComponent.md +28 -0
  277. package/dist/docs/api/index/functions/decanonicalizeComponentValue.md +1 -1
  278. package/dist/docs/api/index/functions/despawnPrefab.md +1 -1
  279. package/dist/docs/api/index/functions/encodeOverride.md +1 -1
  280. package/dist/docs/api/index/functions/estimateHandScale.md +28 -0
  281. package/dist/docs/api/index/functions/findSnapshotRootEntityIds.md +1 -1
  282. package/dist/docs/api/index/functions/findTopLevelNestedRegions.md +1 -1
  283. package/dist/docs/api/index/functions/getHandPosePreset.md +31 -0
  284. package/dist/docs/api/index/functions/groupOverridePaths.md +1 -1
  285. package/dist/docs/api/index/functions/handPoseFromCurls.md +42 -0
  286. package/dist/docs/api/index/functions/hydrateWorldFromSnapshot.md +1 -1
  287. package/dist/docs/api/index/functions/hydrateWorldFromSnapshotDetailed.md +1 -1
  288. package/dist/docs/api/index/functions/indexSnapshotByEntity.md +1 -1
  289. package/dist/docs/api/index/functions/instantiateSubtree.md +1 -1
  290. package/dist/docs/api/index/functions/loadPrefab.md +1 -1
  291. package/dist/docs/api/index/functions/loadSharedGltf.md +1 -1
  292. package/dist/docs/api/index/functions/matchHandPose.md +34 -0
  293. package/dist/docs/api/index/functions/mergeComponentValue.md +1 -1
  294. package/dist/docs/api/index/functions/parseOverride.md +1 -1
  295. package/dist/docs/api/index/functions/parsePrefabAsset.md +1 -1
  296. package/dist/docs/api/index/functions/prefabFileVersionFor.md +1 -1
  297. package/dist/docs/api/index/functions/readXrCapabilities.md +30 -0
  298. package/dist/docs/api/index/functions/registerDefaultComponentFactories.md +1 -1
  299. package/dist/docs/api/index/functions/registerDefaultFactories.md +1 -1
  300. package/dist/docs/api/index/functions/remapSnapshotEntityIds.md +3 -3
  301. package/dist/docs/api/index/functions/resolveDracoDecoderPath.md +1 -1
  302. package/dist/docs/api/index/functions/restoreComponentState.md +1 -1
  303. package/dist/docs/api/index/functions/restorePostCreateComponents.md +1 -1
  304. package/dist/docs/api/index/functions/sampleTeleportArc.md +40 -0
  305. package/dist/docs/api/index/functions/serializeEntitySubtree.md +1 -1
  306. package/dist/docs/api/index/functions/setDracoDecoderPath.md +1 -1
  307. package/dist/docs/api/index/functions/setPrefabAssetUrlResolver.md +1 -1
  308. package/dist/docs/api/index/functions/spawnPrefab.md +1 -1
  309. package/dist/docs/api/index/index.md +116 -4
  310. package/dist/docs/api/index/interfaces/ChromaKeyOptions.md +20 -0
  311. package/dist/docs/api/index/interfaces/EcsSystem.md +3 -3
  312. package/dist/docs/api/index/interfaces/PostprocessingBuildContext.md +21 -0
  313. package/dist/docs/api/index/interfaces/PostprocessingPipeline.md +84 -0
  314. package/dist/docs/api/index/interfaces/RenderBackend.md +168 -0
  315. package/dist/docs/api/index/interfaces/StateMachine.md +13 -13
  316. package/dist/docs/api/index/type-aliases/AnimationStateCallbacks.md +4 -4
  317. package/dist/docs/api/index/type-aliases/ApplyPrefabToSnapshotResult.md +3 -3
  318. package/dist/docs/api/index/type-aliases/ComponentFactory.md +1 -1
  319. package/dist/docs/api/index/type-aliases/ComponentValueMaps.md +50 -26
  320. package/dist/docs/api/index/type-aliases/EcsComponentFactoryKind.md +14 -2
  321. package/dist/docs/api/index/type-aliases/EcsRenderer.md +17 -0
  322. package/dist/docs/api/index/type-aliases/EcsWorldComponentSnapshot.md +3 -3
  323. package/dist/docs/api/index/type-aliases/EcsWorldStateSnapshotLike.md +4 -4
  324. package/dist/docs/api/index/type-aliases/ExternalRefWarning.md +5 -5
  325. package/dist/docs/api/index/type-aliases/HandMaterialOptions.md +32 -0
  326. package/dist/docs/api/index/type-aliases/HandPoseTrackerOptions.md +27 -0
  327. package/dist/docs/api/index/type-aliases/HydrateOptions.md +3 -3
  328. package/dist/docs/api/index/type-aliases/HydrateWorldFromSnapshotResult.md +4 -4
  329. package/dist/docs/api/index/type-aliases/InstantiateSubtreeResult.md +3 -3
  330. package/dist/docs/api/index/type-aliases/KeyboardKey.md +1 -1
  331. package/dist/docs/api/index/type-aliases/ModuleLoader.md +1 -1
  332. package/dist/docs/api/index/type-aliases/MouseButton.md +1 -1
  333. package/dist/docs/api/index/type-aliases/NestedRegion.md +5 -5
  334. package/dist/docs/api/index/type-aliases/NodeKeyMaps.md +5 -5
  335. package/dist/docs/api/index/type-aliases/NodeMaps.md +4 -4
  336. package/dist/docs/api/index/type-aliases/PrefabAsset.md +5 -5
  337. package/dist/docs/api/index/type-aliases/RemapSnapshotOptions.md +2 -2
  338. package/dist/docs/api/index/type-aliases/RendererKind.md +15 -0
  339. package/dist/docs/api/index/type-aliases/ScriptBehaviourSystemOptions.md +23 -0
  340. package/dist/docs/api/index/type-aliases/ScriptErrorEvent.md +39 -0
  341. package/dist/docs/api/index/type-aliases/ScriptErrorListener.md +25 -0
  342. package/dist/docs/api/index/type-aliases/ScriptErrorPhase.md +28 -0
  343. package/dist/docs/api/index/type-aliases/ScriptErrorReport.md +31 -0
  344. package/dist/docs/api/index/type-aliases/ScriptErrorSource.md +15 -0
  345. package/dist/docs/api/index/type-aliases/SelectionContext.md +4 -4
  346. package/dist/docs/api/index/type-aliases/SerializeEntitySubtreeResult.md +4 -4
  347. package/dist/docs/api/index/type-aliases/SpawnPrefabOptions.md +5 -5
  348. package/dist/docs/api/index/type-aliases/SpawnPrefabSource.md +1 -1
  349. package/dist/docs/api/index/type-aliases/SubtreeSnapshot.md +3 -3
  350. package/dist/docs/api/index/type-aliases/UiCanvasLike.md +46 -0
  351. package/dist/docs/api/index/type-aliases/VelocitySample.md +23 -0
  352. package/dist/docs/api/index/type-aliases/XrCapabilities.md +41 -0
  353. package/dist/docs/api/index/type-aliases/XrFinger.md +13 -0
  354. package/dist/docs/api/index/type-aliases/XrFingerCurl.md +27 -0
  355. package/dist/docs/api/index/type-aliases/XrFingerTarget.md +31 -0
  356. package/dist/docs/api/index/type-aliases/XrHandJointName.md +40 -0
  357. package/dist/docs/api/index/type-aliases/XrHandJoints.md +18 -0
  358. package/dist/docs/api/index/type-aliases/XrHandPoseAxis.md +15 -0
  359. package/dist/docs/api/index/type-aliases/XrHandPoseContext.md +23 -0
  360. package/dist/docs/api/index/type-aliases/XrHandPoseDefinition.md +47 -0
  361. package/dist/docs/api/index/type-aliases/XrHandPoseDirection.md +21 -0
  362. package/dist/docs/api/index/type-aliases/XrHandPoseEvent.md +13 -0
  363. package/dist/docs/api/index/type-aliases/XrHandPoseEventDetail.md +27 -0
  364. package/dist/docs/api/index/type-aliases/XrHandPoseMatch.md +25 -0
  365. package/dist/docs/api/index/type-aliases/XrHandPoseOrientation.md +25 -0
  366. package/dist/docs/api/index/type-aliases/XrHandShape.md +46 -0
  367. package/dist/docs/api/index/type-aliases/XrHandedness.md +15 -0
  368. package/dist/docs/api/index/type-aliases/XrHitResult.md +25 -0
  369. package/dist/docs/api/index/type-aliases/XrInputKind.md +19 -0
  370. package/dist/docs/api/index/type-aliases/XrInputState.md +60 -0
  371. package/dist/docs/api/index/type-aliases/XrPalmPose.md +31 -0
  372. package/dist/docs/api/index/variables/ADDED_NODE_MARKER_COMPONENT.md +2 -2
  373. package/dist/docs/api/index/variables/ARC_GRAVITY.md +15 -0
  374. package/dist/docs/api/index/variables/ARC_MAX_TIME.md +15 -0
  375. package/dist/docs/api/index/variables/ARC_SPEED.md +15 -0
  376. package/dist/docs/api/index/variables/ARC_STEPS.md +15 -0
  377. package/dist/docs/api/index/variables/CURLED_COS.md +13 -0
  378. package/dist/docs/api/index/variables/DEFAULT_DIRECTION_TOLERANCE.md +15 -0
  379. package/dist/docs/api/index/variables/DEFAULT_ENTER_CONFIDENCE.md +13 -0
  380. package/dist/docs/api/index/variables/DEFAULT_EXIT_CONFIDENCE.md +13 -0
  381. package/dist/docs/api/index/variables/DEFAULT_LOST_GRACE_SECONDS.md +13 -0
  382. package/dist/docs/api/index/variables/DEFAULT_MIN_HOLD_SECONDS.md +13 -0
  383. package/dist/docs/api/index/variables/DEFAULT_SCRIPT_ERROR_RETRY_DELAY.md +17 -0
  384. package/dist/docs/api/index/variables/FALLBACK_HAND_SCALE.md +15 -0
  385. package/dist/docs/api/index/variables/HAND_POSE_PRESETS.md +19 -0
  386. package/dist/docs/api/index/variables/HAND_POSE_PRESET_IDS.md +15 -0
  387. package/dist/docs/api/index/variables/HYDRATABLE_ENTITY_KINDS.md +1 -1
  388. package/dist/docs/api/index/variables/KeyboardKeys.md +89 -89
  389. package/dist/docs/api/index/variables/MATCH_FALLOFF.md +15 -0
  390. package/dist/docs/api/index/variables/MAX_PLAUSIBLE_SPEED.md +25 -0
  391. package/dist/docs/api/index/variables/MAX_SAMPLE_AGE_SECONDS.md +18 -0
  392. package/dist/docs/api/index/variables/NODE_KEY_SEPARATOR.md +1 -1
  393. package/dist/docs/api/index/variables/NO_XR_CAPABILITIES.md +15 -0
  394. package/dist/docs/api/index/variables/OVERRIDE_DIFF_EXCLUDED_COMPONENTS.md +1 -1
  395. package/dist/docs/api/index/variables/OVERRIDE_ROOT_EXCLUDED_COMPONENTS.md +1 -1
  396. package/dist/docs/api/index/variables/PINCH_FINGERS.md +15 -0
  397. package/dist/docs/api/index/variables/PREFAB_FILE_VERSION.md +1 -1
  398. package/dist/docs/api/index/variables/PREFAB_FILE_VERSION_NESTED.md +1 -1
  399. package/dist/docs/api/index/variables/SCRIPT_OBJECT_ROOT_FLAG.md +1 -1
  400. package/dist/docs/api/index/variables/SHARED_MODEL_RESOURCE_FLAG.md +1 -1
  401. package/dist/docs/api/index/variables/STRAIGHT_COS.md +19 -0
  402. package/dist/docs/api/index/variables/VELOCITY_SAMPLES.md +15 -0
  403. package/dist/docs/api/index/variables/XR_FINGERS.md +13 -0
  404. package/dist/docs/api/index/variables/XR_HOVER_SHELL_FLAG.md +15 -0
  405. package/dist/docs/api/index/variables/webglBackend.md +16 -0
  406. package/dist/docs/api/typedoc-sidebar.json +1 -1
  407. package/dist/docs/api/types/type-aliases/AssetInput.md +3 -3
  408. package/dist/docs/api/types/type-aliases/CheckboxInput.md +3 -3
  409. package/dist/docs/api/types/type-aliases/ColorInput.md +1 -1
  410. package/dist/docs/api/types/type-aliases/ComponentInput.md +4 -4
  411. package/dist/docs/api/types/type-aliases/ComponentKind.md +1 -1
  412. package/dist/docs/api/types/type-aliases/DropdownInput.md +3 -3
  413. package/dist/docs/api/types/type-aliases/DropdownOption.md +3 -3
  414. package/dist/docs/api/types/type-aliases/EcsEntityEditorKind.md +1 -1
  415. package/dist/docs/api/types/type-aliases/EcsEntityKind.md +10 -2
  416. package/dist/docs/api/types/type-aliases/EntityId.md +1 -1
  417. package/dist/docs/api/types/type-aliases/EntityInput.md +3 -3
  418. package/dist/docs/api/types/type-aliases/FloatInput.md +1 -1
  419. package/dist/docs/api/types/type-aliases/IntersectionResult.md +3 -3
  420. package/dist/docs/api/types/type-aliases/ParentLookup.md +3 -3
  421. package/dist/docs/api/types/type-aliases/SelectionListener.md +1 -1
  422. package/dist/docs/api/types/type-aliases/SliderInput.md +5 -5
  423. package/dist/docs/api/types/type-aliases/TextInput.md +1 -1
  424. package/dist/docs/api/types/type-aliases/ToggleInput.md +1 -1
  425. package/dist/docs/api/types/type-aliases/Vec3.md +1 -1
  426. package/dist/docs/api/types/type-aliases/Vector2Input.md +3 -3
  427. package/dist/docs/api/types/type-aliases/Vector3Input.md +4 -4
  428. package/dist/docs/api/types/type-aliases/WorldEntityView.md +1 -1
  429. package/dist/docs/guide/audio-mixing-and-sound-banks.md +71 -0
  430. package/dist/docs/guide/authoring-a-behaviour.md +3 -3
  431. package/dist/docs/guide/authoring-a-script-object.md +12 -9
  432. package/dist/docs/guide/behaviour-data-binding/index.md +11 -11
  433. package/dist/docs/guide/behaviour-lifecycle.md +9 -0
  434. package/dist/docs/guide/bone-attachments-and-ik.md +128 -0
  435. package/dist/docs/guide/component-catalog.md +10 -2
  436. package/dist/docs/guide/components/light.md +42 -0
  437. package/dist/docs/guide/components/model.md +32 -3
  438. package/dist/docs/guide/concepts.md +2 -2
  439. package/dist/docs/guide/getting-started/creating-objects.md +2 -2
  440. package/dist/docs/guide/getting-started/editing-objects.md +2 -2
  441. package/dist/docs/guide/getting-started/editor/ai-agent.md +227 -0
  442. package/dist/docs/guide/getting-started/editor/hierarchy.md +2 -2
  443. package/dist/docs/guide/getting-started/editor/index.md +3 -2
  444. package/dist/docs/guide/getting-started/editor/inspector.md +2 -2
  445. package/dist/docs/guide/getting-started/editor/scene-inspector.md +3 -3
  446. package/dist/docs/guide/getting-started/editor/toolbar.md +11 -11
  447. package/dist/docs/guide/getting-started/editor/viewport.md +17 -9
  448. package/dist/docs/guide/getting-started/index.md +1 -1
  449. package/dist/docs/guide/getting-started/installation.md +1 -1
  450. package/dist/docs/guide/getting-started/preview-and-test.md +7 -7
  451. package/dist/docs/guide/getting-started/project-types/image-tracking.md +23 -11
  452. package/dist/docs/guide/getting-started/project-types/index.md +4 -4
  453. package/dist/docs/guide/getting-started/project-types/vr.md +270 -2
  454. package/dist/docs/guide/getting-started/projects.md +4 -5
  455. package/dist/docs/guide/getting-started/shortcuts.md +5 -4
  456. package/dist/docs/guide/multiplayer.md +92 -0
  457. package/dist/docs/guide/scene/environment.md +101 -4
  458. package/dist/docs/guide/scene/index.md +4 -4
  459. package/dist/docs/guide/scene/postprocessing.md +67 -5
  460. package/dist/docs/guide/spawning/area-light.md +2 -0
  461. package/dist/docs/guide/systems/environment-sync-system.md +11 -6
  462. package/dist/docs/guide/systems/light-sync-system.md +5 -3
  463. package/dist/docs/guide/systems/postprocessing-sync-system.md +16 -6
  464. package/dist/docs/guide/systems/render-system.md +7 -6
  465. package/dist/docs/guide/systems/script-behaviour-system.md +7 -5
  466. package/dist/docs/guide/systems/script-object-system.md +3 -1
  467. package/dist/docs/guide/systems/video-system.md +1 -1
  468. package/dist/docs/guide/webgpu-and-tsl.md +415 -0
  469. package/dist/docs/guide/world-api.md +52 -2
  470. package/dist/factories/index.cjs +770 -283
  471. package/dist/factories/index.cjs.map +1 -1
  472. package/dist/factories/index.d.cts +14 -3
  473. package/dist/factories/index.d.ts +14 -3
  474. package/dist/factories/index.js +7 -4
  475. package/dist/{index-D2Jt_JzH.d.ts → index-C61n65PE.d.ts} +135 -42
  476. package/dist/{index-DaG03vyN.d.cts → index-C70N4BYG.d.cts} +135 -42
  477. package/dist/{index-C3ik3sA1.d.ts → index-D9DjrUn3.d.cts} +25 -3
  478. package/dist/{index-Dlr-7-4m.d.cts → index-DppafVu4.d.ts} +25 -3
  479. package/dist/index.cjs +3642 -1263
  480. package/dist/index.cjs.map +1 -1
  481. package/dist/index.d.cts +113 -11
  482. package/dist/index.d.ts +113 -11
  483. package/dist/index.js +187 -12
  484. package/dist/index.js.map +1 -1
  485. package/dist/network/index.cjs +4896 -0
  486. package/dist/network/index.cjs.map +1 -0
  487. package/dist/network/index.d.cts +98 -0
  488. package/dist/network/index.d.ts +98 -0
  489. package/dist/network/index.js +493 -0
  490. package/dist/network/index.js.map +1 -0
  491. package/dist/systems/index.cjs +3958 -1762
  492. package/dist/systems/index.cjs.map +1 -1
  493. package/dist/systems/index.d.cts +4 -2
  494. package/dist/systems/index.d.ts +4 -2
  495. package/dist/systems/index.js +8 -4
  496. package/dist/types.d.cts +3 -1
  497. package/dist/types.d.ts +3 -1
  498. package/dist/webgpu/index.d.ts +113 -0
  499. package/dist/webgpu/index.js +302 -0
  500. package/dist/webgpu/index.js.map +1 -0
  501. package/dist/worldSnapshotUtils.d.cts +3 -1
  502. package/dist/worldSnapshotUtils.d.ts +3 -1
  503. package/dist/worldSnapshotUtils.js +3 -2
  504. package/package.json +19 -3
  505. package/dist/chunk-BUEKOSR5.js.map +0 -1
  506. package/dist/chunk-DF5SSRN6.js.map +0 -1
  507. package/dist/chunk-OWQSESTO.js.map +0 -1
  508. package/dist/chunk-OY7ZODZP.js.map +0 -1
  509. package/dist/chunk-RXBLOO5B.js.map +0 -1
  510. package/dist/chunk-WJD2VKEH.js +0 -315
  511. package/dist/chunk-WJD2VKEH.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../core/network/colyseus.ts","../../core/network/latency.ts","../../core/network/snapshotBuffer.ts","../../core/network/NetworkSystem.ts"],"names":["view"],"mappings":"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","file":"index.js","sourcesContent":["import { Callbacks, Client, type Room } from \"@colyseus/sdk\";\n\nimport type { NetEntityView, NetPose, NetworkTransport } from \"./types\";\n\ntype RemoteEntity = NetPose & {\n id: string;\n owner: string;\n prefab: string;\n props: Map<string, string>;\n};\ntype RemoteState = {\n host: string;\n entities: Map<string, RemoteEntity>;\n players: Map<string, unknown>;\n};\n\nconst view = (e: RemoteEntity): NetEntityView => ({\n id: e.id,\n owner: e.owner,\n prefab: e.prefab,\n x: e.x,\n y: e.y,\n z: e.z,\n qx: e.qx,\n qy: e.qy,\n qz: e.qz,\n qw: e.qw,\n props: Object.fromEntries(e.props.entries()),\n});\n\n/** A shared world in a Colyseus room running `ReluRoom`. */\nexport class ColyseusTransport implements NetworkTransport {\n private constructor(private readonly room: Room<unknown, RemoteState>) {}\n\n static async connect(options: {\n endpoint: string;\n room: string;\n join?: Record<string, unknown>;\n }): Promise<ColyseusTransport> {\n const client = new Client(options.endpoint);\n const room = await client.joinOrCreate<RemoteState>(options.room, options.join ?? {});\n return new ColyseusTransport(room as Room<unknown, RemoteState>);\n }\n\n get sessionId() {\n return this.room.sessionId;\n }\n\n get host() {\n return this.room.state.host;\n }\n\n get players() {\n return [...this.room.state.players.keys()];\n }\n\n private get $() {\n return Callbacks.get(this.room as never) as unknown as {\n onAdd: (...args: unknown[]) => () => void;\n onRemove: (...args: unknown[]) => () => void;\n onChange: (...args: unknown[]) => () => void;\n };\n }\n\n onEntityAdd(cb: (entity: NetEntityView) => void) {\n this.$.onAdd(\"entities\", (entity: RemoteEntity) => cb(view(entity)));\n }\n\n onEntityChange(cb: (entity: NetEntityView) => void) {\n const $ = this.$;\n $.onAdd(\"entities\", (entity: RemoteEntity) => {\n $.onChange(entity, () => cb(view(entity)));\n $.onChange(entity, \"props\", () => cb(view(entity)));\n });\n }\n\n onEntityRemove(cb: (id: string) => void) {\n this.$.onRemove(\"entities\", (_entity: RemoteEntity, id: string) => cb(id));\n }\n\n onPlayerJoin(cb: (id: string) => void) {\n this.$.onAdd(\"players\", (_player: unknown, id: string) => cb(id));\n }\n\n onPlayerLeave(cb: (id: string) => void) {\n this.$.onRemove(\"players\", (_player: unknown, id: string) => cb(id));\n }\n\n onMessage(cb: (name: string, payload: unknown, from: string) => void) {\n this.room.onMessage(\"m\", (m: { name: string; payload: unknown; from: string }) =>\n cb(m.name, m.payload, m.from),\n );\n }\n\n onCorrect(cb: (id: string, pose: NetPose) => void) {\n this.room.onMessage(\"correct\", (m: NetPose & { id: string }) => cb(m.id, m));\n }\n\n onClose(cb: () => void) {\n this.room.onLeave(() => cb());\n }\n\n registerScene(entities: Parameters<NetworkTransport[\"registerScene\"]>[0]) {\n this.room.send(\"scene\", entities);\n }\n\n spawn(request: Parameters<NetworkTransport[\"spawn\"]>[0]) {\n this.room.send(\"spawn\", request);\n }\n\n despawn(id: string) {\n this.room.send(\"despawn\", { id });\n }\n\n sendPose(id: string, pose: NetPose) {\n this.room.send(\"pose\", { id, ...pose });\n }\n\n setProp(id: string, key: string, json: string) {\n this.room.send(\"prop\", { id, key, json });\n }\n\n send(name: string, payload: unknown) {\n this.room.send(\"m\", { name, payload });\n }\n\n leave() {\n void this.room.leave();\n }\n}\n","import type { NetworkTransport } from \"./types\";\n\n/**\n * A transport with a bad connection: everything takes `ms` longer round trip.\n * For testing a game at a real player's latency on a local server.\n */\nexport function withLatency(transport: NetworkTransport, ms: number): NetworkTransport {\n if (ms <= 0) return transport;\n const oneWay = ms / 2;\n return new Proxy(transport, {\n get(target, key) {\n const value = Reflect.get(target, key);\n if (typeof value !== \"function\") return value;\n const name = String(key);\n const fn = value as (...args: unknown[]) => unknown;\n if (name === \"leave\") return fn.bind(target);\n if (name.startsWith(\"on\")) {\n return (cb: (...args: unknown[]) => void) =>\n fn.call(target, (...args: unknown[]) => {\n setTimeout(() => cb(...args), oneWay);\n });\n }\n return (...args: unknown[]) => {\n setTimeout(() => fn.apply(target, args), oneWay);\n };\n },\n });\n}\n","import type { NetPose } from \"./types\";\n\ntype Snapshot = { at: number; pose: NetPose };\n\nconst MAX_SNAPSHOTS = 32;\n\nfunction lerpPose(a: NetPose, b: NetPose, t: number): NetPose {\n // the short way round: q and -q are the same rotation\n const dot = a.qx * b.qx + a.qy * b.qy + a.qz * b.qz + a.qw * b.qw;\n const s = dot < 0 ? -1 : 1;\n const qx = a.qx + (s * b.qx - a.qx) * t;\n const qy = a.qy + (s * b.qy - a.qy) * t;\n const qz = a.qz + (s * b.qz - a.qz) * t;\n const qw = a.qw + (s * b.qw - a.qw) * t;\n const len = Math.hypot(qx, qy, qz, qw) || 1;\n return {\n x: a.x + (b.x - a.x) * t,\n y: a.y + (b.y - a.y) * t,\n z: a.z + (b.z - a.z) * t,\n qx: qx / len,\n qy: qy / len,\n qz: qz / len,\n qw: qw / len,\n };\n}\n\n/**\n * Plays a remote entity back slightly in the past, between the two updates\n * around that moment. Packets arrive unevenly; a small delay turns that into\n * smooth motion.\n */\nexport class SnapshotBuffer {\n private snapshots: Snapshot[] = [];\n\n constructor(private readonly teleportDistance = Number.POSITIVE_INFINITY) {}\n\n push(at: number, pose: NetPose): void {\n this.snapshots.push({ at, pose });\n if (this.snapshots.length > MAX_SNAPSHOTS) this.snapshots.shift();\n }\n\n /** The pose at time `at`: holds the first and last, and never extrapolates. */\n sample(at: number): NetPose | null {\n const list = this.snapshots;\n if (list.length === 0) return null;\n if (at <= list[0].at) return list[0].pose;\n for (let i = list.length - 1; i > 0; i--) {\n const a = list[i - 1];\n const b = list[i];\n if (at < a.at) continue;\n // older ones will never be needed again\n if (i > 1) this.snapshots = list.slice(i - 1);\n if (at >= b.at) return b.pose;\n const jump = Math.hypot(b.pose.x - a.pose.x, b.pose.y - a.pose.y, b.pose.z - a.pose.z);\n if (jump > this.teleportDistance) return b.pose;\n return lerpPose(a.pose, b.pose, (at - a.at) / (b.at - a.at));\n }\n return list[list.length - 1].pose;\n }\n}\n","import * as THREE from \"three\";\n\nimport { Behaviour } from \"../Behaviour\";\nimport {\n type NetValue,\n NetworkedPropsComponent,\n NetworkIdentityComponent,\n NetworkSpawnerComponent,\n NetworkTransformComponent,\n} from \"../components/Network\";\nimport { ScriptComponent } from \"../components/ScriptComponent\";\nimport { TransformComponent } from \"../components/Transform\";\nimport { despawnPrefab, spawnPrefab } from \"../prefab/spawnPrefab\";\nimport type { EcsSystem } from \"../System\";\nimport type { EntityId } from \"../types\";\nimport type { World } from \"../World\";\nimport { reportBehaviourHookError } from \"../systems/scriptShared\";\nimport { SnapshotBuffer } from \"./snapshotBuffer\";\nimport type {\n NetEntityView,\n NetPose,\n NetSpawnOptions,\n NetworkHandle,\n NetworkService,\n NetworkTransport,\n} from \"./types\";\n\ntype Tracked = {\n id: string;\n /** `null` while its prefab is loading. */\n entityId: EntityId | null;\n owner: string;\n buffer: SnapshotBuffer;\n /** When the owner last sent, in ms. */\n sentAt: number;\n sent: NetPose | null;\n props: Record<string, string>;\n};\n\nconst POSITION_EPSILON = 0.001;\nconst ROTATION_EPSILON = 0.0005;\n\nconst euler = new THREE.Euler();\nconst quat = new THREE.Quaternion();\n\nfunction poseOf(transform: TransformComponent): NetPose {\n const { position: p, rotation: r } = transform;\n quat.setFromEuler(euler.set(r.x, r.y, r.z));\n return { x: p.x, y: p.y, z: p.z, qx: quat.x, qy: quat.y, qz: quat.z, qw: quat.w };\n}\n\nfunction applyPose(transform: TransformComponent, pose: NetPose, rotation: boolean) {\n transform.position.x = pose.x;\n transform.position.y = pose.y;\n transform.position.z = pose.z;\n if (!rotation) return;\n euler.setFromQuaternion(quat.set(pose.qx, pose.qy, pose.qz, pose.qw));\n transform.rotation.x = euler.x;\n transform.rotation.y = euler.y;\n transform.rotation.z = euler.z;\n}\n\nconst moved = (a: NetPose, b: NetPose) =>\n Math.abs(a.x - b.x) > POSITION_EPSILON ||\n Math.abs(a.y - b.y) > POSITION_EPSILON ||\n Math.abs(a.z - b.z) > POSITION_EPSILON ||\n Math.abs(a.qx - b.qx) > ROTATION_EPSILON ||\n Math.abs(a.qy - b.qy) > ROTATION_EPSILON ||\n Math.abs(a.qz - b.qz) > ROTATION_EPSILON ||\n Math.abs(a.qw - b.qw) > ROTATION_EPSILON;\n\nfunction encodeProps(props?: Record<string, NetValue>) {\n return Object.fromEntries(\n Object.entries(props ?? {}).map(([k, v]) => [k, JSON.stringify(v)]),\n );\n}\n\n/**\n * Keeps a world in step with a shared room: spawns what others spawned, sends\n * what this client owns, and plays back what it doesn't. Add it to\n * `world.setup({ systems })` after the script systems, then call `connect`\n * once the scene is hydrated.\n *\n * @category Systems\n */\nexport class NetworkSystem implements EcsSystem, NetworkService {\n private world: World | null = null;\n private transport: NetworkTransport | null = null;\n private readonly tracked = new Map<string, Tracked>();\n private readonly byEntity = new Map<EntityId, Tracked>();\n private readonly listeners = new Map<string, Set<(p: unknown, from: string) => void>>();\n private readonly handles = new Map<EntityId, NetworkHandle>();\n private spawnedAvatar = false;\n\n constructor(private readonly now: () => number = () => performance.now()) {}\n\n /** Join the shared world. Call after hydrating, so scene objects exist. */\n connect(world: World, transport: NetworkTransport): void {\n this.world = world;\n this.transport = transport;\n world.setNetwork(this);\n transport.onEntityAdd((e) => this.entityAdded(e));\n transport.onEntityChange((e) => this.entityChanged(e));\n transport.onEntityRemove((id) => this.entityRemoved(id));\n transport.onPlayerJoin((id) => this.dispatch(\"onPlayerJoin\", id));\n transport.onPlayerLeave((id) => this.dispatch(\"onPlayerLeave\", id));\n transport.onMessage((name, payload, from) => {\n for (const fn of this.listeners.get(name) ?? []) fn(payload, from);\n });\n transport.onCorrect((id, pose) => this.corrected(id, pose));\n transport.onClose(() => this.disconnected());\n this.registerScene();\n this.spawnAvatar();\n }\n\n /** Scene objects: every client hydrates the same scene, so their ids already match. */\n private registerScene() {\n const world = this.world;\n const transport = this.transport;\n if (!world || !transport) return;\n const entities = [];\n for (const entityId of world.query(NetworkIdentityComponent)) {\n const identity = world.getComponent(entityId, NetworkIdentityComponent);\n if (!identity || identity.networkId) continue;\n identity.networkId = `scene-${entityId}`;\n const transform = world.getComponent(entityId, TransformComponent);\n const props = world.getComponent(entityId, NetworkedPropsComponent);\n const tracked = this.track(identity.networkId, entityId, \"\", null);\n tracked.props = encodeProps(props?.values);\n entities.push({\n id: identity.networkId,\n props: tracked.props,\n ...(transform ? poseOf(transform) : { x: 0, y: 0, z: 0, qx: 0, qy: 0, qz: 0, qw: 1 }),\n });\n }\n if (entities.length) transport.registerScene(entities);\n }\n\n private spawnAvatar() {\n const world = this.world;\n if (!world || this.spawnedAvatar) return;\n const [entityId] = world.query(NetworkSpawnerComponent);\n if (entityId === undefined) return;\n const spawner = world.getComponent(entityId, NetworkSpawnerComponent);\n if (!spawner?.playerPrefab) return;\n this.spawnedAvatar = true;\n const at = world.getComponent(entityId, TransformComponent)?.position;\n const angle = Math.random() * Math.PI * 2;\n this.spawn(spawner.playerPrefab, {\n position: {\n x: (at?.x ?? 0) + Math.cos(angle) * spawner.spawnRadius,\n y: at?.y ?? 0,\n z: (at?.z ?? 0) + Math.sin(angle) * spawner.spawnRadius,\n },\n });\n }\n\n private track(id: string, entityId: EntityId | null, owner: string, view: NetPose | null) {\n const entry: Tracked = {\n id,\n entityId,\n owner,\n buffer: new SnapshotBuffer(),\n sentAt: 0,\n sent: null,\n props: {},\n };\n if (view) entry.buffer.push(this.now(), view);\n this.tracked.set(id, entry);\n if (entityId !== null) this.byEntity.set(entityId, entry);\n return entry;\n }\n\n /** The buffer needs the entity's own teleport setting, known once the entity exists. */\n private bindEntity(entry: Tracked, entityId: EntityId) {\n const world = this.world;\n if (!world) return;\n entry.entityId = entityId;\n this.byEntity.set(entityId, entry);\n let identity = world.getComponent(entityId, NetworkIdentityComponent);\n if (!identity) {\n identity = new NetworkIdentityComponent();\n world.addComponent(entityId, identity);\n }\n identity.networkId = entry.id;\n identity.owner = entry.owner;\n const settings = world.getComponent(entityId, NetworkTransformComponent);\n entry.buffer = new SnapshotBuffer(settings?.teleportDistance);\n }\n\n private entityAdded(view: NetEntityView) {\n const existing = this.tracked.get(view.id);\n if (existing) {\n this.entityChanged(view);\n return;\n }\n const entry = this.track(view.id, null, view.owner, view);\n if (!view.prefab || !this.world) return;\n euler.setFromQuaternion(quat.set(view.qx, view.qy, view.qz, view.qw));\n void spawnPrefab(this.world, view.prefab, {\n position: { x: view.x, y: view.y, z: view.z },\n rotation: { x: euler.x, y: euler.y, z: euler.z },\n }).then((entityId) => {\n if (this.tracked.get(view.id) !== entry) {\n // removed while it loaded\n if (this.world) despawnPrefab(this.world, entityId);\n return;\n }\n this.bindEntity(entry, entityId);\n entry.buffer.push(this.now(), view);\n this.applyProps(entry, view.props);\n });\n }\n\n private entityChanged(view: NetEntityView) {\n const entry = this.tracked.get(view.id);\n if (!entry) return;\n entry.owner = view.owner;\n if (entry.entityId !== null && this.world) {\n const identity = this.world.getComponent(entry.entityId, NetworkIdentityComponent);\n if (identity) identity.owner = view.owner;\n }\n if (view.owner !== this.transport?.sessionId) entry.buffer.push(this.now(), view);\n this.applyProps(entry, view.props);\n }\n\n private entityRemoved(id: string) {\n const entry = this.tracked.get(id);\n if (!entry) return;\n this.tracked.delete(id);\n if (entry.entityId === null) return;\n this.byEntity.delete(entry.entityId);\n if (this.world) despawnPrefab(this.world, entry.entityId);\n }\n\n private applyProps(entry: Tracked, props: Record<string, string>) {\n if (entry.entityId === null || !this.world) return;\n for (const [key, json] of Object.entries(props)) {\n if (entry.props[key] === json) continue;\n entry.props[key] = json;\n const value = JSON.parse(json) as NetValue;\n let component = this.world.getComponent(entry.entityId, NetworkedPropsComponent);\n if (!component) {\n component = new NetworkedPropsComponent();\n this.world.addComponent(entry.entityId, component);\n }\n component.values[key] = value;\n this.dispatch(\"onNetworkProp\", key, value, entry.entityId);\n }\n }\n\n private corrected(id: string, pose: NetPose) {\n const entry = this.tracked.get(id);\n if (entry?.entityId == null || !this.world) return;\n const transform = this.world.getComponent(entry.entityId, TransformComponent);\n if (transform) applyPose(transform, pose, true);\n entry.sent = pose;\n }\n\n private disconnected() {\n this.transport = null;\n this.world?.setNetwork(null);\n }\n\n /** Call a Behaviour hook: on one entity's scripts, or every script. */\n private dispatch(hook: \"onPlayerJoin\" | \"onPlayerLeave\", id: string): void;\n private dispatch(hook: \"onNetworkProp\", key: string, value: NetValue, on: EntityId): void;\n private dispatch(hook: string, a: unknown, b?: unknown, on?: EntityId): void {\n const world = this.world;\n if (!world) return;\n const ids = on !== undefined ? [on] : world.query(ScriptComponent);\n for (const entityId of ids) {\n const instances = world.getComponent(entityId, ScriptComponent)?.scriptInstances;\n for (const instance of instances?.values() ?? []) {\n if (!(instance instanceof Behaviour)) continue;\n try {\n (instance as unknown as Record<string, (x: unknown, y: unknown) => void>)[hook]?.(a, b);\n } catch (error) {\n // one misbehaving script must never stop the rest hearing it\n reportBehaviourHookError(world, entityId, instance, hook, error);\n }\n }\n }\n }\n\n update(world: World): void {\n const transport = this.transport;\n if (!transport) return;\n const now = this.now();\n for (const entry of this.tracked.values()) {\n if (entry.entityId === null) continue;\n const settings = world.getComponent(entry.entityId, NetworkTransformComponent);\n if (!settings?.enabled) continue;\n const transform = world.getComponent(entry.entityId, TransformComponent);\n if (!transform) continue;\n if (entry.owner === transport.sessionId) {\n if (now - entry.sentAt < 1000 / settings.sendRate) continue;\n const pose = poseOf(transform);\n if (entry.sent && !moved(entry.sent, pose)) continue;\n entry.sentAt = now;\n entry.sent = pose;\n transport.sendPose(entry.id, pose);\n } else {\n const pose = entry.buffer.sample(now - settings.interpolationMs);\n if (pose) applyPose(transform, pose, settings.syncRotation);\n }\n }\n }\n\n dispose(): void {\n this.transport?.leave();\n this.transport = null;\n this.world?.setNetwork(null);\n this.tracked.clear();\n this.byEntity.clear();\n this.handles.clear();\n this.listeners.clear();\n }\n\n private spawn(prefab: string | { path: string }, options: NetSpawnOptions = {}) {\n const p = options.position;\n const r = options.rotation;\n quat.setFromEuler(euler.set(r?.x ?? 0, r?.y ?? 0, r?.z ?? 0));\n this.transport?.spawn({\n prefab: typeof prefab === \"string\" ? prefab : prefab.path,\n props: encodeProps(options.props),\n x: p?.x ?? 0,\n y: p?.y ?? 0,\n z: p?.z ?? 0,\n qx: quat.x,\n qy: quat.y,\n qz: quat.z,\n qw: quat.w,\n });\n }\n\n handleFor(entityId: EntityId): NetworkHandle {\n const known = this.handles.get(entityId);\n if (known) return known;\n const self = this;\n const entry = () => self.byEntity.get(entityId);\n const handle: NetworkHandle = {\n get connected() {\n return self.transport !== null;\n },\n get sessionId() {\n return self.transport?.sessionId ?? \"\";\n },\n get isHost() {\n const t = self.transport;\n return Boolean(t) && t?.host === t?.sessionId;\n },\n get isOwner() {\n return entry()?.owner === self.transport?.sessionId;\n },\n get players() {\n return self.transport?.players ?? [];\n },\n send: (name, payload) => self.transport?.send(name, payload ?? null),\n onMessage: (name, fn) => {\n const set = self.listeners.get(name) ?? new Set();\n self.listeners.set(name, set);\n set.add(fn);\n return () => set.delete(fn);\n },\n spawn: (prefab, options) => self.spawn(prefab, options),\n despawn: (id = entityId) => {\n const target = self.byEntity.get(id);\n if (target) self.transport?.despawn(target.id);\n },\n setProp: (key, value) => {\n const target = entry();\n if (!target || target.entityId === null || !self.world) return;\n const json = JSON.stringify(value);\n target.props[key] = json;\n let component = self.world.getComponent(target.entityId, NetworkedPropsComponent);\n if (!component) {\n component = new NetworkedPropsComponent();\n self.world.addComponent(target.entityId, component);\n }\n component.values[key] = value;\n self.transport?.setProp(target.id, key, json);\n },\n getProp: (key) =>\n self.world?.getComponent(entityId, NetworkedPropsComponent)?.values[key],\n };\n this.handles.set(entityId, handle);\n return handle;\n }\n}\n"]}