@dcl/ecs 7.20.4-22578241217.commit-fd0f1f3 → 7.20.4-22621752364.commit-d72981b

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 (215) hide show
  1. package/dist/components/extended/AudioAnalysis.d.ts +55 -0
  2. package/dist/components/extended/AudioAnalysis.js +66 -0
  3. package/dist/components/extended/MeshCollider.d.ts +0 -8
  4. package/dist/components/extended/MeshCollider.js +0 -6
  5. package/dist/components/extended/MeshRenderer.d.ts +0 -8
  6. package/dist/components/extended/MeshRenderer.js +0 -5
  7. package/dist/components/extended/Tween.d.ts +90 -0
  8. package/dist/components/extended/Tween.js +152 -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 +9 -3
  28. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +10 -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/pointer_events.gen.d.ts +5 -1
  38. package/dist/components/generated/pb/decentraland/sdk/components/pointer_events.gen.js +20 -1
  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/tween.gen.d.ts +40 -0
  44. package/dist/components/generated/pb/decentraland/sdk/components/tween.gen.js +176 -0
  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/pb/decentraland/sdk/components/virtual_camera.gen.d.ts +3 -0
  50. package/dist/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.js +10 -1
  51. package/dist/components/index.d.ts +11 -11
  52. package/dist/components/index.js +8 -11
  53. package/dist/components/types.d.ts +2 -3
  54. package/dist/engine/grow-only-value-set-component-definition.js +1 -1
  55. package/dist/engine/input.d.ts +0 -6
  56. package/dist/engine/input.js +4 -9
  57. package/dist/index.d.ts +2 -2
  58. package/dist/index.js +1 -1
  59. package/dist/runtime/globals.d.ts +2 -12
  60. package/dist/runtime/globals.js +3 -4
  61. package/dist/systems/events.d.ts +25 -59
  62. package/dist/systems/events.js +129 -145
  63. package/dist/systems/raycast.d.ts +1 -3
  64. package/dist/systems/raycast.js +0 -2
  65. package/dist-cjs/components/extended/AudioAnalysis.d.ts +55 -0
  66. package/dist-cjs/components/extended/AudioAnalysis.js +70 -0
  67. package/dist-cjs/components/extended/MeshCollider.d.ts +0 -8
  68. package/dist-cjs/components/extended/MeshCollider.js +0 -6
  69. package/dist-cjs/components/extended/MeshRenderer.d.ts +0 -8
  70. package/dist-cjs/components/extended/MeshRenderer.js +0 -5
  71. package/dist-cjs/components/extended/Tween.d.ts +90 -0
  72. package/dist-cjs/components/extended/Tween.js +152 -0
  73. package/dist-cjs/components/generated/{TextureCamera.gen.js → AudioAnalysis.gen.js} +8 -8
  74. package/dist-cjs/components/generated/component-names.gen.js +1 -10
  75. package/dist-cjs/components/generated/global.gen.d.ts +2 -20
  76. package/dist-cjs/components/generated/global.gen.js +2 -12
  77. package/dist-cjs/components/generated/index.gen.d.ts +4 -40
  78. package/dist-cjs/components/generated/index.gen.js +8 -62
  79. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
  80. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +1 -66
  81. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
  82. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +167 -0
  83. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
  84. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
  85. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +0 -43
  86. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +2 -152
  87. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
  88. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
  89. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
  90. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +2 -120
  91. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +9 -3
  92. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +11 -4
  93. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
  94. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
  95. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
  96. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +2 -58
  97. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +0 -20
  98. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +1 -57
  99. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
  100. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +1 -57
  101. package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events.gen.d.ts +5 -1
  102. package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events.gen.js +20 -1
  103. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
  104. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
  105. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +0 -13
  106. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +1 -31
  107. package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween.gen.d.ts +40 -0
  108. package/dist-cjs/components/generated/pb/decentraland/sdk/components/tween.gen.js +177 -1
  109. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
  110. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
  111. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
  112. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +1 -91
  113. package/dist-cjs/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.d.ts +3 -0
  114. package/dist-cjs/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.js +10 -1
  115. package/dist-cjs/components/index.d.ts +11 -11
  116. package/dist-cjs/components/index.js +11 -15
  117. package/dist-cjs/components/types.d.ts +2 -3
  118. package/dist-cjs/engine/grow-only-value-set-component-definition.js +1 -1
  119. package/dist-cjs/engine/input.d.ts +0 -6
  120. package/dist-cjs/engine/input.js +4 -9
  121. package/dist-cjs/index.d.ts +2 -2
  122. package/dist-cjs/index.js +2 -2
  123. package/dist-cjs/runtime/globals.d.ts +2 -12
  124. package/dist-cjs/runtime/globals.js +3 -4
  125. package/dist-cjs/systems/events.d.ts +25 -59
  126. package/dist-cjs/systems/events.js +129 -145
  127. package/dist-cjs/systems/raycast.d.ts +1 -3
  128. package/dist-cjs/systems/raycast.js +0 -2
  129. package/package.json +2 -2
  130. package/dist/components/extended/AvatarEquippedData.d.ts +0 -10
  131. package/dist/components/extended/AvatarEquippedData.js +0 -15
  132. package/dist/components/extended/AvatarShape.d.ts +0 -10
  133. package/dist/components/extended/AvatarShape.js +0 -15
  134. package/dist/components/generated/AvatarMovement.gen.d.ts +0 -1
  135. package/dist/components/generated/AvatarMovement.gen.js +0 -25
  136. package/dist/components/generated/AvatarMovementInfo.gen.d.ts +0 -1
  137. package/dist/components/generated/AvatarMovementInfo.gen.js +0 -25
  138. package/dist/components/generated/CameraLayer.gen.d.ts +0 -1
  139. package/dist/components/generated/CameraLayer.gen.js +0 -25
  140. package/dist/components/generated/CameraLayers.gen.d.ts +0 -1
  141. package/dist/components/generated/CameraLayers.gen.js +0 -25
  142. package/dist/components/generated/GlobalLight.gen.d.ts +0 -1
  143. package/dist/components/generated/GlobalLight.gen.js +0 -25
  144. package/dist/components/generated/GltfNode.gen.d.ts +0 -1
  145. package/dist/components/generated/GltfNode.gen.js +0 -25
  146. package/dist/components/generated/GltfNodeState.gen.d.ts +0 -1
  147. package/dist/components/generated/GltfNodeState.gen.js +0 -25
  148. package/dist/components/generated/TextureCamera.gen.d.ts +0 -1
  149. package/dist/components/generated/UiCanvas.gen.d.ts +0 -1
  150. package/dist/components/generated/UiCanvas.gen.js +0 -25
  151. package/dist/components/generated/UiScrollResult.gen.d.ts +0 -1
  152. package/dist/components/generated/UiScrollResult.gen.js +0 -25
  153. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +0 -18
  154. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +0 -60
  155. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +0 -28
  156. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +0 -106
  157. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
  158. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -104
  159. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
  160. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -50
  161. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
  162. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -61
  163. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
  164. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -41
  165. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
  166. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -59
  167. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
  168. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -191
  169. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
  170. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -60
  171. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
  172. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -42
  173. package/dist-cjs/components/extended/AvatarEquippedData.d.ts +0 -10
  174. package/dist-cjs/components/extended/AvatarEquippedData.js +0 -19
  175. package/dist-cjs/components/extended/AvatarShape.d.ts +0 -10
  176. package/dist-cjs/components/extended/AvatarShape.js +0 -19
  177. package/dist-cjs/components/generated/AvatarMovement.gen.js +0 -28
  178. package/dist-cjs/components/generated/AvatarMovementInfo.gen.js +0 -28
  179. package/dist-cjs/components/generated/CameraLayer.gen.d.ts +0 -1
  180. package/dist-cjs/components/generated/CameraLayer.gen.js +0 -28
  181. package/dist-cjs/components/generated/CameraLayers.gen.d.ts +0 -1
  182. package/dist-cjs/components/generated/CameraLayers.gen.js +0 -28
  183. package/dist-cjs/components/generated/GlobalLight.gen.d.ts +0 -1
  184. package/dist-cjs/components/generated/GlobalLight.gen.js +0 -28
  185. package/dist-cjs/components/generated/GltfNode.gen.d.ts +0 -1
  186. package/dist-cjs/components/generated/GltfNode.gen.js +0 -28
  187. package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +0 -1
  188. package/dist-cjs/components/generated/GltfNodeState.gen.js +0 -28
  189. package/dist-cjs/components/generated/TextureCamera.gen.d.ts +0 -1
  190. package/dist-cjs/components/generated/UiCanvas.gen.d.ts +0 -1
  191. package/dist-cjs/components/generated/UiCanvas.gen.js +0 -28
  192. package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +0 -1
  193. package/dist-cjs/components/generated/UiScrollResult.gen.js +0 -28
  194. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +0 -18
  195. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +0 -66
  196. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +0 -28
  197. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +0 -112
  198. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
  199. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -110
  200. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
  201. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -56
  202. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
  203. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -67
  204. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
  205. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -47
  206. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
  207. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -65
  208. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
  209. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -197
  210. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
  211. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -66
  212. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
  213. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -48
  214. /package/{dist-cjs/components/generated/AvatarMovementInfo.gen.d.ts → dist/components/generated/AudioAnalysis.gen.d.ts} +0 -0
  215. /package/dist-cjs/components/generated/{AvatarMovement.gen.d.ts → AudioAnalysis.gen.d.ts} +0 -0
@@ -18,15 +18,14 @@ export function createPointerEventsSystem(engine, inputSystem) {
18
18
  EventType[EventType["Up"] = 2] = "Up";
19
19
  EventType[EventType["HoverEnter"] = 3] = "HoverEnter";
20
20
  EventType[EventType["HoverLeave"] = 4] = "HoverLeave";
21
- EventType[EventType["Drag"] = 5] = "Drag";
22
- EventType[EventType["DragLocked"] = 6] = "DragLocked";
23
- EventType[EventType["DragEnd"] = 7] = "DragEnd";
21
+ EventType[EventType["ProximityEnter"] = 5] = "ProximityEnter";
22
+ EventType[EventType["ProximityLeave"] = 6] = "ProximityLeave";
24
23
  })(EventType || (EventType = {}));
25
24
  const eventsMap = new Map();
26
25
  function getEvent(entity) {
27
26
  return eventsMap.get(entity) || eventsMap.set(entity, new Map()).get(entity);
28
27
  }
29
- function setPointerEvent(entity, type, opts) {
28
+ function setPointerEvent(entity, type, opts, interactionType = 0 /* InteractionType.CURSOR */) {
30
29
  const pointerEvent = PointerEvents.getMutableOrNull(entity) || PointerEvents.create(entity);
31
30
  pointerEvent.pointerEvents.push({
32
31
  eventType: type,
@@ -36,15 +35,19 @@ export function createPointerEventsSystem(engine, inputSystem) {
36
35
  showHighlight: opts.showHighlight,
37
36
  hoverText: opts.hoverText,
38
37
  maxDistance: opts.maxDistance,
39
- maxPlayerDistance: opts.maxPlayerDistance
40
- }
38
+ maxPlayerDistance: opts.maxPlayerDistance,
39
+ priority: opts.priority
40
+ },
41
+ interactionType: interactionType ?? 0 /* InteractionType.CURSOR */
41
42
  });
42
43
  }
43
- function removePointerEvent(entity, type, button) {
44
+ function removePointerEvent(entity, type, button, interactionType = 0 /* InteractionType.CURSOR */) {
44
45
  const pointerEvent = PointerEvents.getMutableOrNull(entity);
45
46
  if (!pointerEvent)
46
47
  return;
47
- pointerEvent.pointerEvents = pointerEvent.pointerEvents.filter((pointer) => !(pointer.eventInfo?.button === button && pointer.eventType === type));
48
+ pointerEvent.pointerEvents = pointerEvent.pointerEvents.filter((pointer) => !(pointer.eventInfo?.button === button &&
49
+ pointer.eventType === type &&
50
+ pointer.interactionType === interactionType));
48
51
  }
49
52
  function getPointerEvent(eventType) {
50
53
  if (eventType === EventType.Up) {
@@ -56,148 +59,117 @@ export function createPointerEventsSystem(engine, inputSystem) {
56
59
  else if (eventType === EventType.HoverEnter) {
57
60
  return 2 /* PointerEventType.PET_HOVER_ENTER */;
58
61
  }
59
- else if (eventType === EventType.Drag) {
60
- return 5 /* PointerEventType.PET_DRAG */;
61
- }
62
- else if (eventType === EventType.DragLocked) {
63
- return 4 /* PointerEventType.PET_DRAG_LOCKED */;
62
+ else if (eventType === EventType.ProximityEnter) {
63
+ return 4 /* PointerEventType.PET_PROXIMITY_ENTER */;
64
64
  }
65
- else if (eventType === EventType.DragEnd) {
66
- return 6 /* PointerEventType.PET_DRAG_END */;
65
+ else if (eventType === EventType.ProximityLeave) {
66
+ return 5 /* PointerEventType.PET_PROXIMITY_LEAVE */;
67
67
  }
68
68
  return 1 /* PointerEventType.PET_DOWN */;
69
69
  }
70
- function getEventType(pet) {
71
- if (pet === 0 /* PointerEventType.PET_UP */) {
72
- return EventType.Up;
73
- }
74
- else if (pet === 2 /* PointerEventType.PET_HOVER_ENTER */) {
75
- return EventType.HoverEnter;
76
- }
77
- else if (pet === 3 /* PointerEventType.PET_HOVER_LEAVE */) {
78
- return EventType.HoverLeave;
79
- }
80
- else if (pet === 5 /* PointerEventType.PET_DRAG */) {
81
- return EventType.Drag;
82
- }
83
- else if (pet === 4 /* PointerEventType.PET_DRAG_LOCKED */) {
84
- return EventType.DragLocked;
85
- }
86
- else if (pet === 6 /* PointerEventType.PET_DRAG_END */) {
87
- return EventType.DragEnd;
88
- }
89
- else {
90
- return EventType.Down;
91
- }
92
- }
93
- function removeEvent(entity, type) {
70
+ function removeEvent(entity, type, interactionType = 0 /* InteractionType.CURSOR */) {
94
71
  const event = getEvent(entity);
95
- const pointerEventList = event.get(type);
96
- if (pointerEventList === undefined) {
97
- return;
98
- }
99
- for (const button of pointerEventList.keys()) {
100
- removePointerEvent(entity, getPointerEvent(type), button);
72
+ const pointerEvent = event.get(type);
73
+ if (pointerEvent?.opts.hoverText) {
74
+ removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts.button);
101
75
  }
102
76
  event.delete(type);
103
77
  }
104
78
  engine.addSystem(function EventSystem() {
105
- if (eventsMap.size === 0) {
106
- return;
107
- }
108
- for (const entity of eventsMap.keys()) {
79
+ for (const [entity, event] of eventsMap) {
109
80
  if (engine.getEntityState(entity) === EntityState.Removed) {
110
81
  eventsMap.delete(entity);
111
- }
112
- }
113
- for (const command of inputSystem.getInputCommands()) {
114
- const entity = command.hit?.entityId;
115
- if (entity === undefined) {
116
- continue;
117
- }
118
- const entityMap = eventsMap.get(entity);
119
- if (entityMap === undefined) {
120
82
  continue;
121
83
  }
122
- const typeMap = entityMap.get(getEventType(command.state));
123
- if (typeMap) {
124
- const data = typeMap.get(command.button);
125
- if (data) {
126
- checkNotThenable(data.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
84
+ for (const [eventType, { cb, opts }] of event) {
85
+ if (eventType === EventType.Click) {
86
+ const command = inputSystem.getClick(opts.button, entity);
87
+ if (command)
88
+ checkNotThenable(cb(command.up), 'Click event returned a thenable. Only synchronous functions are allowed');
127
89
  }
128
- const anyData = typeMap.get(3 /* InputAction.IA_ANY */);
129
- if (anyData) {
130
- checkNotThenable(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
131
- }
132
- }
133
- // check clicks separately
134
- if (command.state === 0 /* PointerEventType.PET_UP */) {
135
- const clickMap = entityMap.get(EventType.Click);
136
- if (clickMap) {
137
- const data = clickMap.get(command.button);
138
- if (data && inputSystem.getClick(command.button, entity)) {
139
- checkNotThenable(data.cb(command), 'Click event returned a thenable. Only synchronous functions are allowed');
140
- }
141
- const anyData = clickMap.get(3 /* InputAction.IA_ANY */);
142
- if (anyData && inputSystem.getClick(command.button, entity)) {
143
- checkNotThenable(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
90
+ if (eventType === EventType.Down ||
91
+ eventType === EventType.Up ||
92
+ eventType === EventType.HoverEnter ||
93
+ eventType === EventType.HoverLeave ||
94
+ eventType === EventType.ProximityEnter ||
95
+ eventType === EventType.ProximityLeave) {
96
+ const command = inputSystem.getInputCommand(opts.button, getPointerEvent(eventType), entity);
97
+ if (command) {
98
+ checkNotThenable(cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
144
99
  }
145
100
  }
146
101
  }
147
102
  }
148
103
  });
149
- // return a function with the correct event type.
150
- // we use onPointerDown as the "archetype" for the returned function, but it fits with
151
- // all the onPointer* declarations
152
- const onPointerFunction = (ty) => {
153
- return (arg0, arg1, arg2) => {
154
- let entity;
155
- let optsList;
156
- if (typeof arg0 === 'number') {
157
- // called as onPointerDown(entity: Entity, cb: EventSystemCallback, opts?: Partial<EventSystemOptions>): void
158
- entity = arg0;
159
- const cb = arg1;
160
- const opts = arg2;
161
- optsList = [{ cb, ...getDefaultOpts(opts) }];
162
- }
163
- else if (typeof arg1 === 'function') {
164
- // called as onPointerDown(pointerData: { entity: Entity; opts?: Partial<EventSystemOptions> }, cb: EventSystemCallback): void
165
- const { entity: e, opts } = arg0;
166
- const cb = arg1;
167
- entity = e;
168
- optsList = [{ cb, ...getDefaultOpts(opts) }];
169
- }
170
- else {
171
- // called as onPointerDown(pointerData: { entity: Entity; optsList: EventSystemOptionsCallback[] }): void
172
- const { entity: e, optsList: o } = arg0;
173
- entity = e;
174
- optsList = o;
175
- }
176
- const previous = getEvent(entity).get(ty) ?? new Map();
177
- const callbacks = new Map();
178
- for (const opts of optsList) {
179
- const prevOpts = previous.get(opts.button);
180
- if (prevOpts !== undefined) {
181
- if (prevOpts.hoverText !== opts.hoverText ||
182
- prevOpts.maxDistance !== opts.maxDistance ||
183
- prevOpts.showFeedback !== opts.showFeedback ||
184
- prevOpts.showHighlight !== opts.showHighlight) {
185
- removePointerEvent(entity, getPointerEvent(ty), opts.button);
186
- setPointerEvent(entity, getPointerEvent(ty), opts);
187
- }
188
- }
189
- else {
190
- setPointerEvent(entity, getPointerEvent(ty), opts);
191
- }
192
- callbacks.set(opts.button, opts);
193
- }
194
- for (const button of previous.keys()) {
195
- if (!callbacks.has(button)) {
196
- removePointerEvent(entity, getPointerEvent(ty), button);
197
- }
198
- }
199
- getEvent(entity).set(ty, callbacks);
200
- };
104
+ const onPointerDown = (...args) => {
105
+ const [data, cb, maybeOpts] = args;
106
+ if (typeof data === 'number') {
107
+ return onPointerDown({ entity: data, opts: maybeOpts ?? {} }, cb);
108
+ }
109
+ const { entity, opts } = data;
110
+ const options = getDefaultOpts(opts);
111
+ removeEvent(entity, EventType.Down);
112
+ getEvent(entity).set(EventType.Down, { cb, opts: options });
113
+ setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
114
+ };
115
+ const onPointerUp = (...args) => {
116
+ const [data, cb, maybeOpts] = args;
117
+ if (typeof data === 'number') {
118
+ return onPointerUp({ entity: data, opts: maybeOpts ?? {} }, cb);
119
+ }
120
+ const { entity, opts } = data;
121
+ const options = getDefaultOpts(opts);
122
+ removeEvent(entity, EventType.Up);
123
+ getEvent(entity).set(EventType.Up, { cb, opts: options });
124
+ setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options);
125
+ };
126
+ const onPointerHoverEnter = (...args) => {
127
+ const [data, cb] = args;
128
+ const { entity, opts } = data;
129
+ const options = getDefaultOpts(opts);
130
+ removeEvent(entity, EventType.HoverEnter);
131
+ getEvent(entity).set(EventType.HoverEnter, { cb, opts: options });
132
+ setPointerEvent(entity, 2 /* PointerEventType.PET_HOVER_ENTER */, options);
133
+ };
134
+ const onPointerHoverLeave = (...args) => {
135
+ const [data, cb] = args;
136
+ const { entity, opts } = data;
137
+ const options = getDefaultOpts(opts);
138
+ removeEvent(entity, EventType.HoverLeave);
139
+ getEvent(entity).set(EventType.HoverLeave, { cb, opts: options });
140
+ setPointerEvent(entity, 3 /* PointerEventType.PET_HOVER_LEAVE */, options);
141
+ };
142
+ const onProximityDown = (...args) => {
143
+ const [data, cb] = args;
144
+ const { entity, opts } = data;
145
+ const options = getDefaultOpts(opts);
146
+ removeEvent(entity, EventType.Down, 1 /* InteractionType.PROXIMITY */);
147
+ getEvent(entity).set(EventType.Down, { cb, opts: options });
148
+ setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options, 1 /* InteractionType.PROXIMITY */);
149
+ };
150
+ const onProximityUp = (...args) => {
151
+ const [data, cb] = args;
152
+ const { entity, opts } = data;
153
+ const options = getDefaultOpts(opts);
154
+ removeEvent(entity, EventType.Up, 1 /* InteractionType.PROXIMITY */);
155
+ getEvent(entity).set(EventType.Up, { cb, opts: options });
156
+ setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options, 1 /* InteractionType.PROXIMITY */);
157
+ };
158
+ const onProximityEnter = (...args) => {
159
+ const [data, cb] = args;
160
+ const { entity, opts } = data;
161
+ const options = getDefaultOpts(opts);
162
+ removeEvent(entity, EventType.ProximityEnter, 1 /* InteractionType.PROXIMITY */);
163
+ getEvent(entity).set(EventType.ProximityEnter, { cb, opts: options });
164
+ setPointerEvent(entity, 4 /* PointerEventType.PET_PROXIMITY_ENTER */, options, 1 /* InteractionType.PROXIMITY */);
165
+ };
166
+ const onProximityLeave = (...args) => {
167
+ const [data, cb] = args;
168
+ const { entity, opts } = data;
169
+ const options = getDefaultOpts(opts);
170
+ removeEvent(entity, EventType.ProximityLeave, 1 /* InteractionType.PROXIMITY */);
171
+ getEvent(entity).set(EventType.ProximityLeave, { cb, opts: options });
172
+ setPointerEvent(entity, 5 /* PointerEventType.PET_PROXIMITY_LEAVE */, options, 1 /* InteractionType.PROXIMITY */);
201
173
  };
202
174
  return {
203
175
  removeOnClick(entity) {
@@ -215,22 +187,34 @@ export function createPointerEventsSystem(engine, inputSystem) {
215
187
  removeOnPointerHoverLeave(entity) {
216
188
  removeEvent(entity, EventType.HoverLeave);
217
189
  },
218
- removeOnPointerDrag(entity) {
219
- removeEvent(entity, EventType.Drag);
190
+ removeOnProximityDown(entity) {
191
+ removeEvent(entity, EventType.Down, 1 /* InteractionType.PROXIMITY */);
192
+ },
193
+ removeOnProximityUp(entity) {
194
+ removeEvent(entity, EventType.Up, 1 /* InteractionType.PROXIMITY */);
220
195
  },
221
- removeOnPointerDragLocked(entity) {
222
- removeEvent(entity, EventType.DragLocked);
196
+ removeOnProximityEnter(entity) {
197
+ removeEvent(entity, EventType.ProximityEnter, 1 /* InteractionType.PROXIMITY */);
223
198
  },
224
- removeOnPointerDragEnd(entity) {
225
- removeEvent(entity, EventType.DragEnd);
199
+ removeOnProximityLeave(entity) {
200
+ removeEvent(entity, EventType.ProximityLeave, 1 /* InteractionType.PROXIMITY */);
201
+ },
202
+ onClick(value, cb) {
203
+ const { entity } = value;
204
+ const options = getDefaultOpts(value.opts);
205
+ // Clear previous event with over feedback included
206
+ removeEvent(entity, EventType.Click);
207
+ // Set new event
208
+ getEvent(entity).set(EventType.Click, { cb, opts: options });
209
+ setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
226
210
  },
227
- onClick: onPointerFunction(EventType.Click),
228
- onPointerDown: onPointerFunction(EventType.Down),
229
- onPointerUp: onPointerFunction(EventType.Up),
230
- onPointerHoverEnter: onPointerFunction(EventType.HoverEnter),
231
- onPointerHoverLeave: onPointerFunction(EventType.HoverLeave),
232
- onPointerDrag: onPointerFunction(EventType.Drag),
233
- onPointerDragLocked: onPointerFunction(EventType.DragLocked),
234
- onPointerDragEnd: onPointerFunction(EventType.DragEnd)
211
+ onPointerDown,
212
+ onPointerUp,
213
+ onPointerHoverEnter,
214
+ onPointerHoverLeave,
215
+ onProximityDown,
216
+ onProximityUp,
217
+ onProximityEnter,
218
+ onProximityLeave
235
219
  };
236
220
  }
@@ -1,4 +1,4 @@
1
- import { RaycastQueryType, RaycastShape, PBRaycastResult } from '../components';
1
+ import { RaycastQueryType, 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,8 +14,6 @@ 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;
19
17
  };
20
18
  export type LocalDirectionRaycastSystemOptions = {
21
19
  direction?: Vector3;
@@ -58,8 +58,6 @@ export function createRaycastSystem(engine) {
58
58
  raycast.direction = raycastValue.directionRawValue;
59
59
  raycast.continuous = raycastValue.continuous;
60
60
  raycast.queryType = raycastValue.queryType;
61
- raycast.shape = raycastValue.shape;
62
- raycast.includeWorld = raycastValue.includeWorld;
63
61
  entitiesCallbackResultMap.set(entity, { callback: callback });
64
62
  };
65
63
  nextTickRaycasts.push(onNextTick);
@@ -0,0 +1,55 @@
1
+ import { Entity, IEngine } from '../../engine';
2
+ import { LastWriteWinElementSetComponentDefinition } from '../../engine/component';
3
+ import { PBAudioAnalysis, PBAudioAnalysisMode } from '../generated/pb/decentraland/sdk/components/audio_analysis.gen';
4
+ export interface AudioAnalysisComponentDefinitionExtended extends LastWriteWinElementSetComponentDefinition<PBAudioAnalysis> {
5
+ /**
6
+ * Reads the component data of `entity` into the provided `out` view.
7
+ *
8
+ * @throws Error if the entity does not have an AudioAnalysis component.
9
+ * @param entity - The entity whose AudioAnalysis data will be read.
10
+ * @param out - An existing AudioAnalysisView to populate with the latest values.
11
+ */
12
+ readIntoView(entity: Entity, out: AudioAnalysisView): void;
13
+ /**
14
+ * Attempts to read the component data of `entity` into the provided `out` view.
15
+ *
16
+ * @returns `true` if the component exists and data was written into `out`,
17
+ * `false` if the entity does not have an AudioAnalysis component.
18
+ * @param entity - The entity whose AudioAnalysis data will be read.
19
+ * @param out - An existing AudioAnalysisView to populate.
20
+ */
21
+ tryReadIntoView(entity: Entity, out: AudioAnalysisView): boolean;
22
+ /**
23
+ * Creates an AudioAnalysis component for the given `entity`.
24
+ *
25
+ * If a component already exists on the entity, this call fails (does not replace).
26
+ *
27
+ * @param entity - The entity to attach the component to.
28
+ * @param mode - Analysis mode. Defaults to `PBAudioAnalysisMode.MODE_LOGARITHMIC`.
29
+ * @param amplitudeGain - Optional amplitude gain multiplier.
30
+ * @param bandsGain - Optional gain multiplier applied to all frequency bands.
31
+ */
32
+ createAudioAnalysis(entity: Entity, mode?: PBAudioAnalysisMode, // default is PBAudioAnalysisMode.MODE_LOGARITHMIC
33
+ amplitudeGain?: number, bandsGain?: number): void;
34
+ /**
35
+ * Creates the AudioAnalysis component if missing, or replaces the existing one.
36
+ *
37
+ * @param entity - The target entity.
38
+ * @param mode - Analysis mode. Defaults to `PBAudioAnalysisMode.MODE_LOGARITHMIC`.
39
+ * @param amplitudeGain - Optional amplitude gain multiplier.
40
+ * @param bandsGain - Optional gain multiplier applied to the frequency bands.
41
+ */
42
+ createOrReplaceAudioAnalysis(entity: Entity, mode?: PBAudioAnalysisMode, // default is PBAudioAnalysisMode.MODE_LOGARITHMIC
43
+ amplitudeGain?: number, bandsGain?: number): void;
44
+ }
45
+ /**
46
+ * A read-only JavaScript-friendly view of AudioAnalysis ECS data.
47
+ *
48
+ * `amplitude` represents the aggregated signal strength.
49
+ * `bands` represents the processed frequency bands.
50
+ */
51
+ export type AudioAnalysisView = {
52
+ amplitude: number;
53
+ bands: number[];
54
+ };
55
+ export declare function defineAudioAnalysisComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): AudioAnalysisComponentDefinitionExtended;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineAudioAnalysisComponent = void 0;
4
+ const index_gen_1 = require("../generated/index.gen");
5
+ function defineAudioAnalysisComponent(engine) {
6
+ const theComponent = (0, index_gen_1.AudioAnalysis)(engine);
7
+ return {
8
+ ...theComponent,
9
+ readIntoView(entity, out) {
10
+ const audioAnalysis = theComponent.get(entity);
11
+ out.amplitude = audioAnalysis.amplitude;
12
+ out.bands[0] = audioAnalysis.band0;
13
+ out.bands[1] = audioAnalysis.band1;
14
+ out.bands[2] = audioAnalysis.band2;
15
+ out.bands[3] = audioAnalysis.band3;
16
+ out.bands[4] = audioAnalysis.band4;
17
+ out.bands[5] = audioAnalysis.band5;
18
+ out.bands[6] = audioAnalysis.band6;
19
+ out.bands[7] = audioAnalysis.band7;
20
+ },
21
+ tryReadIntoView(entity, out) {
22
+ const audioAnalysis = theComponent.getOrNull(entity);
23
+ if (!audioAnalysis)
24
+ return false;
25
+ out.amplitude = audioAnalysis.amplitude;
26
+ out.bands[0] = audioAnalysis.band0;
27
+ out.bands[1] = audioAnalysis.band1;
28
+ out.bands[2] = audioAnalysis.band2;
29
+ out.bands[3] = audioAnalysis.band3;
30
+ out.bands[4] = audioAnalysis.band4;
31
+ out.bands[5] = audioAnalysis.band5;
32
+ out.bands[6] = audioAnalysis.band6;
33
+ out.bands[7] = audioAnalysis.band7;
34
+ return true;
35
+ },
36
+ createAudioAnalysis(entity, mode, amplitudeGain, bandsGain) {
37
+ theComponent.create(entity, {
38
+ mode: mode || 1 /* PBAudioAnalysisMode.MODE_LOGARITHMIC */,
39
+ amplitudeGain: amplitudeGain ?? undefined,
40
+ bandsGain: bandsGain ?? undefined,
41
+ amplitude: 0,
42
+ band0: 0,
43
+ band1: 0,
44
+ band2: 0,
45
+ band3: 0,
46
+ band4: 0,
47
+ band5: 0,
48
+ band6: 0,
49
+ band7: 0
50
+ });
51
+ },
52
+ createOrReplaceAudioAnalysis(entity, mode, amplitudeGain, bandsGain) {
53
+ theComponent.createOrReplace(entity, {
54
+ mode: mode || 1 /* PBAudioAnalysisMode.MODE_LOGARITHMIC */,
55
+ amplitudeGain: amplitudeGain ?? undefined,
56
+ bandsGain: bandsGain ?? undefined,
57
+ amplitude: 0,
58
+ band0: 0,
59
+ band1: 0,
60
+ band2: 0,
61
+ band3: 0,
62
+ band4: 0,
63
+ band5: 0,
64
+ band6: 0,
65
+ band7: 0
66
+ });
67
+ }
68
+ };
69
+ }
70
+ exports.defineAudioAnalysisComponent = defineAudioAnalysisComponent;
@@ -34,13 +34,5 @@ export interface MeshColliderComponentDefinitionExtended extends LastWriteWinEle
34
34
  * @param colliderMask - the set of layer where the collider reacts, default: Physics and Pointer
35
35
  */
36
36
  setSphere(entity: Entity, colliderLayers?: ColliderLayer | ColliderLayer[]): void;
37
- /**
38
- * @public
39
- * Set a gltf internal mesh in the MeshCollider component
40
- * @param entity - entity to create or replace the MeshRenderer component
41
- * @param source - the path to the gltf
42
- * @param meshName - the name of the mesh in the gltf
43
- */
44
- setGltfMesh(entity: Entity, source: string, meshName: string, colliderLayers?: ColliderLayer | ColliderLayer[]): void;
45
37
  }
46
38
  export declare function defineMeshColliderComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): MeshColliderComponentDefinitionExtended;
@@ -37,12 +37,6 @@ function defineMeshColliderComponent(engine) {
37
37
  mesh: { $case: 'sphere', sphere: {} },
38
38
  collisionMask: getCollisionMask(colliderLayers)
39
39
  });
40
- },
41
- setGltfMesh(entity, source, meshName, colliderLayers) {
42
- theComponent.createOrReplace(entity, {
43
- mesh: { $case: 'gltf', gltf: { gltfSrc: source, name: meshName } },
44
- collisionMask: getCollisionMask(colliderLayers)
45
- });
46
40
  }
47
41
  };
48
42
  }
@@ -32,13 +32,5 @@ export interface MeshRendererComponentDefinitionExtended extends LastWriteWinEle
32
32
  * @param entity - entity to create or replace the MeshRenderer component
33
33
  */
34
34
  setSphere(entity: Entity): void;
35
- /**
36
- * @public
37
- * Set a gltf internal mesh in the MeshRenderer component
38
- * @param entity - entity to create or replace the MeshRenderer component
39
- * @param source - the path to the gltf
40
- * @param meshName - the name of the mesh in the gltf
41
- */
42
- setGltfMesh(entity: Entity, source: string, meshName: string): void;
43
35
  }
44
36
  export declare function defineMeshRendererComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): MeshRendererComponentDefinitionExtended;
@@ -25,11 +25,6 @@ function defineMeshRendererComponent(engine) {
25
25
  theComponent.createOrReplace(entity, {
26
26
  mesh: { $case: 'sphere', sphere: {} }
27
27
  });
28
- },
29
- setGltfMesh(entity, source, meshName) {
30
- theComponent.createOrReplace(entity, {
31
- mesh: { $case: 'gltf', gltf: { gltfSrc: source, name: meshName } }
32
- });
33
28
  }
34
29
  };
35
30
  }
@@ -1,6 +1,66 @@
1
1
  import { Entity, IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine';
2
2
  import { Quaternion, Vector2, Vector3 } from '../generated/pb/decentraland/common/vectors.gen';
3
3
  import { EasingFunction, Move, MoveContinuous, PBTween, Rotate, RotateContinuous, Scale, TextureMove, TextureMoveContinuous, TextureMovementType } from '../generated/index.gen';
4
+ /**
5
+ * @public
6
+ * Partial params for Tween.Mode.MoveRotateScale(). At least one of position, rotation, or scale must be provided.
7
+ * Use this when building a mode for Tween.createOrReplace() or TweenSequence (e.g. only positionStart/positionEnd).
8
+ */
9
+ export interface MoveRotateScaleModeParams {
10
+ /** Position tween (start → end). Optional. */
11
+ position?: {
12
+ start: Vector3;
13
+ end: Vector3;
14
+ };
15
+ /** Rotation tween (start → end). Optional. */
16
+ rotation?: {
17
+ start: Quaternion;
18
+ end: Quaternion;
19
+ };
20
+ /** Scale tween (start → end). Optional. */
21
+ scale?: {
22
+ start: Vector3;
23
+ end: Vector3;
24
+ };
25
+ }
26
+ /**
27
+ * @public
28
+ * Parameters for setMoveRotateScale. At least one of position, rotation, or scale must be provided.
29
+ */
30
+ export interface SetMoveRotateScaleParams extends MoveRotateScaleModeParams {
31
+ /** Duration of the tween in milliseconds. */
32
+ duration: number;
33
+ /** Easing function (defaults to EF_LINEAR). */
34
+ easingFunction?: EasingFunction;
35
+ }
36
+ /**
37
+ * @public
38
+ * Partial params for Tween.Mode.MoveRotateScaleContinuous(). At least one of position, rotation, or scale must be provided.
39
+ */
40
+ export interface MoveRotateScaleContinuousModeParams {
41
+ /** Position direction for continuous movement. Optional. */
42
+ position?: {
43
+ direction: Vector3;
44
+ };
45
+ /** Rotation direction for continuous rotation. Optional. */
46
+ rotation?: {
47
+ direction: Quaternion;
48
+ };
49
+ /** Scale direction for continuous scale change. Optional. */
50
+ scale?: {
51
+ direction: Vector3;
52
+ };
53
+ /** Speed of the animation per second. */
54
+ speed: number;
55
+ }
56
+ /**
57
+ * @public
58
+ * Parameters for setMoveRotateScaleContinuous. At least one of position, rotation, or scale must be provided.
59
+ */
60
+ export interface SetMoveRotateScaleContinuousParams extends MoveRotateScaleContinuousModeParams {
61
+ /** Duration in milliseconds (defaults to 0 for infinite). */
62
+ duration?: number;
63
+ }
4
64
  /**
5
65
  * @public
6
66
  */
@@ -33,6 +93,16 @@ export interface TweenHelper {
33
93
  * @returns a texture-move-continuous mode tween
34
94
  */
35
95
  TextureMoveContinuous: (textureMove: TextureMoveContinuous) => PBTween['mode'];
96
+ /**
97
+ * @returns a move-rotate-scale mode tween
98
+ * @param params - partial transform (at least one of position, rotation, scale); omit axes you don't need
99
+ */
100
+ MoveRotateScale: (params: MoveRotateScaleModeParams) => PBTween['mode'];
101
+ /**
102
+ * @returns a move-rotate-scale-continuous mode tween
103
+ * @param params - partial transform (at least one of position, rotation, scale) + speed; omit axes you don't need
104
+ */
105
+ MoveRotateScaleContinuous: (params: MoveRotateScaleContinuousModeParams) => PBTween['mode'];
36
106
  }
37
107
  /**
38
108
  * @public
@@ -118,5 +188,25 @@ export interface TweenComponentDefinitionExtended extends LastWriteWinElementSet
118
188
  * @param duration - duration of the tween in milliseconds (defaults to 0 for infinite)
119
189
  */
120
190
  setTextureMoveContinuous(entity: Entity, direction: Vector2, speed: number, movementType?: TextureMovementType, duration?: number): void;
191
+ /**
192
+ * @public
193
+ *
194
+ * Creates or replaces a move-rotate-scale tween component that simultaneously animates
195
+ * an entity's position, rotation, and/or scale from start to end. Provide only the
196
+ * properties you need (at least one of position, rotation, or scale).
197
+ * @param entity - entity to apply the tween to
198
+ * @param params - object with optional position, rotation, scale (each with start/end), duration, and optional easingFunction
199
+ */
200
+ setMoveRotateScale(entity: Entity, params: SetMoveRotateScaleParams): void;
201
+ /**
202
+ * @public
203
+ *
204
+ * Creates or replaces a continuous move-rotate-scale tween component that simultaneously
205
+ * moves, rotates, and/or scales an entity continuously. Provide only the properties
206
+ * you need (at least one of position, rotation, or scale).
207
+ * @param entity - entity to apply the tween to
208
+ * @param params - object with optional position, rotation, scale (each with direction), speed, and optional duration
209
+ */
210
+ setMoveRotateScaleContinuous(entity: Entity, params: SetMoveRotateScaleContinuousParams): void;
121
211
  }
122
212
  export declare function defineTweenComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): TweenComponentDefinitionExtended;