@dcl/ecs 7.24.5-29247185020.commit-e92dfe6 → 7.24.5-29264961047.commit-77493c3

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 (295) hide show
  1. package/dist/components/extended/AudioAnalysis.d.ts +55 -0
  2. package/dist/components/extended/AudioAnalysis.js +66 -0
  3. package/dist/components/extended/AudioSource.d.ts +5 -3
  4. package/dist/components/extended/AudioSource.js +7 -7
  5. package/dist/components/extended/MeshCollider.d.ts +0 -8
  6. package/dist/components/extended/MeshCollider.js +0 -6
  7. package/dist/components/extended/MeshRenderer.d.ts +0 -8
  8. package/dist/components/extended/MeshRenderer.js +0 -5
  9. package/dist/components/extended/ParticleSystem.d.ts +24 -0
  10. package/dist/components/extended/ParticleSystem.js +23 -0
  11. package/dist/components/extended/TriggerArea.d.ts +2 -2
  12. package/dist/components/extended/Tween.d.ts +48 -1
  13. package/dist/components/extended/Tween.js +66 -0
  14. package/dist/components/generated/{TextureCamera.gen.js → AudioAnalysis.gen.js} +7 -7
  15. package/dist/components/generated/component-names.gen.js +1 -10
  16. package/dist/components/generated/global.gen.d.ts +2 -20
  17. package/dist/components/generated/global.gen.js +1 -10
  18. package/dist/components/generated/index.gen.d.ts +4 -40
  19. package/dist/components/generated/index.gen.js +5 -50
  20. package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
  21. package/dist/components/generated/pb/decentraland/common/texture.gen.js +0 -65
  22. package/dist/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
  23. package/dist/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +161 -0
  24. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
  25. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
  26. package/dist/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.d.ts +6 -0
  27. package/dist/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.js +30 -0
  28. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +3 -44
  29. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +3 -151
  30. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
  31. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
  32. package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.d.ts +9 -2
  33. package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.js +10 -1
  34. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
  35. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +1 -119
  36. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +2 -4
  37. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -3
  38. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
  39. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
  40. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
  41. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +1 -57
  42. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +3 -22
  43. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +3 -58
  44. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
  45. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +0 -56
  46. package/dist/components/generated/pb/decentraland/sdk/components/particle_system.gen.d.ts +14 -1
  47. package/dist/components/generated/pb/decentraland/sdk/components/particle_system.gen.js +42 -4
  48. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
  49. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
  50. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +0 -13
  51. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +0 -30
  52. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas_information.gen.d.ts +8 -0
  53. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas_information.gen.js +10 -1
  54. package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +0 -4
  55. package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +0 -20
  56. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
  57. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
  58. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
  59. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +0 -90
  60. package/dist/components/generated/types.gen.d.ts +1 -0
  61. package/dist/components/generated/types.gen.js +1 -0
  62. package/dist/components/index.d.ts +13 -11
  63. package/dist/components/index.js +11 -11
  64. package/dist/components/manual/Transform.d.ts +13 -0
  65. package/dist/components/manual/Transform.js +8 -0
  66. package/dist/components/types.d.ts +3 -3
  67. package/dist/composite/index.d.ts +8 -5
  68. package/dist/composite/index.js +8 -5
  69. package/dist/composite/instance.d.ts +5 -0
  70. package/dist/composite/instance.js +34 -25
  71. package/dist/composite/provider-registry.d.ts +15 -0
  72. package/dist/composite/provider-registry.js +32 -0
  73. package/dist/engine/entity.js +4 -2
  74. package/dist/engine/grow-only-value-set-component-definition.js +1 -1
  75. package/dist/engine/index.js +2 -1
  76. package/dist/engine/input.d.ts +0 -6
  77. package/dist/engine/input.js +6 -10
  78. package/dist/engine/lww-element-set-component-definition.d.ts +2 -2
  79. package/dist/engine/lww-element-set-component-definition.js +24 -7
  80. package/dist/index.d.ts +5 -2
  81. package/dist/index.js +5 -1
  82. package/dist/runtime/globals.d.ts +1 -2
  83. package/dist/runtime/globals.js +1 -2
  84. package/dist/runtime/helpers/coordinates.js +37 -14
  85. package/dist/runtime/helpers/index.d.ts +1 -0
  86. package/dist/runtime/helpers/index.js +1 -0
  87. package/dist/runtime/helpers/timers.js +32 -20
  88. package/dist/runtime/helpers/tree.d.ts +6 -0
  89. package/dist/runtime/helpers/tree.js +2 -2
  90. package/dist/runtime/helpers/vectors.js +36 -0
  91. package/dist/runtime/initialization/index.d.ts +7 -0
  92. package/dist/runtime/initialization/index.js +6 -0
  93. package/dist/systems/crdt/index.js +6 -6
  94. package/dist/systems/events.d.ts +25 -59
  95. package/dist/systems/events.js +129 -145
  96. package/dist/systems/physics-force.js +140 -0
  97. package/dist/systems/physics-impulse.d.ts +12 -0
  98. package/dist/systems/physics-impulse.js +85 -0
  99. package/dist/systems/physics.d.ts +77 -0
  100. package/dist/systems/physics.js +18 -0
  101. package/dist/systems/raycast.d.ts +1 -3
  102. package/dist/systems/raycast.js +0 -2
  103. package/dist/systems/triggerArea.d.ts +5 -0
  104. package/dist/systems/triggerArea.js +129 -42
  105. package/dist-cjs/components/extended/AudioAnalysis.d.ts +55 -0
  106. package/dist-cjs/components/extended/AudioAnalysis.js +70 -0
  107. package/dist-cjs/components/extended/AudioSource.d.ts +5 -3
  108. package/dist-cjs/components/extended/AudioSource.js +7 -7
  109. package/dist-cjs/components/extended/MeshCollider.d.ts +0 -8
  110. package/dist-cjs/components/extended/MeshCollider.js +0 -6
  111. package/dist-cjs/components/extended/MeshRenderer.d.ts +0 -8
  112. package/dist-cjs/components/extended/MeshRenderer.js +0 -5
  113. package/dist-cjs/components/extended/ParticleSystem.d.ts +24 -0
  114. package/dist-cjs/components/extended/ParticleSystem.js +28 -0
  115. package/dist-cjs/components/extended/TriggerArea.d.ts +2 -2
  116. package/dist-cjs/components/extended/Tween.d.ts +48 -1
  117. package/dist-cjs/components/extended/Tween.js +66 -0
  118. package/dist-cjs/components/generated/{TextureCamera.gen.js → AudioAnalysis.gen.js} +8 -8
  119. package/dist-cjs/components/generated/component-names.gen.js +1 -10
  120. package/dist-cjs/components/generated/global.gen.d.ts +2 -20
  121. package/dist-cjs/components/generated/global.gen.js +3 -12
  122. package/dist-cjs/components/generated/index.gen.d.ts +4 -40
  123. package/dist-cjs/components/generated/index.gen.js +8 -62
  124. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
  125. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +1 -66
  126. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
  127. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +167 -0
  128. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
  129. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
  130. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.d.ts +6 -0
  131. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.js +30 -0
  132. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +3 -44
  133. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +4 -152
  134. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
  135. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
  136. package/dist-cjs/components/generated/pb/decentraland/sdk/components/billboard.gen.d.ts +9 -2
  137. package/dist-cjs/components/generated/pb/decentraland/sdk/components/billboard.gen.js +10 -1
  138. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
  139. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +2 -120
  140. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +2 -4
  141. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -3
  142. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
  143. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
  144. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
  145. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +2 -58
  146. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +3 -22
  147. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +4 -59
  148. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
  149. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +1 -57
  150. package/dist-cjs/components/generated/pb/decentraland/sdk/components/particle_system.gen.d.ts +14 -1
  151. package/dist-cjs/components/generated/pb/decentraland/sdk/components/particle_system.gen.js +43 -5
  152. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
  153. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
  154. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +0 -13
  155. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +1 -31
  156. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas_information.gen.d.ts +8 -0
  157. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas_information.gen.js +10 -1
  158. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +0 -4
  159. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +0 -20
  160. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
  161. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
  162. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
  163. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +1 -91
  164. package/dist-cjs/components/generated/types.gen.d.ts +1 -0
  165. package/dist-cjs/components/generated/types.gen.js +3 -0
  166. package/dist-cjs/components/index.d.ts +13 -11
  167. package/dist-cjs/components/index.js +15 -15
  168. package/dist-cjs/components/manual/Transform.d.ts +13 -0
  169. package/dist-cjs/components/manual/Transform.js +31 -0
  170. package/dist-cjs/components/types.d.ts +3 -3
  171. package/dist-cjs/composite/index.d.ts +8 -5
  172. package/dist-cjs/composite/index.js +11 -6
  173. package/dist-cjs/composite/instance.d.ts +5 -0
  174. package/dist-cjs/composite/instance.js +34 -25
  175. package/dist-cjs/composite/provider-registry.d.ts +15 -0
  176. package/dist-cjs/composite/provider-registry.js +37 -0
  177. package/dist-cjs/engine/entity.js +4 -2
  178. package/dist-cjs/engine/grow-only-value-set-component-definition.js +1 -1
  179. package/dist-cjs/engine/index.js +2 -1
  180. package/dist-cjs/engine/input.d.ts +0 -6
  181. package/dist-cjs/engine/input.js +6 -10
  182. package/dist-cjs/engine/lww-element-set-component-definition.d.ts +2 -2
  183. package/dist-cjs/engine/lww-element-set-component-definition.js +24 -7
  184. package/dist-cjs/index.d.ts +5 -2
  185. package/dist-cjs/index.js +6 -2
  186. package/dist-cjs/runtime/globals.d.ts +1 -2
  187. package/dist-cjs/runtime/globals.js +1 -2
  188. package/dist-cjs/runtime/helpers/coordinates.js +37 -14
  189. package/dist-cjs/runtime/helpers/index.d.ts +1 -0
  190. package/dist-cjs/runtime/helpers/index.js +1 -0
  191. package/dist-cjs/runtime/helpers/timers.js +32 -20
  192. package/dist-cjs/runtime/helpers/tree.d.ts +6 -0
  193. package/dist-cjs/runtime/helpers/tree.js +3 -2
  194. package/dist-cjs/runtime/helpers/vectors.js +39 -0
  195. package/dist-cjs/runtime/initialization/index.d.ts +7 -0
  196. package/dist-cjs/runtime/initialization/index.js +7 -1
  197. package/dist-cjs/systems/crdt/index.js +6 -6
  198. package/dist-cjs/systems/events.d.ts +25 -59
  199. package/dist-cjs/systems/events.js +129 -145
  200. package/dist-cjs/systems/physics-force.js +167 -0
  201. package/dist-cjs/systems/physics-impulse.d.ts +12 -0
  202. package/dist-cjs/systems/physics-impulse.js +112 -0
  203. package/dist-cjs/systems/physics.d.ts +77 -0
  204. package/dist-cjs/systems/physics.js +23 -0
  205. package/dist-cjs/systems/raycast.d.ts +1 -3
  206. package/dist-cjs/systems/raycast.js +0 -2
  207. package/dist-cjs/systems/triggerArea.d.ts +5 -0
  208. package/dist-cjs/systems/triggerArea.js +129 -42
  209. package/package.json +3 -2
  210. package/dist/components/extended/AvatarEquippedData.d.ts +0 -10
  211. package/dist/components/extended/AvatarEquippedData.js +0 -15
  212. package/dist/components/extended/AvatarShape.d.ts +0 -10
  213. package/dist/components/extended/AvatarShape.js +0 -15
  214. package/dist/components/generated/AvatarMovement.gen.d.ts +0 -1
  215. package/dist/components/generated/AvatarMovement.gen.js +0 -25
  216. package/dist/components/generated/AvatarMovementInfo.gen.d.ts +0 -1
  217. package/dist/components/generated/AvatarMovementInfo.gen.js +0 -25
  218. package/dist/components/generated/CameraLayer.gen.d.ts +0 -1
  219. package/dist/components/generated/CameraLayer.gen.js +0 -25
  220. package/dist/components/generated/CameraLayers.gen.d.ts +0 -1
  221. package/dist/components/generated/CameraLayers.gen.js +0 -25
  222. package/dist/components/generated/GlobalLight.gen.d.ts +0 -1
  223. package/dist/components/generated/GlobalLight.gen.js +0 -25
  224. package/dist/components/generated/GltfNode.gen.d.ts +0 -1
  225. package/dist/components/generated/GltfNode.gen.js +0 -25
  226. package/dist/components/generated/GltfNodeState.gen.d.ts +0 -1
  227. package/dist/components/generated/GltfNodeState.gen.js +0 -25
  228. package/dist/components/generated/TextureCamera.gen.d.ts +0 -1
  229. package/dist/components/generated/UiCanvas.gen.d.ts +0 -1
  230. package/dist/components/generated/UiCanvas.gen.js +0 -25
  231. package/dist/components/generated/UiScrollResult.gen.d.ts +0 -1
  232. package/dist/components/generated/UiScrollResult.gen.js +0 -25
  233. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +0 -20
  234. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +0 -69
  235. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +0 -32
  236. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +0 -126
  237. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
  238. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -104
  239. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
  240. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -50
  241. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
  242. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -61
  243. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
  244. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -41
  245. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
  246. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -59
  247. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
  248. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -191
  249. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
  250. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -60
  251. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
  252. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -42
  253. package/dist-cjs/components/extended/AvatarEquippedData.d.ts +0 -10
  254. package/dist-cjs/components/extended/AvatarEquippedData.js +0 -19
  255. package/dist-cjs/components/extended/AvatarShape.d.ts +0 -10
  256. package/dist-cjs/components/extended/AvatarShape.js +0 -19
  257. package/dist-cjs/components/generated/AvatarMovement.gen.js +0 -28
  258. package/dist-cjs/components/generated/AvatarMovementInfo.gen.js +0 -28
  259. package/dist-cjs/components/generated/CameraLayer.gen.js +0 -28
  260. package/dist-cjs/components/generated/CameraLayers.gen.js +0 -28
  261. package/dist-cjs/components/generated/GlobalLight.gen.js +0 -28
  262. package/dist-cjs/components/generated/GltfNode.gen.js +0 -28
  263. package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +0 -1
  264. package/dist-cjs/components/generated/GltfNodeState.gen.js +0 -28
  265. package/dist-cjs/components/generated/TextureCamera.gen.d.ts +0 -1
  266. package/dist-cjs/components/generated/UiCanvas.gen.d.ts +0 -1
  267. package/dist-cjs/components/generated/UiCanvas.gen.js +0 -28
  268. package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +0 -1
  269. package/dist-cjs/components/generated/UiScrollResult.gen.js +0 -28
  270. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +0 -20
  271. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +0 -75
  272. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +0 -32
  273. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +0 -132
  274. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
  275. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -110
  276. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
  277. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -56
  278. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
  279. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -67
  280. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
  281. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -47
  282. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
  283. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -65
  284. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
  285. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -197
  286. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
  287. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -66
  288. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
  289. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -48
  290. /package/{dist-cjs/components/generated/CameraLayers.gen.d.ts → dist/components/generated/AudioAnalysis.gen.d.ts} +0 -0
  291. /package/{dist-cjs/components/generated/GlobalLight.gen.d.ts → dist/runtime/helpers/vectors.d.ts} +0 -0
  292. /package/{dist-cjs/components/generated/GltfNode.gen.d.ts → dist/systems/physics-force.d.ts} +0 -0
  293. /package/dist-cjs/components/generated/{AvatarMovement.gen.d.ts → AudioAnalysis.gen.d.ts} +0 -0
  294. /package/dist-cjs/{components/generated/AvatarMovementInfo.gen.d.ts → runtime/helpers/vectors.d.ts} +0 -0
  295. /package/dist-cjs/{components/generated/CameraLayer.gen.d.ts → systems/physics-force.d.ts} +0 -0
@@ -6,6 +6,7 @@ import { CompositeDefinition } from './proto/gen/composite.gen';
6
6
  export type { CompositeDefinition, ComponentData, CompositeComponent, CompositeComponent_DataEntry, InstanceCompositeOptions, CompositeProvider, CompositeRootType, CompositeResource };
7
7
  export { EntityMappingMode };
8
8
  export { getCompositeRootComponent };
9
+ export { setCompositeProvider, getCompositeProvider } from './provider-registry';
9
10
  /**
10
11
  * @public
11
12
  * @deprecated composite is not being supported so far, please do not use this feature
@@ -31,14 +32,16 @@ export declare namespace Composite {
31
32
  /** @public */
32
33
  function toBinary(composite: Composite.Definition): Uint8Array;
33
34
  /**
34
- * Instance a composite and returns its root entity
35
- * @param compositeData - state serialized by the CRDT protocol
36
- * @param getNextAvailableEntity - function that gives unused entities
37
- * @param rootEntity - (optional) suggested mapped rootEntity for the composite
35
+ * Instance a composite and return its root entity.
36
+ * @param engine - the engine that will own the new entities
37
+ * @param compositeData - the composite resource to instance
38
+ * @param compositeProvider - provider used to resolve nested composite references
39
+ * @param options - instancing options (`rootEntity`, `entityMapping`, `alreadyRequestedSrc`)
40
+ * @returns the root entity of the instanced composite
38
41
  *
39
42
  * @public
40
43
  */
41
- function instance(engine: IEngine, compositeData: Composite.Resource, compositeProvider: CompositeProvider, options?: InstanceCompositeOptions): void;
44
+ function instance(engine: IEngine, compositeData: Composite.Resource, compositeProvider: CompositeProvider, options?: InstanceCompositeOptions): import("../engine").Entity;
42
45
  /**
43
46
  * Resolve and normalize a composite path
44
47
  * @param src - the source path
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Composite = exports.getCompositeRootComponent = exports.EntityMappingMode = void 0;
3
+ exports.Composite = exports.getCompositeProvider = exports.setCompositeProvider = exports.getCompositeRootComponent = exports.EntityMappingMode = void 0;
4
4
  const components_1 = require("./components");
5
5
  Object.defineProperty(exports, "getCompositeRootComponent", { enumerable: true, get: function () { return components_1.getCompositeRootComponent; } });
6
6
  const instance_1 = require("./instance");
7
7
  Object.defineProperty(exports, "EntityMappingMode", { enumerable: true, get: function () { return instance_1.EntityMappingMode; } });
8
8
  const path_1 = require("./path");
9
9
  const composite_gen_1 = require("./proto/gen/composite.gen");
10
+ var provider_registry_1 = require("./provider-registry");
11
+ Object.defineProperty(exports, "setCompositeProvider", { enumerable: true, get: function () { return provider_registry_1.setCompositeProvider; } });
12
+ Object.defineProperty(exports, "getCompositeProvider", { enumerable: true, get: function () { return provider_registry_1.getCompositeProvider; } });
10
13
  /**
11
14
  * @public
12
15
  * @deprecated composite is not being supported so far, please do not use this feature
@@ -34,15 +37,17 @@ var Composite;
34
37
  }
35
38
  Composite.toBinary = toBinary;
36
39
  /**
37
- * Instance a composite and returns its root entity
38
- * @param compositeData - state serialized by the CRDT protocol
39
- * @param getNextAvailableEntity - function that gives unused entities
40
- * @param rootEntity - (optional) suggested mapped rootEntity for the composite
40
+ * Instance a composite and return its root entity.
41
+ * @param engine - the engine that will own the new entities
42
+ * @param compositeData - the composite resource to instance
43
+ * @param compositeProvider - provider used to resolve nested composite references
44
+ * @param options - instancing options (`rootEntity`, `entityMapping`, `alreadyRequestedSrc`)
45
+ * @returns the root entity of the instanced composite
41
46
  *
42
47
  * @public
43
48
  */
44
49
  /*#__PURE__*/ function instance(engine, compositeData, compositeProvider, options = {}) {
45
- (0, instance_1.instanceComposite)(engine, compositeData, compositeProvider, options);
50
+ return (0, instance_1.instanceComposite)(engine, compositeData, compositeProvider, options);
46
51
  }
47
52
  Composite.instance = instance;
48
53
  /**
@@ -13,6 +13,11 @@ export type CompositeResource = {
13
13
  */
14
14
  export type CompositeProvider = {
15
15
  getCompositeOrNull(src: string): CompositeResource | null;
16
+ loadComposite?: (src: string) => Promise<CompositeResource>;
17
+ schemas?: Iterable<{
18
+ name: string;
19
+ jsonSchema: any;
20
+ }>;
16
21
  };
17
22
  /** @public */
18
23
  export declare enum EntityMappingMode {
@@ -70,7 +70,7 @@ function getComponentDefinition(engine, component) {
70
70
  return engine.defineComponentFromSchema(component.name, schemas_1.Schemas.fromJson(component.jsonSchema));
71
71
  }
72
72
  else {
73
- throw new Error(`${component.name} is not defined and there is no schema to define it.`);
73
+ throw new Error(`Composite references undefined component "${component.name}". Ensure provider.schemas was registered pre-seal via setCompositeProvider().`);
74
74
  }
75
75
  }
76
76
  else {
@@ -113,6 +113,7 @@ function instanceComposite(engine, compositeResource, compositeProvider, options
113
113
  const compositeDirectoryPath = path.dirname(path.resolve(compositeResource.src));
114
114
  const TransformComponentNumber = (0, component_number_1.componentNumberFromName)('core::Transform');
115
115
  const CompositeRootComponent = (0, components_2.getCompositeRootComponent)(engine);
116
+ let hadNestedComposite = false;
116
117
  // Key => EntityNumber from the composite
117
118
  // Value => EntityNumber in current engine
118
119
  const mappedEntities = new Map();
@@ -128,23 +129,29 @@ function instanceComposite(engine, compositeResource, compositeProvider, options
128
129
  // If there are more composite inside this one, we instance first.
129
130
  // => This is not only a copy, we need to instance. Otherwise, we'd be missing that branches
130
131
  // => TODO: in the future, the instanciation is first, then the overides (to parameterize Composite, e.g. house with different wall colors)
131
- const childrenComposite = compositeResource.composite.components.find((item) => item.name === CompositeRootComponent.componentName);
132
- if (childrenComposite) {
133
- for (const [childCompositeEntity, compositeRawData] of childrenComposite.data) {
134
- const childComposite = getComponentValue(CompositeRootComponent, compositeRawData);
135
- const childCompositePath = path.resolveComposite(childComposite.src, compositeDirectoryPath);
136
- const childCompositeResource = compositeProvider.getCompositeOrNull(childCompositePath);
137
- const targetEntity = getCompositeEntity(childCompositeEntity);
138
- if (childCompositeResource) {
139
- if (alreadyRequestedSrc.has(childCompositeResource.src) ||
140
- childCompositeResource.src === compositeResource.src) {
141
- throw new Error(`Composite ${compositeResource.src} has a recursive instanciation while try to instance ${childCompositeResource.src}. Previous instances: ${alreadyRequestedSrc.toString()}`);
132
+ if (CompositeRootComponent) {
133
+ const childrenComposite = compositeResource.composite.components.find((item) => item.name === CompositeRootComponent.componentName);
134
+ if (childrenComposite) {
135
+ for (const [childCompositeEntity, compositeRawData] of childrenComposite.data) {
136
+ const childComposite = getComponentValue(CompositeRootComponent, compositeRawData);
137
+ const childCompositePath = path.resolveComposite(childComposite.src, compositeDirectoryPath);
138
+ const childCompositeResource = compositeProvider.getCompositeOrNull(childCompositePath);
139
+ const targetEntity = getCompositeEntity(childCompositeEntity);
140
+ if (childCompositeResource) {
141
+ if (alreadyRequestedSrc.has(childCompositeResource.src) ||
142
+ childCompositeResource.src === compositeResource.src) {
143
+ throw new Error(`Composite ${compositeResource.src} has a recursive instanciation while try to instance ${childCompositeResource.src}. Previous instances: ${alreadyRequestedSrc.toString()}`);
144
+ }
145
+ hadNestedComposite = true;
146
+ instanceComposite(engine, childCompositeResource, compositeProvider, {
147
+ rootEntity: targetEntity,
148
+ alreadyRequestedSrc: new Set(alreadyRequestedSrc).add(childCompositeResource.src),
149
+ entityMapping: entityMapping?.type === EntityMappingMode.EMM_NEXT_AVAILABLE ? entityMapping : undefined
150
+ });
151
+ }
152
+ else {
153
+ console.warn(`Composite "${compositeResource.src}" references missing nested composite "${childCompositePath}". Skipping; the spawned subtree will be incomplete.`);
142
154
  }
143
- instanceComposite(engine, childCompositeResource, compositeProvider, {
144
- rootEntity: targetEntity,
145
- alreadyRequestedSrc: new Set(alreadyRequestedSrc).add(childCompositeResource.src),
146
- entityMapping: entityMapping?.type === EntityMappingMode.EMM_NEXT_AVAILABLE ? entityMapping : undefined
147
- });
148
155
  }
149
156
  }
150
157
  }
@@ -152,7 +159,7 @@ function instanceComposite(engine, compositeResource, compositeProvider, options
152
159
  // Then, we copy the all rest of the components (skipping the Composite ones)
153
160
  for (const component of compositeResource.composite.components) {
154
161
  // We already instanced the composite
155
- if (component.name === CompositeRootComponent.componentName)
162
+ if (CompositeRootComponent && component.name === CompositeRootComponent.componentName)
156
163
  continue;
157
164
  // ## 3a ##
158
165
  // We find the component definition
@@ -188,14 +195,16 @@ function instanceComposite(engine, compositeResource, compositeProvider, options
188
195
  }
189
196
  }
190
197
  }
191
- const composite = CompositeRootComponent.getMutableOrNull(compositeRootEntity) || CompositeRootComponent.create(compositeRootEntity);
192
- for (const [entitySource, targetEntity] of mappedEntities) {
193
- composite.entities.push({
194
- src: entitySource,
195
- dest: targetEntity
196
- });
198
+ if (hadNestedComposite) {
199
+ const composite = CompositeRootComponent.getMutableOrNull(compositeRootEntity) || CompositeRootComponent.create(compositeRootEntity);
200
+ for (const [entitySource, targetEntity] of mappedEntities) {
201
+ composite.entities.push({
202
+ src: entitySource,
203
+ dest: targetEntity
204
+ });
205
+ }
206
+ composite.src = compositeResource.src;
197
207
  }
198
- composite.src = compositeResource.src;
199
208
  return compositeRootEntity;
200
209
  }
201
210
  exports.instanceComposite = instanceComposite;
@@ -0,0 +1,15 @@
1
+ import type { IEngine } from '../engine';
2
+ import type { CompositeProvider } from './instance';
3
+ /**
4
+ * Register the composite provider used to resolve composite files. Also registers
5
+ * any `provider.schemas` on the engine pre-seal so composites that reference those
6
+ * components can be instanced without further setup.
7
+ * @public
8
+ */
9
+ export declare function setCompositeProvider(engine: IEngine, provider: CompositeProvider): void;
10
+ /**
11
+ * Get the composite provider registered via setCompositeProvider. Returns null if
12
+ * no provider has been set.
13
+ * @public
14
+ */
15
+ export declare function getCompositeProvider(): CompositeProvider | null;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCompositeProvider = exports.setCompositeProvider = void 0;
4
+ const schemas_1 = require("../schemas");
5
+ const components_1 = require("./components");
6
+ let currentProvider = null;
7
+ /**
8
+ * Register the composite provider used to resolve composite files. Also registers
9
+ * any `provider.schemas` on the engine pre-seal so composites that reference those
10
+ * components can be instanced without further setup.
11
+ * @public
12
+ */
13
+ function setCompositeProvider(engine, provider) {
14
+ currentProvider = provider;
15
+ // Define composite::root pre-seal. setCompositeProvider runs at module-load,
16
+ // so this guarantees the component exists before the engine seals — composites
17
+ // instanced at runtime (post-seal) would otherwise trip the seal when
18
+ // instanceComposite looks it up via getCompositeRootComponent.
19
+ (0, components_1.getCompositeRootComponent)(engine);
20
+ if (!provider.schemas)
21
+ return;
22
+ for (const { name, jsonSchema } of provider.schemas) {
23
+ if (engine.getComponentOrNull(name))
24
+ continue;
25
+ engine.defineComponentFromSchema(name, schemas_1.Schemas.fromJson(jsonSchema));
26
+ }
27
+ }
28
+ exports.setCompositeProvider = setCompositeProvider;
29
+ /**
30
+ * Get the composite provider registered via setCompositeProvider. Returns null if
31
+ * no provider has been set.
32
+ * @public
33
+ */
34
+ function getCompositeProvider() {
35
+ return currentProvider;
36
+ }
37
+ exports.getCompositeProvider = getCompositeProvider;
@@ -64,8 +64,10 @@ var EntityState;
64
64
  */
65
65
  function createEntityContainer(opts) {
66
66
  const reservedStaticEntities = opts?.reservedStaticEntities ?? exports.RESERVED_STATIC_ENTITIES;
67
- // Local entities counter
68
- let entityCounter = reservedStaticEntities;
67
+ // If a build tool has set DCL_MAX_COMPOSITE_ENTITY (via esbuild define),
68
+ // start the counter past composite entities to prevent ID collisions.
69
+ const maxCompositeEntity = typeof DCL_MAX_COMPOSITE_ENTITY !== 'undefined' ? DCL_MAX_COMPOSITE_ENTITY : 0;
70
+ let entityCounter = Math.max(reservedStaticEntities, maxCompositeEntity > 0 ? maxCompositeEntity + 1 : 0);
69
71
  const usedEntities = new Set();
70
72
  let toRemoveEntities = [];
71
73
  const removedEntities = (0, gset_1.createVersionGSet)();
@@ -15,7 +15,7 @@ function freezeSet(set) {
15
15
  return set;
16
16
  }
17
17
  function sortByTimestamp(a, b) {
18
- return a.timestamp > b.timestamp ? 1 : -1;
18
+ return a.timestamp - b.timestamp;
19
19
  }
20
20
  /**
21
21
  * @internal
@@ -265,7 +265,7 @@ function Engine(options) {
265
265
  const deletedEntites = partialEngine.entityContainer.releaseRemovedEntities();
266
266
  await crdtSystem.sendMessages(deletedEntites);
267
267
  }
268
- return {
268
+ const engineInstance = {
269
269
  _id: Date.now(),
270
270
  addEntity: partialEngine.addEntity,
271
271
  removeEntity: partialEngine.removeEntity,
@@ -293,5 +293,6 @@ function Engine(options) {
293
293
  addTransport: crdtSystem.addTransport,
294
294
  entityContainer: partialEngine.entityContainer
295
295
  };
296
+ return engineInstance;
296
297
  }
297
298
  exports.Engine = Engine;
@@ -32,12 +32,6 @@ export type IInputSystem = {
32
32
  * @returns the input command info or undefined if there is no command in the last tick-update
33
33
  */
34
34
  getInputCommand: (inputAction: InputAction, pointerEventType: PointerEventType, entity?: Entity) => PBPointerEventsResult | null;
35
- /**
36
- * @public
37
- * Get an ordered iterator over events received within the current frame.
38
- * @returns the iterator
39
- */
40
- getInputCommands: () => Generator<PBPointerEventsResult>;
41
35
  };
42
36
  /**
43
37
  * @public
@@ -38,7 +38,8 @@ const InputCommands = [
38
38
  10 /* InputAction.IA_ACTION_3 */,
39
39
  11 /* InputAction.IA_ACTION_4 */,
40
40
  12 /* InputAction.IA_ACTION_5 */,
41
- 13 /* InputAction.IA_ACTION_6 */
41
+ 13 /* InputAction.IA_ACTION_6 */,
42
+ 14 /* InputAction.IA_MODIFIER */
42
43
  ];
43
44
  const InputStateUpdateSystemPriority = 1 << 20;
44
45
  /**
@@ -144,8 +145,9 @@ function createInputSystem(engine) {
144
145
  }
145
146
  if (!up || !down)
146
147
  return null;
147
- // If the DOWN command has happen before the UP commands, it means that that a clicked has happen
148
- if (down.timestamp < up.timestamp && timestampIsCurrentFrame(up.timestamp)) {
148
+ // If the DOWN command has happened before or at the same time as the UP command, a click has happened.
149
+ // Same-timestamp is possible when both events are produced within the same renderer tick.
150
+ if (down.timestamp <= up.timestamp && timestampIsCurrentFrame(up.timestamp)) {
149
151
  return { up, down };
150
152
  }
151
153
  return null;
@@ -211,18 +213,12 @@ function createInputSystem(engine) {
211
213
  function isPressed(inputAction) {
212
214
  return globalState.buttonState.get(inputAction)?.state === 1 /* PointerEventType.PET_DOWN */;
213
215
  }
214
- function* getInputCommands() {
215
- for (let i = globalState.thisFrameCommands.length - 1; i >= 0; i--) {
216
- yield globalState.thisFrameCommands[i];
217
- }
218
- }
219
216
  return {
220
217
  isPressed,
221
218
  getClick,
222
219
  getInputCommand,
223
220
  isClicked,
224
- isTriggered,
225
- getInputCommands
221
+ isTriggered
226
222
  };
227
223
  }
228
224
  exports.createInputSystem = createInputSystem;
@@ -4,5 +4,5 @@ import { PutComponentMessageBody, DeleteComponentMessageBody, CrdtMessageBody }
4
4
  import { Entity } from './entity';
5
5
  export declare function incrementTimestamp(entity: Entity, timestamps: Map<Entity, number>): number;
6
6
  export declare function createDumpLwwFunctionFromCrdt(componentId: number, timestamps: Map<Entity, number>, schema: Pick<ISchema<any>, 'serialize' | 'deserialize'>, data: Map<Entity, unknown>): (buffer: ByteBuffer, filterEntity?: ((entity: Entity) => boolean) | undefined) => void;
7
- export declare function createUpdateLwwFromCrdt(componentId: number, timestamps: Map<Entity, number>, schema: Pick<ISchema<any>, 'serialize' | 'deserialize'>, data: Map<Entity, unknown>): (msg: CrdtMessageBody) => [null | PutComponentMessageBody | DeleteComponentMessageBody, any];
8
- export declare function createGetCrdtMessagesForLww(componentId: number, timestamps: Map<Entity, number>, dirtyIterator: Set<Entity>, schema: Pick<ISchema<any>, 'serialize'>, data: Map<Entity, unknown>): () => Generator<PutComponentMessageBody | DeleteComponentMessageBody, void, unknown>;
7
+ export declare function createUpdateLwwFromCrdt(componentId: number, timestamps: Map<Entity, number>, schema: Pick<ISchema<any>, 'serialize' | 'deserialize'>, data: Map<Entity, unknown>, lastSentData: Map<Entity, Uint8Array>): (msg: CrdtMessageBody) => [null | PutComponentMessageBody | DeleteComponentMessageBody, any];
8
+ export declare function createGetCrdtMessagesForLww(componentId: number, timestamps: Map<Entity, number>, dirtyIterator: Set<Entity>, schema: Pick<ISchema<any>, 'serialize'>, data: Map<Entity, unknown>, lastSentData: Map<Entity, Uint8Array>): () => Generator<PutComponentMessageBody | DeleteComponentMessageBody, void, unknown>;
@@ -35,7 +35,7 @@ function createDumpLwwFunctionFromCrdt(componentId, timestamps, schema, data) {
35
35
  };
36
36
  }
37
37
  exports.createDumpLwwFunctionFromCrdt = createDumpLwwFunctionFromCrdt;
38
- function createUpdateLwwFromCrdt(componentId, timestamps, schema, data) {
38
+ function createUpdateLwwFromCrdt(componentId, timestamps, schema, data, lastSentData) {
39
39
  /**
40
40
  * Process the received message only if the lamport number recieved is higher
41
41
  * than the stored one. If its lower, we spread it to the network to correct the peer.
@@ -101,9 +101,11 @@ function createUpdateLwwFromCrdt(componentId, timestamps, schema, data) {
101
101
  if (msg.type === crdt_1.CrdtMessageType.PUT_COMPONENT || msg.type === crdt_1.CrdtMessageType.PUT_COMPONENT_NETWORK) {
102
102
  const buf = new ByteBuffer_1.ReadWriteByteBuffer(msg.data);
103
103
  data.set(entity, schema.deserialize(buf));
104
+ lastSentData.set(entity, new Uint8Array(msg.data));
104
105
  }
105
106
  else {
106
107
  data.delete(entity);
108
+ lastSentData.delete(entity);
107
109
  }
108
110
  return [null, data.get(entity)];
109
111
  }
@@ -140,23 +142,34 @@ function createUpdateLwwFromCrdt(componentId, timestamps, schema, data) {
140
142
  };
141
143
  }
142
144
  exports.createUpdateLwwFromCrdt = createUpdateLwwFromCrdt;
143
- function createGetCrdtMessagesForLww(componentId, timestamps, dirtyIterator, schema, data) {
145
+ function createGetCrdtMessagesForLww(componentId, timestamps, dirtyIterator, schema, data, lastSentData) {
144
146
  return function* () {
147
+ const writeBuffer = new ByteBuffer_1.ReadWriteByteBuffer();
145
148
  for (const entity of dirtyIterator) {
146
- const newTimestamp = incrementTimestamp(entity, timestamps);
147
149
  if (data.has(entity)) {
148
- const writeBuffer = new ByteBuffer_1.ReadWriteByteBuffer();
150
+ writeBuffer.resetBuffer();
149
151
  schema.serialize(data.get(entity), writeBuffer);
152
+ // Compare against last-sent snapshot using the zero-copy subarray view.
153
+ // Only allocate a copy when bytes actually differ.
154
+ const previousBytes = lastSentData.get(entity);
155
+ if (previousBytes && (0, utils_1.dataCompare)(writeBuffer.toBinary(), previousBytes) === 0) {
156
+ continue;
157
+ }
158
+ const currentBytes = writeBuffer.toCopiedBinary();
159
+ const newTimestamp = incrementTimestamp(entity, timestamps);
160
+ lastSentData.set(entity, currentBytes);
150
161
  const msg = {
151
162
  type: crdt_1.CrdtMessageType.PUT_COMPONENT,
152
163
  componentId,
153
164
  entityId: entity,
154
- data: writeBuffer.toBinary(),
165
+ data: currentBytes,
155
166
  timestamp: newTimestamp
156
167
  };
157
168
  yield msg;
158
169
  }
159
170
  else {
171
+ lastSentData.delete(entity);
172
+ const newTimestamp = incrementTimestamp(entity, timestamps);
160
173
  const msg = {
161
174
  type: crdt_1.CrdtMessageType.DELETE_COMPONENT,
162
175
  componentId,
@@ -177,6 +190,7 @@ function createComponentDefinitionFromSchema(componentName, componentId, schema)
177
190
  const data = new Map();
178
191
  const dirtyIterator = new Set();
179
192
  const timestamps = new Map();
193
+ const lastSentData = new Map();
180
194
  const onChangeCallbacks = new Map();
181
195
  return {
182
196
  get componentId() {
@@ -198,12 +212,14 @@ function createComponentDefinitionFromSchema(componentName, componentId, schema)
198
212
  if (data.delete(entity) && markAsDirty) {
199
213
  dirtyIterator.add(entity);
200
214
  }
215
+ lastSentData.delete(entity);
201
216
  return component || null;
202
217
  },
203
218
  entityDeleted(entity, markAsDirty) {
204
219
  if (data.delete(entity) && markAsDirty) {
205
220
  dirtyIterator.add(entity);
206
221
  }
222
+ lastSentData.delete(entity);
207
223
  },
208
224
  getOrNull(entity) {
209
225
  const component = data.get(entity);
@@ -230,6 +246,7 @@ function createComponentDefinitionFromSchema(componentName, componentId, schema)
230
246
  const usedValue = value === undefined ? schema.create() : schema.extend ? schema.extend(value) : value;
231
247
  data.set(entity, usedValue);
232
248
  dirtyIterator.add(entity);
249
+ lastSentData.delete(entity);
233
250
  return usedValue;
234
251
  },
235
252
  getMutableOrNull(entity) {
@@ -267,8 +284,8 @@ function createComponentDefinitionFromSchema(componentName, componentId, schema)
267
284
  yield entity;
268
285
  }
269
286
  },
270
- getCrdtUpdates: createGetCrdtMessagesForLww(componentId, timestamps, dirtyIterator, schema, data),
271
- updateFromCrdt: createUpdateLwwFromCrdt(componentId, timestamps, schema, data),
287
+ getCrdtUpdates: createGetCrdtMessagesForLww(componentId, timestamps, dirtyIterator, schema, data, lastSentData),
288
+ updateFromCrdt: createUpdateLwwFromCrdt(componentId, timestamps, schema, data, lastSentData),
272
289
  dumpCrdtStateToBuffer: createDumpLwwFunctionFromCrdt(componentId, timestamps, schema, data),
273
290
  onChange(entity, cb) {
274
291
  const cbs = onChangeCallbacks.get(entity) ?? [];
@@ -1,9 +1,9 @@
1
1
  export * from './engine';
2
2
  export * from './schemas';
3
+ export * from './runtime/globals';
3
4
  export * from './runtime/initialization';
4
5
  export * from './runtime/types';
5
6
  export * from './runtime/helpers';
6
- export * from './runtime/globals';
7
7
  export { cyclicParentingChecker } from './systems/cyclicParentingChecker';
8
8
  export * from './systems/events';
9
9
  export * from './systems/raycast';
@@ -12,14 +12,16 @@ export * from './systems/assetLoad';
12
12
  export * from './systems/async-task';
13
13
  export * from './systems/tween';
14
14
  export * from './systems/triggerArea';
15
+ export * from './systems/physics';
15
16
  export * from './engine/entity';
16
17
  export * from './components/types';
17
- import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, AudioSourceComponentDefinitionExtended, AudioStreamComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended, INetowrkEntity, INetowrkParent, VirtualCameraComponentDefinitionExtended, InputModifierComponentDefinitionExtended, LightSourceComponentDefinitionExtended, TriggerAreaComponentDefinitionExtended } from './components/types';
18
+ import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, AudioSourceComponentDefinitionExtended, AudioAnalysisComponentDefinitionExtended, AudioStreamComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended, INetowrkEntity, INetowrkParent, VirtualCameraComponentDefinitionExtended, InputModifierComponentDefinitionExtended, LightSourceComponentDefinitionExtended, TriggerAreaComponentDefinitionExtended, ParticleSystemComponentDefinitionExtended } from './components/types';
18
19
  import { NameComponent } from './components/manual/Name';
19
20
  import { TagsComponentDefinitionExtended } from './components/manual/Tags';
20
21
  export declare const Transform: TransformComponentExtended;
21
22
  export declare const Animator: AnimatorComponentDefinitionExtended;
22
23
  export declare const AudioSource: AudioSourceComponentDefinitionExtended;
24
+ export declare const AudioAnalysis: AudioAnalysisComponentDefinitionExtended;
23
25
  export declare const AudioStream: AudioStreamComponentDefinitionExtended;
24
26
  export declare const Material: MaterialComponentDefinitionExtended;
25
27
  export declare const MeshRenderer: MeshRendererComponentDefinitionExtended;
@@ -31,6 +33,7 @@ export declare const VirtualCamera: VirtualCameraComponentDefinitionExtended;
31
33
  export declare const InputModifier: InputModifierComponentDefinitionExtended;
32
34
  export declare const LightSource: LightSourceComponentDefinitionExtended;
33
35
  export declare const TriggerArea: TriggerAreaComponentDefinitionExtended;
36
+ export declare const ParticleSystem: ParticleSystemComponentDefinitionExtended;
34
37
  /**
35
38
  * @alpha
36
39
  * This is going to be used for sync components through a server.
package/dist-cjs/index.js CHANGED
@@ -26,14 +26,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
26
  return result;
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.TriggerArea = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.Tags = exports.Name = exports.MeshCollider = exports.MeshRenderer = exports.Material = exports.AudioStream = exports.AudioSource = exports.Animator = exports.Transform = exports.components = exports.cyclicParentingChecker = void 0;
29
+ exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.ParticleSystem = exports.TriggerArea = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.Tags = exports.Name = exports.MeshCollider = exports.MeshRenderer = exports.Material = exports.AudioStream = exports.AudioAnalysis = exports.AudioSource = exports.Animator = exports.Transform = exports.components = exports.cyclicParentingChecker = void 0;
30
30
  // The order of the following imports matters. Please do not auto-sort
31
31
  __exportStar(require("./engine"), exports);
32
32
  __exportStar(require("./schemas"), exports);
33
+ __exportStar(require("./runtime/globals"), exports);
33
34
  __exportStar(require("./runtime/initialization"), exports);
34
35
  __exportStar(require("./runtime/types"), exports);
35
36
  __exportStar(require("./runtime/helpers"), exports);
36
- __exportStar(require("./runtime/globals"), exports);
37
37
  var cyclicParentingChecker_1 = require("./systems/cyclicParentingChecker");
38
38
  Object.defineProperty(exports, "cyclicParentingChecker", { enumerable: true, get: function () { return cyclicParentingChecker_1.cyclicParentingChecker; } });
39
39
  __exportStar(require("./systems/events"), exports);
@@ -43,6 +43,7 @@ __exportStar(require("./systems/assetLoad"), exports);
43
43
  __exportStar(require("./systems/async-task"), exports);
44
44
  __exportStar(require("./systems/tween"), exports);
45
45
  __exportStar(require("./systems/triggerArea"), exports);
46
+ __exportStar(require("./systems/physics"), exports);
46
47
  __exportStar(require("./engine/entity"), exports);
47
48
  __exportStar(require("./components/types"), exports);
48
49
  // @internal
@@ -53,6 +54,7 @@ const initialization_1 = require("./runtime/initialization");
53
54
  exports.Transform = components.Transform(initialization_1.engine);
54
55
  exports.Animator = components.Animator(initialization_1.engine);
55
56
  exports.AudioSource = components.AudioSource(initialization_1.engine);
57
+ exports.AudioAnalysis = components.AudioAnalysis(initialization_1.engine);
56
58
  exports.AudioStream = components.AudioStream(initialization_1.engine);
57
59
  exports.Material = components.Material(initialization_1.engine);
58
60
  exports.MeshRenderer = components.MeshRenderer(initialization_1.engine);
@@ -64,6 +66,8 @@ exports.VirtualCamera = components.VirtualCamera(initialization_1.engine);
64
66
  exports.InputModifier = components.InputModifier(initialization_1.engine);
65
67
  exports.LightSource = components.LightSource(initialization_1.engine);
66
68
  exports.TriggerArea = components.TriggerArea(initialization_1.engine);
69
+ exports.ParticleSystem =
70
+ /* @__PURE__*/ components.ParticleSystem(initialization_1.engine);
67
71
  /**
68
72
  * @alpha
69
73
  * This is going to be used for sync components through a server.
@@ -1,6 +1,5 @@
1
1
  /**
2
- * Utilities for standardized globalThis access.
3
- * @public
2
+ * Internal utilities for standardized globalThis access.
4
3
  */
5
4
  /**
6
5
  * Type-safe globalThis property access.
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Utilities for standardized globalThis access.
4
- * @public
3
+ * Internal utilities for standardized globalThis access.
5
4
  */
6
5
  Object.defineProperty(exports, "__esModule", { value: true });
7
6
  exports.setGlobalPolyfill = exports.getGlobal = void 0;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isEqual = exports.areConnected = void 0;
4
+ /** Returns a string representation of the given coordinates in the format "x,y" */
5
+ function formatCoord(coord) {
6
+ return `${coord.x},${coord.y}`;
7
+ }
4
8
  /**
5
9
  * Returns true if the given parcels array are connected
6
10
  */
@@ -8,8 +12,8 @@ function areConnected(parcels) {
8
12
  if (parcels.length === 0) {
9
13
  return false;
10
14
  }
11
- const visited = visitParcel(parcels[0], parcels);
12
- return visited.length === parcels.length;
15
+ const visited = visitConnectedParcels(parcels[0], parcels);
16
+ return visited.size === parcels.length;
13
17
  }
14
18
  exports.areConnected = areConnected;
15
19
  /**
@@ -19,19 +23,38 @@ function isEqual(p1, p2) {
19
23
  return p1.x === p2.x && p1.y === p2.y;
20
24
  }
21
25
  exports.isEqual = isEqual;
22
- function visitParcel(parcel, allParcels, visited = []) {
23
- const isVisited = visited.some((visitedParcel) => isEqual(visitedParcel, parcel));
24
- if (!isVisited) {
25
- visited.push(parcel);
26
- const neighbours = getNeighbours(parcel.x, parcel.y, allParcels);
27
- neighbours.forEach((neighbours) => visitParcel(neighbours, allParcels, visited));
26
+ /**
27
+ * Returns the list of connected parcels starting from the given parcel.
28
+ * @param parcel - The starting parcel to visit
29
+ * @param allParcels - The list of all parcels to consider for connectivity
30
+ * @returns The list of connected parcels starting from the given parcel
31
+ * @remarks This function uses an iterative depth-first search (DFS) approach to avoid blowing the call stack on large connected parcel sets.
32
+ */
33
+ function visitConnectedParcels(parcel, allParcels) {
34
+ const allParcelsSet = new Set(allParcels.map(formatCoord));
35
+ const visitedSet = new Set();
36
+ const stackToVisit = [parcel];
37
+ while (stackToVisit.length > 0) {
38
+ const currentParcel = stackToVisit.pop();
39
+ const key = formatCoord(currentParcel);
40
+ const isVisited = visitedSet.has(key);
41
+ if (!isVisited) {
42
+ visitedSet.add(key);
43
+ const neighbours = getNeighbours(currentParcel.x, currentParcel.y, allParcelsSet);
44
+ for (const n of neighbours) {
45
+ if (!visitedSet.has(formatCoord(n)))
46
+ stackToVisit.push(n);
47
+ }
48
+ }
28
49
  }
29
- return visited;
30
- }
31
- function getIsNeighbourMatcher(x, y) {
32
- return (coords) => (coords.x === x && (coords.y + 1 === y || coords.y - 1 === y)) ||
33
- (coords.y === y && (coords.x + 1 === x || coords.x - 1 === x));
50
+ return visitedSet;
34
51
  }
35
52
  function getNeighbours(x, y, parcels) {
36
- return parcels.filter(getIsNeighbourMatcher(x, y));
53
+ const neighbourCandidates = [
54
+ { x: x + 1, y },
55
+ { x: x - 1, y },
56
+ { x, y: y + 1 },
57
+ { x, y: y - 1 }
58
+ ];
59
+ return neighbourCandidates.filter((c) => parcels.has(formatCoord(c)));
37
60
  }
@@ -1,3 +1,4 @@
1
1
  export * from './coordinates';
2
2
  export * from './tree';
3
+ export * from './vectors';
3
4
  export { createTimers, Timers, TimerId, TimerCallback } from './timers';
@@ -17,5 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.createTimers = void 0;
18
18
  __exportStar(require("./coordinates"), exports);
19
19
  __exportStar(require("./tree"), exports);
20
+ __exportStar(require("./vectors"), exports);
20
21
  var timers_1 = require("./timers");
21
22
  Object.defineProperty(exports, "createTimers", { enumerable: true, get: function () { return timers_1.createTimers; } });