@dcl/ecs 7.21.0 → 7.21.1-22917715332.commit-e5d969d

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 (222) hide show
  1. package/dist/components/extended/AvatarEquippedData.d.ts +10 -0
  2. package/dist/components/extended/AvatarEquippedData.js +15 -0
  3. package/dist/components/extended/AvatarShape.d.ts +10 -0
  4. package/dist/components/extended/AvatarShape.js +15 -0
  5. package/dist/components/extended/MeshCollider.d.ts +8 -0
  6. package/dist/components/extended/MeshCollider.js +6 -0
  7. package/dist/components/extended/MeshRenderer.d.ts +8 -0
  8. package/dist/components/extended/MeshRenderer.js +5 -0
  9. package/dist/components/extended/Tween.d.ts +1 -48
  10. package/dist/components/extended/Tween.js +0 -66
  11. package/dist/components/generated/AvatarLocomotionSettings.gen.d.ts +1 -0
  12. package/dist/components/generated/AvatarLocomotionSettings.gen.js +25 -0
  13. package/dist/components/generated/AvatarMovement.gen.d.ts +1 -0
  14. package/dist/components/generated/AvatarMovement.gen.js +25 -0
  15. package/dist/components/generated/AvatarMovementInfo.gen.d.ts +1 -0
  16. package/dist/components/generated/AvatarMovementInfo.gen.js +25 -0
  17. package/dist/components/generated/CameraLayer.gen.d.ts +1 -0
  18. package/dist/components/generated/CameraLayer.gen.js +25 -0
  19. package/dist/components/generated/CameraLayers.gen.d.ts +1 -0
  20. package/dist/components/generated/CameraLayers.gen.js +25 -0
  21. package/dist/components/generated/GlobalLight.gen.d.ts +1 -0
  22. package/dist/components/generated/GlobalLight.gen.js +25 -0
  23. package/dist/components/generated/GltfNode.gen.d.ts +1 -0
  24. package/dist/components/generated/GltfNode.gen.js +25 -0
  25. package/dist/components/generated/GltfNodeState.gen.d.ts +1 -0
  26. package/dist/components/generated/GltfNodeState.gen.js +25 -0
  27. package/dist/components/generated/TextureCamera.gen.d.ts +1 -0
  28. package/dist/components/generated/TextureCamera.gen.js +25 -0
  29. package/dist/components/generated/UiCanvas.gen.d.ts +1 -0
  30. package/dist/components/generated/UiCanvas.gen.js +25 -0
  31. package/dist/components/generated/UiScrollResult.gen.d.ts +1 -0
  32. package/dist/components/generated/UiScrollResult.gen.js +25 -0
  33. package/dist/components/generated/component-names.gen.js +11 -2
  34. package/dist/components/generated/global.gen.d.ts +22 -4
  35. package/dist/components/generated/global.gen.js +11 -2
  36. package/dist/components/generated/index.gen.d.ts +44 -8
  37. package/dist/components/generated/index.gen.js +55 -10
  38. package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
  39. package/dist/components/generated/pb/decentraland/common/texture.gen.js +65 -0
  40. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
  41. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
  42. package/dist/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.d.ts +29 -0
  43. package/dist/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.js +93 -0
  44. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +43 -0
  45. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +151 -1
  46. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +20 -0
  47. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +69 -0
  48. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +32 -0
  49. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +126 -0
  50. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
  51. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
  52. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
  53. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +104 -0
  54. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
  55. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +50 -0
  56. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +37 -1
  57. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +119 -1
  58. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +6 -2
  59. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +4 -0
  60. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
  61. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +61 -0
  62. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  63. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
  64. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
  65. package/dist/components/generated/pb/decentraland/sdk/components/{physics_combined_force.gen.js → gltf_node.gen.js} +11 -12
  66. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
  67. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +59 -0
  68. package/dist/components/generated/pb/decentraland/sdk/components/input_modifier.gen.d.ts +0 -2
  69. package/dist/components/generated/pb/decentraland/sdk/components/input_modifier.gen.js +0 -20
  70. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
  71. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +57 -1
  72. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
  73. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +56 -0
  74. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
  75. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +56 -0
  76. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
  77. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
  78. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +13 -0
  79. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +30 -0
  80. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
  81. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +191 -0
  82. package/dist/components/generated/pb/decentraland/sdk/components/tween.gen.d.ts +0 -21
  83. package/dist/components/generated/pb/decentraland/sdk/components/tween.gen.js +0 -99
  84. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
  85. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +60 -0
  86. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
  87. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +42 -0
  88. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +4 -0
  89. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +20 -0
  90. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
  91. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +90 -0
  92. package/dist/components/index.d.ts +11 -7
  93. package/dist/components/index.js +11 -5
  94. package/dist/components/types.d.ts +3 -1
  95. package/dist/engine/entity.js +2 -4
  96. package/dist/engine/grow-only-value-set-component-definition.js +1 -1
  97. package/dist/engine/input.d.ts +6 -0
  98. package/dist/engine/input.js +9 -4
  99. package/dist/index.d.ts +1 -1
  100. package/dist/index.js +1 -1
  101. package/dist/runtime/globals.d.ts +2 -1
  102. package/dist/runtime/globals.js +2 -1
  103. package/dist/systems/events.d.ts +100 -1
  104. package/dist/systems/events.js +143 -65
  105. package/dist/systems/raycast.d.ts +3 -1
  106. package/dist/systems/raycast.js +2 -0
  107. package/dist-cjs/components/extended/AvatarEquippedData.d.ts +10 -0
  108. package/dist-cjs/components/extended/AvatarEquippedData.js +19 -0
  109. package/dist-cjs/components/extended/AvatarShape.d.ts +10 -0
  110. package/dist-cjs/components/extended/AvatarShape.js +19 -0
  111. package/dist-cjs/components/extended/MeshCollider.d.ts +8 -0
  112. package/dist-cjs/components/extended/MeshCollider.js +6 -0
  113. package/dist-cjs/components/extended/MeshRenderer.d.ts +8 -0
  114. package/dist-cjs/components/extended/MeshRenderer.js +5 -0
  115. package/dist-cjs/components/extended/Tween.d.ts +1 -48
  116. package/dist-cjs/components/extended/Tween.js +0 -66
  117. package/dist-cjs/components/generated/AvatarLocomotionSettings.gen.js +28 -0
  118. package/dist-cjs/components/generated/AvatarMovement.gen.js +28 -0
  119. package/dist-cjs/components/generated/AvatarMovementInfo.gen.js +28 -0
  120. package/dist-cjs/components/generated/CameraLayer.gen.js +28 -0
  121. package/dist-cjs/components/generated/CameraLayers.gen.d.ts +1 -0
  122. package/dist-cjs/components/generated/CameraLayers.gen.js +28 -0
  123. package/dist-cjs/components/generated/GlobalLight.gen.d.ts +1 -0
  124. package/dist-cjs/components/generated/GlobalLight.gen.js +28 -0
  125. package/dist-cjs/components/generated/GltfNode.gen.d.ts +1 -0
  126. package/dist-cjs/components/generated/GltfNode.gen.js +28 -0
  127. package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +1 -0
  128. package/dist-cjs/components/generated/GltfNodeState.gen.js +28 -0
  129. package/dist-cjs/components/generated/TextureCamera.gen.d.ts +1 -0
  130. package/dist-cjs/components/generated/TextureCamera.gen.js +28 -0
  131. package/dist-cjs/components/generated/UiCanvas.gen.d.ts +1 -0
  132. package/dist-cjs/components/generated/UiCanvas.gen.js +28 -0
  133. package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +1 -0
  134. package/dist-cjs/components/generated/UiScrollResult.gen.js +28 -0
  135. package/dist-cjs/components/generated/component-names.gen.js +11 -2
  136. package/dist-cjs/components/generated/global.gen.d.ts +22 -4
  137. package/dist-cjs/components/generated/global.gen.js +13 -3
  138. package/dist-cjs/components/generated/index.gen.d.ts +44 -8
  139. package/dist-cjs/components/generated/index.gen.js +68 -14
  140. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
  141. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +66 -1
  142. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
  143. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
  144. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.d.ts +29 -0
  145. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.js +99 -0
  146. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +43 -0
  147. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +152 -2
  148. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +20 -0
  149. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +75 -0
  150. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +32 -0
  151. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +132 -0
  152. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
  153. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
  154. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
  155. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +110 -0
  156. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
  157. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +56 -0
  158. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +37 -1
  159. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +120 -2
  160. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +6 -2
  161. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +4 -0
  162. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
  163. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +67 -0
  164. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  165. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
  166. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
  167. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +47 -0
  168. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
  169. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +65 -0
  170. package/dist-cjs/components/generated/pb/decentraland/sdk/components/input_modifier.gen.d.ts +0 -2
  171. package/dist-cjs/components/generated/pb/decentraland/sdk/components/input_modifier.gen.js +0 -20
  172. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
  173. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +58 -2
  174. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
  175. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +57 -1
  176. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
  177. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +57 -1
  178. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
  179. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
  180. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +13 -0
  181. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +31 -1
  182. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
  183. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +197 -0
  184. package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween.gen.d.ts +0 -21
  185. package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween.gen.js +1 -100
  186. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
  187. package/dist-cjs/components/generated/pb/decentraland/sdk/components/{physics_combined_impulse.gen.js → ui_canvas.gen.js} +26 -17
  188. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
  189. package/dist-cjs/components/generated/pb/decentraland/sdk/components/{physics_combined_force.gen.js → ui_scroll_result.gen.js} +12 -12
  190. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +4 -0
  191. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +20 -0
  192. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
  193. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +91 -1
  194. package/dist-cjs/components/index.d.ts +11 -7
  195. package/dist-cjs/components/index.js +15 -7
  196. package/dist-cjs/components/types.d.ts +3 -1
  197. package/dist-cjs/engine/entity.js +2 -4
  198. package/dist-cjs/engine/grow-only-value-set-component-definition.js +1 -1
  199. package/dist-cjs/engine/input.d.ts +6 -0
  200. package/dist-cjs/engine/input.js +9 -4
  201. package/dist-cjs/index.d.ts +1 -1
  202. package/dist-cjs/index.js +1 -1
  203. package/dist-cjs/runtime/globals.d.ts +2 -1
  204. package/dist-cjs/runtime/globals.js +2 -1
  205. package/dist-cjs/systems/events.d.ts +100 -1
  206. package/dist-cjs/systems/events.js +143 -65
  207. package/dist-cjs/systems/raycast.d.ts +3 -1
  208. package/dist-cjs/systems/raycast.js +2 -0
  209. package/package.json +2 -2
  210. package/dist/components/generated/PhysicsCombinedForce.gen.js +0 -25
  211. package/dist/components/generated/PhysicsCombinedImpulse.gen.js +0 -25
  212. package/dist/components/generated/pb/decentraland/sdk/components/physics_combined_force.gen.d.ts +0 -25
  213. package/dist/components/generated/pb/decentraland/sdk/components/physics_combined_impulse.gen.d.ts +0 -28
  214. package/dist/components/generated/pb/decentraland/sdk/components/physics_combined_impulse.gen.js +0 -51
  215. package/dist-cjs/components/generated/PhysicsCombinedForce.gen.js +0 -28
  216. package/dist-cjs/components/generated/PhysicsCombinedImpulse.gen.js +0 -28
  217. package/dist-cjs/components/generated/pb/decentraland/sdk/components/physics_combined_force.gen.d.ts +0 -25
  218. package/dist-cjs/components/generated/pb/decentraland/sdk/components/physics_combined_impulse.gen.d.ts +0 -28
  219. /package/dist-cjs/components/generated/{PhysicsCombinedForce.gen.d.ts → AvatarLocomotionSettings.gen.d.ts} +0 -0
  220. /package/dist-cjs/components/generated/{PhysicsCombinedImpulse.gen.d.ts → AvatarMovement.gen.d.ts} +0 -0
  221. /package/{dist/components/generated/PhysicsCombinedForce.gen.d.ts → dist-cjs/components/generated/AvatarMovementInfo.gen.d.ts} +0 -0
  222. /package/{dist/components/generated/PhysicsCombinedImpulse.gen.d.ts → dist-cjs/components/generated/CameraLayer.gen.d.ts} +0 -0
@@ -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;
18
+ return a.timestamp > b.timestamp ? 1 : -1;
19
19
  }
20
20
  /**
21
21
  * @internal
@@ -32,6 +32,12 @@ 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>;
35
41
  };
36
42
  /**
37
43
  * @public
@@ -144,9 +144,8 @@ function createInputSystem(engine) {
144
144
  }
145
145
  if (!up || !down)
146
146
  return null;
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)) {
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)) {
150
149
  return { up, down };
151
150
  }
152
151
  return null;
@@ -212,12 +211,18 @@ function createInputSystem(engine) {
212
211
  function isPressed(inputAction) {
213
212
  return globalState.buttonState.get(inputAction)?.state === 1 /* PointerEventType.PET_DOWN */;
214
213
  }
214
+ function* getInputCommands() {
215
+ for (let i = globalState.thisFrameCommands.length - 1; i >= 0; i--) {
216
+ yield globalState.thisFrameCommands[i];
217
+ }
218
+ }
215
219
  return {
216
220
  isPressed,
217
221
  getClick,
218
222
  getInputCommand,
219
223
  isClicked,
220
- isTriggered
224
+ isTriggered,
225
+ getInputCommands
221
226
  };
222
227
  }
223
228
  exports.createInputSystem = createInputSystem;
@@ -1,9 +1,9 @@
1
1
  export * from './engine';
2
2
  export * from './schemas';
3
- export * from './runtime/globals';
4
3
  export * from './runtime/initialization';
5
4
  export * from './runtime/types';
6
5
  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';
package/dist-cjs/index.js CHANGED
@@ -30,10 +30,10 @@ exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports
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);
34
33
  __exportStar(require("./runtime/initialization"), exports);
35
34
  __exportStar(require("./runtime/types"), exports);
36
35
  __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);
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Internal utilities for standardized globalThis access.
2
+ * Utilities for standardized globalThis access.
3
+ * @public
3
4
  */
4
5
  /**
5
6
  * Type-safe globalThis property access.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  /**
3
- * Internal utilities for standardized globalThis access.
3
+ * Utilities for standardized globalThis access.
4
+ * @public
4
5
  */
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
7
  exports.setGlobalPolyfill = exports.getGlobal = void 0;
@@ -18,6 +18,12 @@ export type EventSystemOptions = {
18
18
  showHighlight?: boolean;
19
19
  maxPlayerDistance?: number;
20
20
  };
21
+ /**
22
+ * @public
23
+ */
24
+ export type EventSystemOptionsCallback = EventSystemOptions & {
25
+ cb: EventSystemCallback;
26
+ };
21
27
  export declare const getDefaultOpts: (opts?: Partial<EventSystemOptions>) => EventSystemOptions;
22
28
  /**
23
29
  * @public
@@ -47,11 +53,37 @@ export interface PointerEventsSystem {
47
53
  * @param entity - Entity where the callback was attached
48
54
  */
49
55
  removeOnPointerHoverLeave(entity: Entity): void;
56
+ /**
57
+ * @public
58
+ * Remove the callback for onPointerDrag event
59
+ * @param entity - Entity where the callback was attached
60
+ */
61
+ removeOnPointerDrag(entity: Entity): void;
62
+ /**
63
+ * @public
64
+ * Remove the callback for onPointerDragLocked event
65
+ * @param entity - Entity where the callback was attached
66
+ */
67
+ removeOnPointerDragLocked(entity: Entity): void;
68
+ /**
69
+ * @public
70
+ * Remove the callback for onPointerDragEnd event
71
+ * @param entity - Entity where the callback was attached
72
+ */
73
+ removeOnPointerDragEnd(entity: Entity): void;
74
+ /**
75
+ * @public
76
+ * Execute callbacks when the user presses one of the InputButtons pointing at the entity
77
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
78
+ */
79
+ onPointerDown(pointerData: {
80
+ entity: Entity;
81
+ optsList: EventSystemOptionsCallback[];
82
+ }): void;
50
83
  /**
51
84
  * @public
52
85
  * Execute callback when the user press the InputButton pointing at the entity
53
86
  * @param pointerData - Entity to attach the callback, Opts to trigger Feedback and Button
54
- * @param cb - Function to execute when click fires
55
87
  */
56
88
  onPointerDown(pointerData: {
57
89
  entity: Entity;
@@ -64,6 +96,15 @@ export interface PointerEventsSystem {
64
96
  * @param opts - Opts to trigger Feedback and Button
65
97
  */
66
98
  onPointerDown(entity: Entity, cb: EventSystemCallback, opts?: Partial<EventSystemOptions>): void;
99
+ /**
100
+ * @public
101
+ * Execute callbacks when the user releases one of the InputButtons pointing at the entity
102
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
103
+ */
104
+ onPointerUp(pointerData: {
105
+ entity: Entity;
106
+ optsList: EventSystemOptionsCallback[];
107
+ }): void;
67
108
  /**
68
109
  * @public
69
110
  * Execute callback when the user releases the InputButton pointing at the entity
@@ -101,6 +142,64 @@ export interface PointerEventsSystem {
101
142
  entity: Entity;
102
143
  opts?: Partial<EventSystemOptions>;
103
144
  }, cb: EventSystemCallback): void;
145
+ /**
146
+ * @public
147
+ * Execute callbacks when the user drags the pointer from inside the entity
148
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
149
+ */
150
+ onPointerDrag(pointerData: {
151
+ entity: Entity;
152
+ optsList: EventSystemOptionsCallback[];
153
+ }): void;
154
+ /**
155
+ * @public
156
+ * Execute callback when the user clicks and drags the pointer from inside the entity
157
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
158
+ * @param cb - Function to execute when click fires
159
+ */
160
+ onPointerDrag(pointerData: {
161
+ entity: Entity;
162
+ opts?: Partial<EventSystemOptions>;
163
+ }, cb: EventSystemCallback): void;
164
+ /**
165
+ * @public
166
+ * Execute callbacks when the user drags the pointer from inside the entity, locking the cursor in place.
167
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
168
+ */
169
+ onPointerDragLocked(pointerData: {
170
+ entity: Entity;
171
+ optsList: EventSystemOptionsCallback[];
172
+ }): void;
173
+ /**
174
+ * @public
175
+ * Execute callback when the user clicks and drags the pointer from inside the entity,
176
+ * locking the cursor in place
177
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
178
+ * @param cb - Function to execute when click fires
179
+ */
180
+ onPointerDragLocked(pointerData: {
181
+ entity: Entity;
182
+ opts?: Partial<EventSystemOptions>;
183
+ }, cb: EventSystemCallback): void;
184
+ /**
185
+ * @public
186
+ * Execute callbacks when the user releases a button after a drag
187
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
188
+ */
189
+ onPointerDragEnd(pointerData: {
190
+ entity: Entity;
191
+ optsList: EventSystemOptionsCallback[];
192
+ }): void;
193
+ /**
194
+ * @public
195
+ * Execute callback when the user releases the button after a drag
196
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
197
+ * @param cb - Function to execute when click fires
198
+ */
199
+ onPointerDragEnd(pointerData: {
200
+ entity: Entity;
201
+ opts?: Partial<EventSystemOptions>;
202
+ }, cb: EventSystemCallback): void;
104
203
  }
105
204
  /**
106
205
  * @public
@@ -45,6 +45,9 @@ function createPointerEventsSystem(engine, inputSystem) {
45
45
  EventType[EventType["Up"] = 2] = "Up";
46
46
  EventType[EventType["HoverEnter"] = 3] = "HoverEnter";
47
47
  EventType[EventType["HoverLeave"] = 4] = "HoverLeave";
48
+ EventType[EventType["Drag"] = 5] = "Drag";
49
+ EventType[EventType["DragLocked"] = 6] = "DragLocked";
50
+ EventType[EventType["DragEnd"] = 7] = "DragEnd";
48
51
  })(EventType || (EventType = {}));
49
52
  const eventsMap = new Map();
50
53
  function getEvent(entity) {
@@ -80,77 +83,148 @@ function createPointerEventsSystem(engine, inputSystem) {
80
83
  else if (eventType === EventType.HoverEnter) {
81
84
  return 2 /* PointerEventType.PET_HOVER_ENTER */;
82
85
  }
86
+ else if (eventType === EventType.Drag) {
87
+ return 5 /* PointerEventType.PET_DRAG */;
88
+ }
89
+ else if (eventType === EventType.DragLocked) {
90
+ return 4 /* PointerEventType.PET_DRAG_LOCKED */;
91
+ }
92
+ else if (eventType === EventType.DragEnd) {
93
+ return 6 /* PointerEventType.PET_DRAG_END */;
94
+ }
83
95
  return 1 /* PointerEventType.PET_DOWN */;
84
96
  }
97
+ function getEventType(pet) {
98
+ if (pet === 0 /* PointerEventType.PET_UP */) {
99
+ return EventType.Up;
100
+ }
101
+ else if (pet === 2 /* PointerEventType.PET_HOVER_ENTER */) {
102
+ return EventType.HoverEnter;
103
+ }
104
+ else if (pet === 3 /* PointerEventType.PET_HOVER_LEAVE */) {
105
+ return EventType.HoverLeave;
106
+ }
107
+ else if (pet === 5 /* PointerEventType.PET_DRAG */) {
108
+ return EventType.Drag;
109
+ }
110
+ else if (pet === 4 /* PointerEventType.PET_DRAG_LOCKED */) {
111
+ return EventType.DragLocked;
112
+ }
113
+ else if (pet === 6 /* PointerEventType.PET_DRAG_END */) {
114
+ return EventType.DragEnd;
115
+ }
116
+ else {
117
+ return EventType.Down;
118
+ }
119
+ }
85
120
  function removeEvent(entity, type) {
86
121
  const event = getEvent(entity);
87
- const pointerEvent = event.get(type);
88
- if (pointerEvent?.opts.hoverText) {
89
- removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts.button);
122
+ const pointerEventList = event.get(type);
123
+ if (pointerEventList === undefined) {
124
+ return;
125
+ }
126
+ for (const button of pointerEventList.keys()) {
127
+ removePointerEvent(entity, getPointerEvent(type), button);
90
128
  }
91
129
  event.delete(type);
92
130
  }
93
131
  engine.addSystem(function EventSystem() {
94
- for (const [entity, event] of eventsMap) {
132
+ if (eventsMap.size === 0) {
133
+ return;
134
+ }
135
+ for (const entity of eventsMap.keys()) {
95
136
  if (engine.getEntityState(entity) === entity_1.EntityState.Removed) {
96
137
  eventsMap.delete(entity);
138
+ }
139
+ }
140
+ for (const command of inputSystem.getInputCommands()) {
141
+ const entity = command.hit?.entityId;
142
+ if (entity === undefined) {
143
+ continue;
144
+ }
145
+ const entityMap = eventsMap.get(entity);
146
+ if (entityMap === undefined) {
97
147
  continue;
98
148
  }
99
- for (const [eventType, { cb, opts }] of event) {
100
- if (eventType === EventType.Click) {
101
- const command = inputSystem.getClick(opts.button, entity);
102
- if (command)
103
- (0, invariant_1.checkNotThenable)(cb(command.up), 'Click event returned a thenable. Only synchronous functions are allowed');
149
+ const typeMap = entityMap.get(getEventType(command.state));
150
+ if (typeMap) {
151
+ const data = typeMap.get(command.button);
152
+ if (data) {
153
+ (0, invariant_1.checkNotThenable)(data.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
104
154
  }
105
- if (eventType === EventType.Down ||
106
- eventType === EventType.Up ||
107
- eventType === EventType.HoverEnter ||
108
- eventType === EventType.HoverLeave) {
109
- const command = inputSystem.getInputCommand(opts.button, getPointerEvent(eventType), entity);
110
- if (command) {
111
- (0, invariant_1.checkNotThenable)(cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
155
+ const anyData = typeMap.get(3 /* InputAction.IA_ANY */);
156
+ if (anyData) {
157
+ (0, invariant_1.checkNotThenable)(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
158
+ }
159
+ }
160
+ // check clicks separately
161
+ if (command.state === 0 /* PointerEventType.PET_UP */) {
162
+ const clickMap = entityMap.get(EventType.Click);
163
+ if (clickMap) {
164
+ const data = clickMap.get(command.button);
165
+ if (data && inputSystem.getClick(command.button, entity)) {
166
+ (0, invariant_1.checkNotThenable)(data.cb(command), 'Click event returned a thenable. Only synchronous functions are allowed');
167
+ }
168
+ const anyData = clickMap.get(3 /* InputAction.IA_ANY */);
169
+ if (anyData && inputSystem.getClick(command.button, entity)) {
170
+ (0, invariant_1.checkNotThenable)(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
112
171
  }
113
172
  }
114
173
  }
115
174
  }
116
175
  });
117
- const onPointerDown = (...args) => {
118
- const [data, cb, maybeOpts] = args;
119
- if (typeof data === 'number') {
120
- return onPointerDown({ entity: data, opts: maybeOpts ?? {} }, cb);
121
- }
122
- const { entity, opts } = data;
123
- const options = (0, exports.getDefaultOpts)(opts);
124
- removeEvent(entity, EventType.Down);
125
- getEvent(entity).set(EventType.Down, { cb, opts: options });
126
- setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
127
- };
128
- const onPointerUp = (...args) => {
129
- const [data, cb, maybeOpts] = args;
130
- if (typeof data === 'number') {
131
- return onPointerUp({ entity: data, opts: maybeOpts ?? {} }, cb);
132
- }
133
- const { entity, opts } = data;
134
- const options = (0, exports.getDefaultOpts)(opts);
135
- removeEvent(entity, EventType.Up);
136
- getEvent(entity).set(EventType.Up, { cb, opts: options });
137
- setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options);
138
- };
139
- const onPointerHoverEnter = (...args) => {
140
- const [data, cb] = args;
141
- const { entity, opts } = data;
142
- const options = (0, exports.getDefaultOpts)(opts);
143
- removeEvent(entity, EventType.HoverEnter);
144
- getEvent(entity).set(EventType.HoverEnter, { cb, opts: options });
145
- setPointerEvent(entity, 2 /* PointerEventType.PET_HOVER_ENTER */, options);
146
- };
147
- const onPointerHoverLeave = (...args) => {
148
- const [data, cb] = args;
149
- const { entity, opts } = data;
150
- const options = (0, exports.getDefaultOpts)(opts);
151
- removeEvent(entity, EventType.HoverLeave);
152
- getEvent(entity).set(EventType.HoverLeave, { cb, opts: options });
153
- setPointerEvent(entity, 3 /* PointerEventType.PET_HOVER_LEAVE */, options);
176
+ // return a function with the correct event type.
177
+ // we use onPointerDown as the "archetype" for the returned function, but it fits with
178
+ // all the onPointer* declarations
179
+ const onPointerFunction = (ty) => {
180
+ return (arg0, arg1, arg2) => {
181
+ let entity;
182
+ let optsList;
183
+ if (typeof arg0 === 'number') {
184
+ // called as onPointerDown(entity: Entity, cb: EventSystemCallback, opts?: Partial<EventSystemOptions>): void
185
+ entity = arg0;
186
+ const cb = arg1;
187
+ const opts = arg2;
188
+ optsList = [{ cb, ...(0, exports.getDefaultOpts)(opts) }];
189
+ }
190
+ else if (typeof arg1 === 'function') {
191
+ // called as onPointerDown(pointerData: { entity: Entity; opts?: Partial<EventSystemOptions> }, cb: EventSystemCallback): void
192
+ const { entity: e, opts } = arg0;
193
+ const cb = arg1;
194
+ entity = e;
195
+ optsList = [{ cb, ...(0, exports.getDefaultOpts)(opts) }];
196
+ }
197
+ else {
198
+ // called as onPointerDown(pointerData: { entity: Entity; optsList: EventSystemOptionsCallback[] }): void
199
+ const { entity: e, optsList: o } = arg0;
200
+ entity = e;
201
+ optsList = o;
202
+ }
203
+ const previous = getEvent(entity).get(ty) ?? new Map();
204
+ const callbacks = new Map();
205
+ for (const opts of optsList) {
206
+ const prevOpts = previous.get(opts.button);
207
+ if (prevOpts !== undefined) {
208
+ if (prevOpts.hoverText !== opts.hoverText ||
209
+ prevOpts.maxDistance !== opts.maxDistance ||
210
+ prevOpts.showFeedback !== opts.showFeedback ||
211
+ prevOpts.showHighlight !== opts.showHighlight) {
212
+ removePointerEvent(entity, getPointerEvent(ty), opts.button);
213
+ setPointerEvent(entity, getPointerEvent(ty), opts);
214
+ }
215
+ }
216
+ else {
217
+ setPointerEvent(entity, getPointerEvent(ty), opts);
218
+ }
219
+ callbacks.set(opts.button, opts);
220
+ }
221
+ for (const button of previous.keys()) {
222
+ if (!callbacks.has(button)) {
223
+ removePointerEvent(entity, getPointerEvent(ty), button);
224
+ }
225
+ }
226
+ getEvent(entity).set(ty, callbacks);
227
+ };
154
228
  };
155
229
  return {
156
230
  removeOnClick(entity) {
@@ -168,19 +242,23 @@ function createPointerEventsSystem(engine, inputSystem) {
168
242
  removeOnPointerHoverLeave(entity) {
169
243
  removeEvent(entity, EventType.HoverLeave);
170
244
  },
171
- onClick(value, cb) {
172
- const { entity } = value;
173
- const options = (0, exports.getDefaultOpts)(value.opts);
174
- // Clear previous event with over feedback included
175
- removeEvent(entity, EventType.Click);
176
- // Set new event
177
- getEvent(entity).set(EventType.Click, { cb, opts: options });
178
- setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
245
+ removeOnPointerDrag(entity) {
246
+ removeEvent(entity, EventType.Drag);
247
+ },
248
+ removeOnPointerDragLocked(entity) {
249
+ removeEvent(entity, EventType.DragLocked);
250
+ },
251
+ removeOnPointerDragEnd(entity) {
252
+ removeEvent(entity, EventType.DragEnd);
179
253
  },
180
- onPointerDown,
181
- onPointerUp,
182
- onPointerHoverEnter,
183
- onPointerHoverLeave
254
+ onClick: onPointerFunction(EventType.Click),
255
+ onPointerDown: onPointerFunction(EventType.Down),
256
+ onPointerUp: onPointerFunction(EventType.Up),
257
+ onPointerHoverEnter: onPointerFunction(EventType.HoverEnter),
258
+ onPointerHoverLeave: onPointerFunction(EventType.HoverLeave),
259
+ onPointerDrag: onPointerFunction(EventType.Drag),
260
+ onPointerDragLocked: onPointerFunction(EventType.DragLocked),
261
+ onPointerDragEnd: onPointerFunction(EventType.DragEnd)
184
262
  };
185
263
  }
186
264
  exports.createPointerEventsSystem = createPointerEventsSystem;
@@ -1,4 +1,4 @@
1
- import { RaycastQueryType, PBRaycastResult } from '../components';
1
+ import { RaycastQueryType, RaycastShape, PBRaycastResult } from '../components';
2
2
  import { DeepReadonlyObject, Entity } from '../engine';
3
3
  import { Vector3 } from '../components/generated/pb/decentraland/common/vectors.gen';
4
4
  /**
@@ -14,6 +14,8 @@ export type RaycastSystemOptions = {
14
14
  queryType: RaycastQueryType;
15
15
  continuous?: boolean | undefined;
16
16
  collisionMask?: number | undefined;
17
+ shape?: RaycastShape | undefined;
18
+ includeWorld?: boolean | undefined;
17
19
  };
18
20
  export type LocalDirectionRaycastSystemOptions = {
19
21
  direction?: Vector3;
@@ -84,6 +84,8 @@ function createRaycastSystem(engine) {
84
84
  raycast.direction = raycastValue.directionRawValue;
85
85
  raycast.continuous = raycastValue.continuous;
86
86
  raycast.queryType = raycastValue.queryType;
87
+ raycast.shape = raycastValue.shape;
88
+ raycast.includeWorld = raycastValue.includeWorld;
87
89
  entitiesCallbackResultMap.set(entity, { callback: callback });
88
90
  };
89
91
  nextTickRaycasts.push(onNextTick);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dcl/ecs",
3
3
  "description": "Decentraland ECS",
4
- "version": "7.21.0",
4
+ "version": "7.21.1-22917715332.commit-e5d969d",
5
5
  "author": "DCL",
6
6
  "bugs": "https://github.com/decentraland/ecs/issues",
7
7
  "files": [
@@ -33,5 +33,5 @@
33
33
  },
34
34
  "types": "./dist/index.d.ts",
35
35
  "typings": "./dist/index.d.ts",
36
- "commit": "9d0cc3ae3ae3f717a56275731d6bc478bc48fb67"
36
+ "commit": "e5d969d47daa6e79cf98ba55511df69ab974cc6a"
37
37
  }
@@ -1,25 +0,0 @@
1
- import { PBPhysicsCombinedForce } from './pb/decentraland/sdk/components/physics_combined_force.gen';
2
- /**
3
- * @internal
4
- */
5
- export const PhysicsCombinedForceSchema = {
6
- COMPONENT_ID: 1216,
7
- serialize(value, builder) {
8
- const writer = PBPhysicsCombinedForce.encode(value);
9
- const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
- builder.writeBuffer(buffer, false);
11
- },
12
- deserialize(reader) {
13
- return PBPhysicsCombinedForce.decode(reader.buffer(), reader.remainingBytes());
14
- },
15
- create() {
16
- // TODO: this is a hack.
17
- return PBPhysicsCombinedForce.decode(new Uint8Array());
18
- },
19
- jsonSchema: {
20
- type: "object",
21
- properties: {},
22
- serializationType: "protocol-buffer",
23
- protocolBuffer: "PBPhysicsCombinedForce"
24
- }
25
- };
@@ -1,25 +0,0 @@
1
- import { PBPhysicsCombinedImpulse } from './pb/decentraland/sdk/components/physics_combined_impulse.gen';
2
- /**
3
- * @internal
4
- */
5
- export const PhysicsCombinedImpulseSchema = {
6
- COMPONENT_ID: 1215,
7
- serialize(value, builder) {
8
- const writer = PBPhysicsCombinedImpulse.encode(value);
9
- const buffer = new Uint8Array(writer.finish(), 0, writer.len);
10
- builder.writeBuffer(buffer, false);
11
- },
12
- deserialize(reader) {
13
- return PBPhysicsCombinedImpulse.decode(reader.buffer(), reader.remainingBytes());
14
- },
15
- create() {
16
- // TODO: this is a hack.
17
- return PBPhysicsCombinedImpulse.decode(new Uint8Array());
18
- },
19
- jsonSchema: {
20
- type: "object",
21
- properties: {},
22
- serializationType: "protocol-buffer",
23
- protocolBuffer: "PBPhysicsCombinedImpulse"
24
- }
25
- };
@@ -1,25 +0,0 @@
1
- import _m0 from "protobufjs/minimal";
2
- import { Vector3 } from "../../common/vectors.gen";
3
- /**
4
- * This component applies a continuous physics force.
5
- *
6
- * @remarks Low-level component. Use Physics.applyForceToPlayer()/.removeForceToPlayer() instead.
7
- * Direct manipulation will conflict with the force accumulation registry.
8
- * Summary component: stores the accumulated result of all active forces registered by the scene in the current frame.
9
- *
10
- * State-like component: the force is applied every physics tick while the component is present on the entity.
11
- */
12
- /**
13
- * @public
14
- */
15
- export interface PBPhysicsCombinedForce {
16
- /** Includes force direction and magnitude */
17
- vector: Vector3 | undefined;
18
- }
19
- /**
20
- * @public
21
- */
22
- export declare namespace PBPhysicsCombinedForce {
23
- function encode(message: PBPhysicsCombinedForce, writer?: _m0.Writer): _m0.Writer;
24
- function decode(input: _m0.Reader | Uint8Array, length?: number): PBPhysicsCombinedForce;
25
- }
@@ -1,28 +0,0 @@
1
- import _m0 from "protobufjs/minimal";
2
- import { Vector3 } from "../../common/vectors.gen";
3
- /**
4
- * This component applies a one-shot physics summary impulse.
5
- *
6
- * @remarks Low-level component. Use Physics.applyImpulseToPlayer() instead.
7
- * Direct manipulation will conflict with the force accumulation registry.
8
- * Summary component: stores the accumulated result of all impulses registered by the scene in the current frame.
9
- *
10
- * Event-like component: each new impulse must increment the eventID to ensure delivery via CRDT, even if the direction is identical to the previous one.
11
- * Renderer processes impulse with the unique ID only once. Increase eventID of the component to apply another impulse.
12
- */
13
- /**
14
- * @public
15
- */
16
- export interface PBPhysicsCombinedImpulse {
17
- /** Includes impulse direction and magnitude */
18
- vector: Vector3 | undefined;
19
- /** Monotonic counter to distinguish different impulses. */
20
- eventId: number;
21
- }
22
- /**
23
- * @public
24
- */
25
- export declare namespace PBPhysicsCombinedImpulse {
26
- function encode(message: PBPhysicsCombinedImpulse, writer?: _m0.Writer): _m0.Writer;
27
- function decode(input: _m0.Reader | Uint8Array, length?: number): PBPhysicsCombinedImpulse;
28
- }