@dcl/ecs 7.20.0 → 7.20.1-21915113771.commit-e132905

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 (173) 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/generated/AvatarLocomotionSettings.gen.d.ts +1 -0
  10. package/dist/components/generated/AvatarLocomotionSettings.gen.js +25 -0
  11. package/dist/components/generated/CameraLayer.gen.d.ts +1 -0
  12. package/dist/components/generated/CameraLayer.gen.js +25 -0
  13. package/dist/components/generated/CameraLayers.gen.d.ts +1 -0
  14. package/dist/components/generated/CameraLayers.gen.js +25 -0
  15. package/dist/components/generated/GlobalLight.gen.d.ts +1 -0
  16. package/dist/components/generated/GlobalLight.gen.js +25 -0
  17. package/dist/components/generated/GltfNode.gen.d.ts +1 -0
  18. package/dist/components/generated/GltfNode.gen.js +25 -0
  19. package/dist/components/generated/GltfNodeState.gen.d.ts +1 -0
  20. package/dist/components/generated/GltfNodeState.gen.js +25 -0
  21. package/dist/components/generated/TextureCamera.gen.d.ts +1 -0
  22. package/dist/components/generated/TextureCamera.gen.js +25 -0
  23. package/dist/components/generated/UiCanvas.gen.d.ts +1 -0
  24. package/dist/components/generated/UiCanvas.gen.js +25 -0
  25. package/dist/components/generated/UiScrollResult.gen.d.ts +1 -0
  26. package/dist/components/generated/UiScrollResult.gen.js +25 -0
  27. package/dist/components/generated/component-names.gen.js +9 -0
  28. package/dist/components/generated/global.gen.d.ts +18 -0
  29. package/dist/components/generated/global.gen.js +9 -0
  30. package/dist/components/generated/index.gen.d.ts +36 -0
  31. package/dist/components/generated/index.gen.js +45 -0
  32. package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
  33. package/dist/components/generated/pb/decentraland/common/texture.gen.js +65 -0
  34. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
  35. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
  36. package/dist/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.d.ts +29 -0
  37. package/dist/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.js +93 -0
  38. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +43 -0
  39. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +151 -1
  40. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
  41. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
  42. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
  43. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +104 -0
  44. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
  45. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +50 -0
  46. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +37 -1
  47. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +119 -1
  48. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
  49. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
  50. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
  51. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +61 -0
  52. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  53. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
  54. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
  55. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +41 -0
  56. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
  57. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +59 -0
  58. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
  59. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +57 -1
  60. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
  61. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +56 -0
  62. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
  63. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +56 -0
  64. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
  65. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
  66. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
  67. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +191 -0
  68. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
  69. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +60 -0
  70. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
  71. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +42 -0
  72. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +4 -0
  73. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +20 -0
  74. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
  75. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +90 -0
  76. package/dist/components/index.d.ts +11 -7
  77. package/dist/components/index.js +11 -5
  78. package/dist/components/types.d.ts +2 -0
  79. package/dist/engine/input.d.ts +6 -0
  80. package/dist/engine/input.js +7 -1
  81. package/dist/index.d.ts +1 -0
  82. package/dist/index.js +1 -0
  83. package/dist/runtime/globals.d.ts +12 -2
  84. package/dist/runtime/globals.js +4 -3
  85. package/dist/systems/events.d.ts +100 -1
  86. package/dist/systems/events.js +143 -65
  87. package/dist-cjs/components/extended/AvatarEquippedData.d.ts +10 -0
  88. package/dist-cjs/components/extended/AvatarEquippedData.js +19 -0
  89. package/dist-cjs/components/extended/AvatarShape.d.ts +10 -0
  90. package/dist-cjs/components/extended/AvatarShape.js +19 -0
  91. package/dist-cjs/components/extended/MeshCollider.d.ts +8 -0
  92. package/dist-cjs/components/extended/MeshCollider.js +6 -0
  93. package/dist-cjs/components/extended/MeshRenderer.d.ts +8 -0
  94. package/dist-cjs/components/extended/MeshRenderer.js +5 -0
  95. package/dist-cjs/components/generated/AvatarLocomotionSettings.gen.d.ts +1 -0
  96. package/dist-cjs/components/generated/AvatarLocomotionSettings.gen.js +28 -0
  97. package/dist-cjs/components/generated/CameraLayer.gen.d.ts +1 -0
  98. package/dist-cjs/components/generated/CameraLayer.gen.js +28 -0
  99. package/dist-cjs/components/generated/CameraLayers.gen.d.ts +1 -0
  100. package/dist-cjs/components/generated/CameraLayers.gen.js +28 -0
  101. package/dist-cjs/components/generated/GlobalLight.gen.d.ts +1 -0
  102. package/dist-cjs/components/generated/GlobalLight.gen.js +28 -0
  103. package/dist-cjs/components/generated/GltfNode.gen.d.ts +1 -0
  104. package/dist-cjs/components/generated/GltfNode.gen.js +28 -0
  105. package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +1 -0
  106. package/dist-cjs/components/generated/GltfNodeState.gen.js +28 -0
  107. package/dist-cjs/components/generated/TextureCamera.gen.d.ts +1 -0
  108. package/dist-cjs/components/generated/TextureCamera.gen.js +28 -0
  109. package/dist-cjs/components/generated/UiCanvas.gen.d.ts +1 -0
  110. package/dist-cjs/components/generated/UiCanvas.gen.js +28 -0
  111. package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +1 -0
  112. package/dist-cjs/components/generated/UiScrollResult.gen.js +28 -0
  113. package/dist-cjs/components/generated/component-names.gen.js +9 -0
  114. package/dist-cjs/components/generated/global.gen.d.ts +18 -0
  115. package/dist-cjs/components/generated/global.gen.js +11 -1
  116. package/dist-cjs/components/generated/index.gen.d.ts +36 -0
  117. package/dist-cjs/components/generated/index.gen.js +56 -2
  118. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
  119. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +66 -1
  120. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
  121. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
  122. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.d.ts +29 -0
  123. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.js +99 -0
  124. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +43 -0
  125. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +152 -2
  126. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
  127. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
  128. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
  129. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +110 -0
  130. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
  131. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +56 -0
  132. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +37 -1
  133. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +120 -2
  134. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
  135. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
  136. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
  137. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +67 -0
  138. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  139. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
  140. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
  141. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +47 -0
  142. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
  143. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +65 -0
  144. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
  145. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +58 -2
  146. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
  147. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +57 -1
  148. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
  149. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +57 -1
  150. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
  151. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
  152. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
  153. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +197 -0
  154. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
  155. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +66 -0
  156. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
  157. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +48 -0
  158. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +4 -0
  159. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +20 -0
  160. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
  161. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +91 -1
  162. package/dist-cjs/components/index.d.ts +11 -7
  163. package/dist-cjs/components/index.js +15 -7
  164. package/dist-cjs/components/types.d.ts +2 -0
  165. package/dist-cjs/engine/input.d.ts +6 -0
  166. package/dist-cjs/engine/input.js +7 -1
  167. package/dist-cjs/index.d.ts +1 -0
  168. package/dist-cjs/index.js +1 -0
  169. package/dist-cjs/runtime/globals.d.ts +12 -2
  170. package/dist-cjs/runtime/globals.js +4 -3
  171. package/dist-cjs/systems/events.d.ts +100 -1
  172. package/dist-cjs/systems/events.js +143 -65
  173. package/package.json +2 -2
@@ -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;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dcl/ecs",
3
3
  "description": "Decentraland ECS",
4
- "version": "7.20.0",
4
+ "version": "7.20.1-21915113771.commit-e132905",
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": "ce67806cda32b38c9f9cb0ebd39967f476d4ae87"
36
+ "commit": "e1329052101ce1d0a78b64d83abecd61dc6efcc9"
37
37
  }