@dcl/ecs 7.22.6-25007982108.commit-83012ab → 7.22.6-25375246959.commit-ec25d50

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 (251) hide show
  1. package/dist/components/extended/MeshCollider.d.ts +0 -8
  2. package/dist/components/extended/MeshCollider.js +0 -6
  3. package/dist/components/extended/MeshRenderer.d.ts +0 -8
  4. package/dist/components/extended/MeshRenderer.js +0 -5
  5. package/dist/components/extended/ParticleSystem.d.ts +24 -0
  6. package/dist/components/extended/ParticleSystem.js +23 -0
  7. package/dist/components/extended/Tween.d.ts +48 -1
  8. package/dist/components/extended/Tween.js +66 -0
  9. package/dist/components/generated/{TextureCamera.gen.js → AudioAnalysis.gen.js} +7 -7
  10. package/dist/components/generated/component-names.gen.js +1 -10
  11. package/dist/components/generated/global.gen.d.ts +2 -20
  12. package/dist/components/generated/global.gen.js +1 -10
  13. package/dist/components/generated/index.gen.d.ts +4 -40
  14. package/dist/components/generated/index.gen.js +5 -50
  15. package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
  16. package/dist/components/generated/pb/decentraland/common/texture.gen.js +0 -65
  17. package/dist/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
  18. package/dist/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +161 -0
  19. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
  20. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
  21. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +0 -43
  22. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +1 -151
  23. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
  24. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
  25. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
  26. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +1 -119
  27. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +2 -4
  28. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -3
  29. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
  30. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
  31. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
  32. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +1 -57
  33. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +0 -20
  34. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +0 -56
  35. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
  36. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +0 -56
  37. package/dist/components/generated/pb/decentraland/sdk/components/particle_system.gen.d.ts +14 -1
  38. package/dist/components/generated/pb/decentraland/sdk/components/particle_system.gen.js +42 -4
  39. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
  40. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
  41. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +0 -13
  42. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +0 -30
  43. package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +0 -2
  44. package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +0 -10
  45. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
  46. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
  47. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
  48. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +0 -90
  49. package/dist/components/generated/types.gen.d.ts +1 -0
  50. package/dist/components/generated/types.gen.js +1 -0
  51. package/dist/components/index.d.ts +9 -11
  52. package/dist/components/index.js +8 -11
  53. package/dist/components/manual/Transform.d.ts +13 -0
  54. package/dist/components/manual/Transform.js +8 -0
  55. package/dist/components/types.d.ts +2 -3
  56. package/dist/engine/entity.js +4 -2
  57. package/dist/engine/grow-only-value-set-component-definition.js +1 -1
  58. package/dist/engine/input.d.ts +0 -6
  59. package/dist/engine/input.js +4 -9
  60. package/dist/engine/lww-element-set-component-definition.d.ts +2 -2
  61. package/dist/engine/lww-element-set-component-definition.js +24 -7
  62. package/dist/index.d.ts +4 -2
  63. package/dist/index.js +4 -1
  64. package/dist/runtime/globals.d.ts +1 -2
  65. package/dist/runtime/globals.js +1 -2
  66. package/dist/runtime/helpers/index.d.ts +1 -0
  67. package/dist/runtime/helpers/index.js +1 -0
  68. package/dist/runtime/helpers/tree.d.ts +6 -0
  69. package/dist/runtime/helpers/tree.js +2 -2
  70. package/dist/runtime/helpers/vectors.js +36 -0
  71. package/dist/runtime/initialization/index.d.ts +7 -0
  72. package/dist/runtime/initialization/index.js +6 -0
  73. package/dist/systems/crdt/index.js +6 -6
  74. package/dist/systems/events.d.ts +25 -59
  75. package/dist/systems/events.js +129 -145
  76. package/dist/systems/physics-force.js +140 -0
  77. package/dist/systems/physics-impulse.d.ts +12 -0
  78. package/dist/systems/physics-impulse.js +85 -0
  79. package/dist/systems/physics.d.ts +77 -0
  80. package/dist/systems/physics.js +18 -0
  81. package/dist/systems/raycast.d.ts +1 -3
  82. package/dist/systems/raycast.js +0 -2
  83. package/dist-cjs/components/extended/MeshCollider.d.ts +0 -8
  84. package/dist-cjs/components/extended/MeshCollider.js +0 -6
  85. package/dist-cjs/components/extended/MeshRenderer.d.ts +0 -8
  86. package/dist-cjs/components/extended/MeshRenderer.js +0 -5
  87. package/dist-cjs/components/extended/ParticleSystem.d.ts +24 -0
  88. package/dist-cjs/components/extended/ParticleSystem.js +28 -0
  89. package/dist-cjs/components/extended/Tween.d.ts +48 -1
  90. package/dist-cjs/components/extended/Tween.js +66 -0
  91. package/dist-cjs/components/generated/{TextureCamera.gen.js → AudioAnalysis.gen.js} +8 -8
  92. package/dist-cjs/components/generated/component-names.gen.js +1 -10
  93. package/dist-cjs/components/generated/global.gen.d.ts +2 -20
  94. package/dist-cjs/components/generated/global.gen.js +3 -12
  95. package/dist-cjs/components/generated/index.gen.d.ts +4 -40
  96. package/dist-cjs/components/generated/index.gen.js +8 -62
  97. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
  98. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +1 -66
  99. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
  100. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +167 -0
  101. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
  102. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
  103. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +0 -43
  104. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +2 -152
  105. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
  106. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
  107. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
  108. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +2 -120
  109. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +2 -4
  110. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -3
  111. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
  112. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
  113. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
  114. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +2 -58
  115. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +0 -20
  116. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +1 -57
  117. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
  118. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +1 -57
  119. package/dist-cjs/components/generated/pb/decentraland/sdk/components/particle_system.gen.d.ts +14 -1
  120. package/dist-cjs/components/generated/pb/decentraland/sdk/components/particle_system.gen.js +43 -5
  121. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
  122. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
  123. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +0 -13
  124. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +1 -31
  125. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +0 -2
  126. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +0 -10
  127. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
  128. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
  129. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
  130. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +1 -91
  131. package/dist-cjs/components/generated/types.gen.d.ts +1 -0
  132. package/dist-cjs/components/generated/types.gen.js +3 -0
  133. package/dist-cjs/components/index.d.ts +9 -11
  134. package/dist-cjs/components/index.js +11 -15
  135. package/dist-cjs/components/manual/Transform.d.ts +13 -0
  136. package/dist-cjs/components/manual/Transform.js +31 -0
  137. package/dist-cjs/components/types.d.ts +2 -3
  138. package/dist-cjs/engine/entity.js +4 -2
  139. package/dist-cjs/engine/grow-only-value-set-component-definition.js +1 -1
  140. package/dist-cjs/engine/input.d.ts +0 -6
  141. package/dist-cjs/engine/input.js +4 -9
  142. package/dist-cjs/engine/lww-element-set-component-definition.d.ts +2 -2
  143. package/dist-cjs/engine/lww-element-set-component-definition.js +24 -7
  144. package/dist-cjs/index.d.ts +4 -2
  145. package/dist-cjs/index.js +5 -2
  146. package/dist-cjs/runtime/globals.d.ts +1 -2
  147. package/dist-cjs/runtime/globals.js +1 -2
  148. package/dist-cjs/runtime/helpers/index.d.ts +1 -0
  149. package/dist-cjs/runtime/helpers/index.js +1 -0
  150. package/dist-cjs/runtime/helpers/tree.d.ts +6 -0
  151. package/dist-cjs/runtime/helpers/tree.js +3 -2
  152. package/dist-cjs/runtime/helpers/vectors.js +39 -0
  153. package/dist-cjs/runtime/initialization/index.d.ts +7 -0
  154. package/dist-cjs/runtime/initialization/index.js +7 -1
  155. package/dist-cjs/systems/crdt/index.js +6 -6
  156. package/dist-cjs/systems/events.d.ts +25 -59
  157. package/dist-cjs/systems/events.js +129 -145
  158. package/dist-cjs/systems/physics-force.js +167 -0
  159. package/dist-cjs/systems/physics-impulse.d.ts +12 -0
  160. package/dist-cjs/systems/physics-impulse.js +112 -0
  161. package/dist-cjs/systems/physics.d.ts +77 -0
  162. package/dist-cjs/systems/physics.js +23 -0
  163. package/dist-cjs/systems/raycast.d.ts +1 -3
  164. package/dist-cjs/systems/raycast.js +0 -2
  165. package/package.json +3 -2
  166. package/dist/components/extended/AvatarEquippedData.d.ts +0 -10
  167. package/dist/components/extended/AvatarEquippedData.js +0 -15
  168. package/dist/components/extended/AvatarShape.d.ts +0 -10
  169. package/dist/components/extended/AvatarShape.js +0 -15
  170. package/dist/components/generated/AvatarMovement.gen.d.ts +0 -1
  171. package/dist/components/generated/AvatarMovement.gen.js +0 -25
  172. package/dist/components/generated/AvatarMovementInfo.gen.d.ts +0 -1
  173. package/dist/components/generated/AvatarMovementInfo.gen.js +0 -25
  174. package/dist/components/generated/CameraLayer.gen.d.ts +0 -1
  175. package/dist/components/generated/CameraLayer.gen.js +0 -25
  176. package/dist/components/generated/CameraLayers.gen.d.ts +0 -1
  177. package/dist/components/generated/CameraLayers.gen.js +0 -25
  178. package/dist/components/generated/GlobalLight.gen.d.ts +0 -1
  179. package/dist/components/generated/GlobalLight.gen.js +0 -25
  180. package/dist/components/generated/GltfNode.gen.d.ts +0 -1
  181. package/dist/components/generated/GltfNode.gen.js +0 -25
  182. package/dist/components/generated/GltfNodeState.gen.d.ts +0 -1
  183. package/dist/components/generated/GltfNodeState.gen.js +0 -25
  184. package/dist/components/generated/TextureCamera.gen.d.ts +0 -1
  185. package/dist/components/generated/UiCanvas.gen.d.ts +0 -1
  186. package/dist/components/generated/UiCanvas.gen.js +0 -25
  187. package/dist/components/generated/UiScrollResult.gen.d.ts +0 -1
  188. package/dist/components/generated/UiScrollResult.gen.js +0 -25
  189. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +0 -20
  190. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +0 -69
  191. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +0 -32
  192. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +0 -126
  193. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
  194. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -104
  195. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
  196. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -50
  197. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
  198. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -61
  199. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
  200. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -41
  201. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
  202. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -59
  203. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
  204. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -191
  205. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
  206. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -60
  207. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
  208. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -42
  209. package/dist-cjs/components/extended/AvatarEquippedData.d.ts +0 -10
  210. package/dist-cjs/components/extended/AvatarEquippedData.js +0 -19
  211. package/dist-cjs/components/extended/AvatarShape.d.ts +0 -10
  212. package/dist-cjs/components/extended/AvatarShape.js +0 -19
  213. package/dist-cjs/components/generated/AvatarMovement.gen.js +0 -28
  214. package/dist-cjs/components/generated/AvatarMovementInfo.gen.js +0 -28
  215. package/dist-cjs/components/generated/CameraLayer.gen.js +0 -28
  216. package/dist-cjs/components/generated/CameraLayers.gen.js +0 -28
  217. package/dist-cjs/components/generated/GlobalLight.gen.js +0 -28
  218. package/dist-cjs/components/generated/GltfNode.gen.js +0 -28
  219. package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +0 -1
  220. package/dist-cjs/components/generated/GltfNodeState.gen.js +0 -28
  221. package/dist-cjs/components/generated/TextureCamera.gen.d.ts +0 -1
  222. package/dist-cjs/components/generated/UiCanvas.gen.d.ts +0 -1
  223. package/dist-cjs/components/generated/UiCanvas.gen.js +0 -28
  224. package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +0 -1
  225. package/dist-cjs/components/generated/UiScrollResult.gen.js +0 -28
  226. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +0 -20
  227. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +0 -75
  228. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +0 -32
  229. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +0 -132
  230. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
  231. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -110
  232. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
  233. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -56
  234. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
  235. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -67
  236. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
  237. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -47
  238. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
  239. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -65
  240. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
  241. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -197
  242. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
  243. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -66
  244. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
  245. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -48
  246. /package/{dist-cjs/components/generated/CameraLayers.gen.d.ts → dist/components/generated/AudioAnalysis.gen.d.ts} +0 -0
  247. /package/{dist-cjs/components/generated/GlobalLight.gen.d.ts → dist/runtime/helpers/vectors.d.ts} +0 -0
  248. /package/{dist-cjs/components/generated/GltfNode.gen.d.ts → dist/systems/physics-force.d.ts} +0 -0
  249. /package/dist-cjs/components/generated/{AvatarMovement.gen.d.ts → AudioAnalysis.gen.d.ts} +0 -0
  250. /package/dist-cjs/{components/generated/AvatarMovementInfo.gen.d.ts → runtime/helpers/vectors.d.ts} +0 -0
  251. /package/dist-cjs/{components/generated/CameraLayer.gen.d.ts → systems/physics-force.d.ts} +0 -0
@@ -1,5 +1,6 @@
1
1
  import { LastWriteWinElementSetComponentDefinition, IEngine } from '../../engine';
2
2
  import { Entity } from '../../engine/entity';
3
+ import type { Vector3Type } from '../../schemas/custom/Vector3';
3
4
  /**
4
5
  * @public
5
6
  */
@@ -10,6 +11,18 @@ export type TransformComponent = LastWriteWinElementSetComponentDefinition<Trans
10
11
  export interface TransformComponentExtended extends TransformComponent {
11
12
  create(entity: Entity, val?: TransformTypeWithOptionals): TransformType;
12
13
  createOrReplace(entity: Entity, val?: TransformTypeWithOptionals): TransformType;
14
+ /**
15
+ * Transforms a direction vector from an entity's local coordinate space
16
+ * to world space, accounting for the full parent hierarchy.
17
+ *
18
+ * This applies only rotation (not translation or scale) — suitable for
19
+ * direction vectors like force/impulse directions.
20
+ *
21
+ * @param entity - The source entity whose local space defines the direction
22
+ * @param localDirection - Direction vector in the entity's local coordinates
23
+ * @returns The direction vector in world coordinates
24
+ */
25
+ localToWorldDirection(entity: Entity, localDirection: Vector3Type): Vector3Type;
13
26
  }
14
27
  /**
15
28
  * @public
@@ -1,6 +1,33 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.defineTransformComponent = exports.TransformSchema = exports.TRANSFORM_LENGTH = exports.COMPONENT_ID = void 0;
27
+ // Use import * to safely handle circular dependency (tree.ts → components → Transform.ts → tree.ts).
28
+ // With import *, the namespace object's properties are resolved at access time (live bindings in ESM,
29
+ // getters via __importStar in CJS), so by the time methods are called all exports are available.
30
+ const treeHelpers = __importStar(require("../../runtime/helpers/tree"));
4
31
  /**
5
32
  * @internal
6
33
  */
@@ -104,6 +131,10 @@ function defineTransformComponent(engine) {
104
131
  },
105
132
  createOrReplace(entity, val) {
106
133
  return transformDef.createOrReplace(entity, exports.TransformSchema.extend(val));
134
+ },
135
+ localToWorldDirection(entity, localDirection) {
136
+ const worldRotation = treeHelpers.getWorldRotation(engine, entity);
137
+ return treeHelpers.rotateVectorByQuaternion(localDirection, worldRotation);
107
138
  }
108
139
  };
109
140
  }
@@ -3,10 +3,8 @@ export type { AudioSourceComponentDefinitionExtended } from './extended/AudioSou
3
3
  export type { AudioStreamComponentDefinitionExtended } from './extended/AudioStream';
4
4
  export type { MeshRendererComponentDefinitionExtended } from './extended/MeshRenderer';
5
5
  export type { MeshColliderComponentDefinitionExtended } from './extended/MeshCollider';
6
- export type { AvatarEquippedDataComponentDefinitionExtended, AvatarEquippedDataType } from './extended/AvatarEquippedData';
7
- export type { AvatarShapeComponentDefinitionExtended, AvatarShapeType } from './extended/AvatarShape';
8
6
  export type { TextureHelper, MaterialComponentDefinitionExtended, FlatTexture, ReadonlyFlatMaterial, ReadonlyFlatTexture, FlatMaterial } from './extended/Material';
9
- export type { TweenHelper, TweenComponentDefinitionExtended } from './extended/Tween';
7
+ export type { TweenHelper, TweenComponentDefinitionExtended, SetMoveRotateScaleParams, MoveRotateScaleModeParams } from './extended/Tween';
10
8
  export type { CameraTransitionHelper, VirtualCameraComponentDefinitionExtended } from './extended/VirtualCamera';
11
9
  export type { TransformComponentExtended, TransformTypeWithOptionals } from './manual/Transform';
12
10
  export type { NameComponent, NameType } from './manual/Name';
@@ -17,3 +15,4 @@ export type { INetowrkParent, INetowrkParentType } from './manual/NetworkParent'
17
15
  export type { InputModifierHelper, InputModifierComponentDefinitionExtended } from './extended/InputModifier';
18
16
  export type { LightSourceHelper, LightSourceComponentDefinitionExtended } from './extended/LightSource';
19
17
  export type { TriggerAreaComponentDefinitionExtended } from './extended/TriggerArea';
18
+ export type { ParticleSystemHelper, ParticleSystemComponentDefinitionExtended, ParticleSystemBlendMode, ParticleSystemPlaybackState } from './extended/ParticleSystem';
@@ -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
@@ -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
@@ -144,8 +144,9 @@ function createInputSystem(engine) {
144
144
  }
145
145
  if (!up || !down)
146
146
  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)) {
147
+ // If the DOWN command has happened before or at the same time as the UP command, a click has happened.
148
+ // Same-timestamp is possible when both events are produced within the same renderer tick.
149
+ if (down.timestamp <= up.timestamp && timestampIsCurrentFrame(up.timestamp)) {
149
150
  return { up, down };
150
151
  }
151
152
  return null;
@@ -211,18 +212,12 @@ function createInputSystem(engine) {
211
212
  function isPressed(inputAction) {
212
213
  return globalState.buttonState.get(inputAction)?.state === 1 /* PointerEventType.PET_DOWN */;
213
214
  }
214
- function* getInputCommands() {
215
- for (let i = globalState.thisFrameCommands.length - 1; i >= 0; i--) {
216
- yield globalState.thisFrameCommands[i];
217
- }
218
- }
219
215
  return {
220
216
  isPressed,
221
217
  getClick,
222
218
  getInputCommand,
223
219
  isClicked,
224
- isTriggered,
225
- getInputCommands
220
+ isTriggered
226
221
  };
227
222
  }
228
223
  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,9 +12,10 @@ 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, 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;
@@ -31,6 +32,7 @@ export declare const VirtualCamera: VirtualCameraComponentDefinitionExtended;
31
32
  export declare const InputModifier: InputModifierComponentDefinitionExtended;
32
33
  export declare const LightSource: LightSourceComponentDefinitionExtended;
33
34
  export declare const TriggerArea: TriggerAreaComponentDefinitionExtended;
35
+ export declare const ParticleSystem: ParticleSystemComponentDefinitionExtended;
34
36
  /**
35
37
  * @alpha
36
38
  * 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.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
@@ -64,6 +65,8 @@ exports.VirtualCamera = components.VirtualCamera(initialization_1.engine);
64
65
  exports.InputModifier = components.InputModifier(initialization_1.engine);
65
66
  exports.LightSource = components.LightSource(initialization_1.engine);
66
67
  exports.TriggerArea = components.TriggerArea(initialization_1.engine);
68
+ exports.ParticleSystem =
69
+ /* @__PURE__*/ components.ParticleSystem(initialization_1.engine);
67
70
  /**
68
71
  * @alpha
69
72
  * 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,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; } });
@@ -2,6 +2,12 @@ import { Entity } from '../../engine/entity';
2
2
  import { ComponentDefinition, IEngine } from '../../engine';
3
3
  import { Vector3Type } from '../../schemas/custom/Vector3';
4
4
  import { QuaternionType } from '../../schemas/custom/Quaternion';
5
+ /**
6
+ * @public
7
+ * Rotate a vector by a quaternion
8
+ * Uses the formula: v' = q * v * q^(-1), optimized version
9
+ */
10
+ export declare function rotateVectorByQuaternion(v: Vector3Type, q: QuaternionType): Vector3Type;
5
11
  /**
6
12
  * Get an iterator of entities that follow a tree structure for a component
7
13
  * @public
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.getWorldRotation = exports.getWorldPosition = exports.getEntitiesWithParent = exports.removeEntityWithChildren = exports.getComponentEntityTree = void 0;
26
+ exports.getWorldRotation = exports.getWorldPosition = exports.getEntitiesWithParent = exports.removeEntityWithChildren = exports.getComponentEntityTree = exports.rotateVectorByQuaternion = void 0;
27
27
  const components = __importStar(require("../../components"));
28
28
  /**
29
29
  * @internal
@@ -61,7 +61,7 @@ function multiplyQuaternions(q1, q2) {
61
61
  };
62
62
  }
63
63
  /**
64
- * @internal
64
+ * @public
65
65
  * Rotate a vector by a quaternion
66
66
  * Uses the formula: v' = q * v * q^(-1), optimized version
67
67
  */
@@ -80,6 +80,7 @@ function rotateVectorByQuaternion(v, q) {
80
80
  z: iz * qw + iw * -qz + ix * -qy - iy * -qx
81
81
  };
82
82
  }
83
+ exports.rotateVectorByQuaternion = rotateVectorByQuaternion;
83
84
  /** @internal Identity transform values */
84
85
  const IDENTITY_POSITION = { x: 0, y: 0, z: 0 };
85
86
  const IDENTITY_ROTATION = { x: 0, y: 0, z: 0, w: 1 };
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Vector3 = void 0;
4
+ /**
5
+ * Lightweight Vector3 math utilities for internal use.
6
+ * Mirrors the subset of @dcl/ecs-math Vector3 API used by the physics helpers.
7
+ *
8
+ * TEMPORARY WORKAROUND: @dcl/ecs-math ships ESM-only, which breaks the dist-cjs build.
9
+ * The proper fix is to add a CJS build to @dcl/ecs-math upstream, then replace this
10
+ * file with `import { Vector3 } from '@dcl/ecs-math'`.
11
+ *
12
+ * @internal
13
+ */
14
+ exports.Vector3 = {
15
+ add(a, b) {
16
+ return { x: a.x + b.x, y: a.y + b.y, z: a.z + b.z };
17
+ },
18
+ subtract(a, b) {
19
+ return { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z };
20
+ },
21
+ scale(v, s) {
22
+ return { x: v.x * s, y: v.y * s, z: v.z * s };
23
+ },
24
+ length(v) {
25
+ return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
26
+ },
27
+ normalize(v) {
28
+ const len = exports.Vector3.length(v);
29
+ if (len === 0)
30
+ return { x: 0, y: 0, z: 0 };
31
+ return { x: v.x / len, y: v.y / len, z: v.z / len };
32
+ },
33
+ equals(a, b) {
34
+ return a.x === b.x && a.y === b.y && a.z === b.z;
35
+ },
36
+ equalsToFloats(v, x, y, z) {
37
+ return v.x === x && v.y === y && v.z === z;
38
+ }
39
+ };
@@ -12,6 +12,7 @@ import { AssetLoadLoadingStateSystem } from '../../systems/assetLoad';
12
12
  import { TweenSystem } from '../../systems/tween';
13
13
  import { TriggerAreaEventsSystem } from '../../systems/triggerArea';
14
14
  import { createTimers, Timers } from '../helpers/timers';
15
+ import { PhysicsSystem } from '../../systems/physics';
15
16
  /**
16
17
  * @public
17
18
  * The engine is the part of the scene that sits in the middle and manages all of the other parts.
@@ -77,6 +78,12 @@ export { TriggerAreaEventsSystem };
77
78
  */
78
79
  export declare const timers: Timers;
79
80
  export { Timers, createTimers };
81
+ /**
82
+ * @public
83
+ * Physics helpers for applying impulses and forces to the player.
84
+ */
85
+ export declare const Physics: PhysicsSystem;
86
+ export { PhysicsSystem };
80
87
  /**
81
88
  * @public
82
89
  * Runs an async function
@@ -4,7 +4,7 @@
4
4
  * init and it'll be changing.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.executeTask = exports.createTimers = exports.timers = exports.triggerAreaEventsSystem = exports.tweenSystem = exports.assetLoadLoadingStateSystem = exports.videoEventsSystem = exports.raycastSystem = exports.pointerEventsSystem = exports.inputSystem = exports.engine = void 0;
7
+ exports.executeTask = exports.Physics = exports.createTimers = exports.timers = exports.triggerAreaEventsSystem = exports.tweenSystem = exports.assetLoadLoadingStateSystem = exports.videoEventsSystem = exports.raycastSystem = exports.pointerEventsSystem = exports.inputSystem = exports.engine = void 0;
8
8
  const engine_1 = require("../../engine");
9
9
  const async_task_1 = require("../../systems/async-task");
10
10
  const events_1 = require("../../systems/events");
@@ -18,6 +18,7 @@ const triggerArea_1 = require("../../systems/triggerArea");
18
18
  const timers_1 = require("../helpers/timers");
19
19
  Object.defineProperty(exports, "createTimers", { enumerable: true, get: function () { return timers_1.createTimers; } });
20
20
  const globals_1 = require("../globals");
21
+ const physics_1 = require("../../systems/physics");
21
22
  /**
22
23
  * @public
23
24
  * The engine is the part of the scene that sits in the middle and manages all of the other parts.
@@ -80,6 +81,11 @@ exports.timers = (0, timers_1.createTimers)(exports.engine);
80
81
  (0, globals_1.setGlobalPolyfill)('clearTimeout', exports.timers.clearTimeout);
81
82
  (0, globals_1.setGlobalPolyfill)('setInterval', exports.timers.setInterval);
82
83
  (0, globals_1.setGlobalPolyfill)('clearInterval', exports.timers.clearInterval);
84
+ /**
85
+ * @public
86
+ * Physics helpers for applying impulses and forces to the player.
87
+ */
88
+ exports.Physics = (0, physics_1.createPhysicsSystem)(exports.engine);
83
89
  /**
84
90
  * Adds pointer event collider system only in DEV env
85
91
  */
@@ -244,6 +244,12 @@ function crdtSceneSystem(engine, onProcessEntityComponentChange) {
244
244
  const buffer = new ByteBuffer_1.ReadWriteByteBuffer();
245
245
  // Then we send all the new crdtMessages that the transport needs to process
246
246
  for (const message of crdtMessages) {
247
+ // Avoid echo messages
248
+ if (message.transportId === transportIndex)
249
+ continue;
250
+ // Redundant message for the transport
251
+ if (!transport.filter(message))
252
+ continue;
247
253
  // Check if adding this message would exceed the size limit
248
254
  const currentBufferSize = transportBuffer.toBinary().byteLength;
249
255
  const messageSize = message.messageBuffer.byteLength;
@@ -260,12 +266,6 @@ function crdtSceneSystem(engine, onProcessEntityComponentChange) {
260
266
  continue;
261
267
  }
262
268
  }
263
- // Avoid echo messages
264
- if (message.transportId === transportIndex)
265
- continue;
266
- // Redundant message for the transport
267
- if (!transport.filter(message))
268
- continue;
269
269
  const { entityId } = findNetworkId(message);
270
270
  const transformNeedsFix = 'componentId' in message &&
271
271
  message.componentId === Transform.componentId &&