@dcl/ecs 7.12.2 → 7.12.3-19242573384.commit-09d14b4

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 (189) 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 +5 -94
  10. package/dist/components/extended/Tween.js +1 -119
  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 +8 -0
  28. package/dist/components/generated/global.gen.d.ts +17 -1
  29. package/dist/components/generated/global.gen.js +8 -0
  30. package/dist/components/generated/index.gen.d.ts +34 -2
  31. package/dist/components/generated/index.gen.js +42 -4
  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_modifier_area.gen.d.ts +43 -0
  37. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +151 -1
  38. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
  39. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
  40. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
  41. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +104 -0
  42. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
  43. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +50 -0
  44. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +37 -1
  45. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +119 -1
  46. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
  47. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
  48. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
  49. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +61 -0
  50. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  51. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
  52. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
  53. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +41 -0
  54. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
  55. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +59 -0
  56. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
  57. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +57 -1
  58. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
  59. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +56 -0
  60. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
  61. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +56 -0
  62. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
  63. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
  64. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
  65. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +191 -0
  66. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
  67. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +60 -0
  68. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
  69. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +42 -0
  70. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +4 -0
  71. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +20 -0
  72. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
  73. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +90 -0
  74. package/dist/components/index.d.ts +11 -11
  75. package/dist/components/index.js +11 -11
  76. package/dist/components/types.d.ts +2 -3
  77. package/dist/engine/index.js +0 -10
  78. package/dist/engine/input.d.ts +6 -0
  79. package/dist/engine/input.js +7 -1
  80. package/dist/engine/types.d.ts +0 -7
  81. package/dist/index.d.ts +5 -6
  82. package/dist/index.js +3 -4
  83. package/dist/runtime/initialization/index.d.ts +0 -7
  84. package/dist/runtime/initialization/index.js +0 -6
  85. package/dist/systems/crdt/index.d.ts +0 -1
  86. package/dist/systems/crdt/index.js +5 -17
  87. package/dist/systems/events.d.ts +100 -1
  88. package/dist/systems/events.js +143 -65
  89. package/dist-cjs/components/extended/AvatarEquippedData.d.ts +10 -0
  90. package/dist-cjs/components/extended/AvatarEquippedData.js +19 -0
  91. package/dist-cjs/components/extended/AvatarShape.d.ts +10 -0
  92. package/dist-cjs/components/extended/AvatarShape.js +19 -0
  93. package/dist-cjs/components/extended/MeshCollider.d.ts +8 -0
  94. package/dist-cjs/components/extended/MeshCollider.js +6 -0
  95. package/dist-cjs/components/extended/MeshRenderer.d.ts +8 -0
  96. package/dist-cjs/components/extended/MeshRenderer.js +5 -0
  97. package/dist-cjs/components/extended/Tween.d.ts +5 -94
  98. package/dist-cjs/components/extended/Tween.js +1 -119
  99. package/dist-cjs/components/generated/CameraLayer.gen.d.ts +1 -0
  100. package/dist-cjs/components/generated/CameraLayer.gen.js +28 -0
  101. package/dist-cjs/components/generated/CameraLayers.gen.d.ts +1 -0
  102. package/dist-cjs/components/generated/CameraLayers.gen.js +28 -0
  103. package/dist-cjs/components/generated/GlobalLight.gen.d.ts +1 -0
  104. package/dist-cjs/components/generated/GlobalLight.gen.js +28 -0
  105. package/dist-cjs/components/generated/GltfNode.gen.d.ts +1 -0
  106. package/dist-cjs/components/generated/GltfNode.gen.js +28 -0
  107. package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +1 -0
  108. package/dist-cjs/components/generated/GltfNodeState.gen.js +28 -0
  109. package/dist-cjs/components/generated/TextureCamera.gen.d.ts +1 -0
  110. package/dist-cjs/components/generated/TextureCamera.gen.js +28 -0
  111. package/dist-cjs/components/generated/UiCanvas.gen.d.ts +1 -0
  112. package/dist-cjs/components/generated/UiCanvas.gen.js +28 -0
  113. package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +1 -0
  114. package/dist-cjs/components/generated/UiScrollResult.gen.js +28 -0
  115. package/dist-cjs/components/generated/component-names.gen.js +8 -0
  116. package/dist-cjs/components/generated/global.gen.d.ts +17 -1
  117. package/dist-cjs/components/generated/global.gen.js +10 -1
  118. package/dist-cjs/components/generated/index.gen.d.ts +34 -2
  119. package/dist-cjs/components/generated/index.gen.js +52 -6
  120. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
  121. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +66 -1
  122. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
  123. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
  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 -11
  163. package/dist-cjs/components/index.js +15 -15
  164. package/dist-cjs/components/types.d.ts +2 -3
  165. package/dist-cjs/engine/index.js +0 -10
  166. package/dist-cjs/engine/input.d.ts +6 -0
  167. package/dist-cjs/engine/input.js +7 -1
  168. package/dist-cjs/engine/types.d.ts +0 -7
  169. package/dist-cjs/index.d.ts +5 -6
  170. package/dist-cjs/index.js +4 -5
  171. package/dist-cjs/runtime/initialization/index.d.ts +0 -7
  172. package/dist-cjs/runtime/initialization/index.js +1 -7
  173. package/dist-cjs/systems/crdt/index.d.ts +0 -1
  174. package/dist-cjs/systems/crdt/index.js +6 -18
  175. package/dist-cjs/systems/events.d.ts +100 -1
  176. package/dist-cjs/systems/events.js +143 -65
  177. package/package.json +2 -2
  178. package/dist/components/extended/TriggerArea.d.ts +0 -22
  179. package/dist/components/extended/TriggerArea.js +0 -27
  180. package/dist/components/manual/Tags.d.ts +0 -34
  181. package/dist/components/manual/Tags.js +0 -37
  182. package/dist/systems/triggerArea.d.ts +0 -50
  183. package/dist/systems/triggerArea.js +0 -113
  184. package/dist-cjs/components/extended/TriggerArea.d.ts +0 -22
  185. package/dist-cjs/components/extended/TriggerArea.js +0 -31
  186. package/dist-cjs/components/manual/Tags.d.ts +0 -34
  187. package/dist-cjs/components/manual/Tags.js +0 -39
  188. package/dist-cjs/systems/triggerArea.d.ts +0 -50
  189. package/dist-cjs/systems/triggerArea.js +0 -140
@@ -17,6 +17,12 @@ export type EventSystemOptions = {
17
17
  showFeedback?: boolean;
18
18
  showHighlight?: boolean;
19
19
  };
20
+ /**
21
+ * @public
22
+ */
23
+ export type EventSystemOptionsCallback = EventSystemOptions & {
24
+ cb: EventSystemCallback;
25
+ };
20
26
  export declare const getDefaultOpts: (opts?: Partial<EventSystemOptions>) => EventSystemOptions;
21
27
  /**
22
28
  * @public
@@ -46,11 +52,37 @@ export interface PointerEventsSystem {
46
52
  * @param entity - Entity where the callback was attached
47
53
  */
48
54
  removeOnPointerHoverLeave(entity: Entity): void;
55
+ /**
56
+ * @public
57
+ * Remove the callback for onPointerDrag event
58
+ * @param entity - Entity where the callback was attached
59
+ */
60
+ removeOnPointerDrag(entity: Entity): void;
61
+ /**
62
+ * @public
63
+ * Remove the callback for onPointerDragLocked event
64
+ * @param entity - Entity where the callback was attached
65
+ */
66
+ removeOnPointerDragLocked(entity: Entity): void;
67
+ /**
68
+ * @public
69
+ * Remove the callback for onPointerDragEnd event
70
+ * @param entity - Entity where the callback was attached
71
+ */
72
+ removeOnPointerDragEnd(entity: Entity): void;
73
+ /**
74
+ * @public
75
+ * Execute callbacks when the user presses one of the InputButtons pointing at the entity
76
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
77
+ */
78
+ onPointerDown(pointerData: {
79
+ entity: Entity;
80
+ optsList: EventSystemOptionsCallback[];
81
+ }): void;
49
82
  /**
50
83
  * @public
51
84
  * Execute callback when the user press the InputButton pointing at the entity
52
85
  * @param pointerData - Entity to attach the callback, Opts to trigger Feedback and Button
53
- * @param cb - Function to execute when click fires
54
86
  */
55
87
  onPointerDown(pointerData: {
56
88
  entity: Entity;
@@ -63,6 +95,15 @@ export interface PointerEventsSystem {
63
95
  * @param opts - Opts to trigger Feedback and Button
64
96
  */
65
97
  onPointerDown(entity: Entity, cb: EventSystemCallback, opts?: Partial<EventSystemOptions>): void;
98
+ /**
99
+ * @public
100
+ * Execute callbacks when the user releases one of the InputButtons pointing at the entity
101
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
102
+ */
103
+ onPointerUp(pointerData: {
104
+ entity: Entity;
105
+ optsList: EventSystemOptionsCallback[];
106
+ }): void;
66
107
  /**
67
108
  * @public
68
109
  * Execute callback when the user releases the InputButton pointing at the entity
@@ -100,6 +141,64 @@ export interface PointerEventsSystem {
100
141
  entity: Entity;
101
142
  opts?: Partial<EventSystemOptions>;
102
143
  }, cb: EventSystemCallback): void;
144
+ /**
145
+ * @public
146
+ * Execute callbacks when the user drags the pointer from inside the entity
147
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
148
+ */
149
+ onPointerDrag(pointerData: {
150
+ entity: Entity;
151
+ optsList: EventSystemOptionsCallback[];
152
+ }): void;
153
+ /**
154
+ * @public
155
+ * Execute callback when the user clicks and drags the pointer from inside the entity
156
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
157
+ * @param cb - Function to execute when click fires
158
+ */
159
+ onPointerDrag(pointerData: {
160
+ entity: Entity;
161
+ opts?: Partial<EventSystemOptions>;
162
+ }, cb: EventSystemCallback): void;
163
+ /**
164
+ * @public
165
+ * Execute callbacks when the user drags the pointer from inside the entity, locking the cursor in place.
166
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
167
+ */
168
+ onPointerDragLocked(pointerData: {
169
+ entity: Entity;
170
+ optsList: EventSystemOptionsCallback[];
171
+ }): void;
172
+ /**
173
+ * @public
174
+ * Execute callback when the user clicks and drags the pointer from inside the entity,
175
+ * locking the cursor in place
176
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
177
+ * @param cb - Function to execute when click fires
178
+ */
179
+ onPointerDragLocked(pointerData: {
180
+ entity: Entity;
181
+ opts?: Partial<EventSystemOptions>;
182
+ }, cb: EventSystemCallback): void;
183
+ /**
184
+ * @public
185
+ * Execute callbacks when the user releases a button after a drag
186
+ * @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
187
+ */
188
+ onPointerDragEnd(pointerData: {
189
+ entity: Entity;
190
+ optsList: EventSystemOptionsCallback[];
191
+ }): void;
192
+ /**
193
+ * @public
194
+ * Execute callback when the user releases the button after a drag
195
+ * @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
196
+ * @param cb - Function to execute when click fires
197
+ */
198
+ onPointerDragEnd(pointerData: {
199
+ entity: Entity;
200
+ opts?: Partial<EventSystemOptions>;
201
+ }, cb: EventSystemCallback): void;
103
202
  }
104
203
  /**
105
204
  * @public
@@ -18,6 +18,9 @@ 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
24
  })(EventType || (EventType = {}));
22
25
  const eventsMap = new Map();
23
26
  function getEvent(entity) {
@@ -52,77 +55,148 @@ export function createPointerEventsSystem(engine, inputSystem) {
52
55
  else if (eventType === EventType.HoverEnter) {
53
56
  return 2 /* PointerEventType.PET_HOVER_ENTER */;
54
57
  }
58
+ else if (eventType === EventType.Drag) {
59
+ return 5 /* PointerEventType.PET_DRAG */;
60
+ }
61
+ else if (eventType === EventType.DragLocked) {
62
+ return 4 /* PointerEventType.PET_DRAG_LOCKED */;
63
+ }
64
+ else if (eventType === EventType.DragEnd) {
65
+ return 6 /* PointerEventType.PET_DRAG_END */;
66
+ }
55
67
  return 1 /* PointerEventType.PET_DOWN */;
56
68
  }
69
+ function getEventType(pet) {
70
+ if (pet === 0 /* PointerEventType.PET_UP */) {
71
+ return EventType.Up;
72
+ }
73
+ else if (pet === 2 /* PointerEventType.PET_HOVER_ENTER */) {
74
+ return EventType.HoverEnter;
75
+ }
76
+ else if (pet === 3 /* PointerEventType.PET_HOVER_LEAVE */) {
77
+ return EventType.HoverLeave;
78
+ }
79
+ else if (pet === 5 /* PointerEventType.PET_DRAG */) {
80
+ return EventType.Drag;
81
+ }
82
+ else if (pet === 4 /* PointerEventType.PET_DRAG_LOCKED */) {
83
+ return EventType.DragLocked;
84
+ }
85
+ else if (pet === 6 /* PointerEventType.PET_DRAG_END */) {
86
+ return EventType.DragEnd;
87
+ }
88
+ else {
89
+ return EventType.Down;
90
+ }
91
+ }
57
92
  function removeEvent(entity, type) {
58
93
  const event = getEvent(entity);
59
- const pointerEvent = event.get(type);
60
- if (pointerEvent?.opts.hoverText) {
61
- removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts.button);
94
+ const pointerEventList = event.get(type);
95
+ if (pointerEventList === undefined) {
96
+ return;
97
+ }
98
+ for (const button of pointerEventList.keys()) {
99
+ removePointerEvent(entity, getPointerEvent(type), button);
62
100
  }
63
101
  event.delete(type);
64
102
  }
65
103
  engine.addSystem(function EventSystem() {
66
- for (const [entity, event] of eventsMap) {
104
+ if (eventsMap.size === 0) {
105
+ return;
106
+ }
107
+ for (const entity of eventsMap.keys()) {
67
108
  if (engine.getEntityState(entity) === EntityState.Removed) {
68
109
  eventsMap.delete(entity);
110
+ }
111
+ }
112
+ for (const command of inputSystem.getInputCommands()) {
113
+ const entity = command.hit?.entityId;
114
+ if (entity === undefined) {
115
+ continue;
116
+ }
117
+ const entityMap = eventsMap.get(entity);
118
+ if (entityMap === undefined) {
69
119
  continue;
70
120
  }
71
- for (const [eventType, { cb, opts }] of event) {
72
- if (eventType === EventType.Click) {
73
- const command = inputSystem.getClick(opts.button, entity);
74
- if (command)
75
- checkNotThenable(cb(command.up), 'Click event returned a thenable. Only synchronous functions are allowed');
121
+ const typeMap = entityMap.get(getEventType(command.state));
122
+ if (typeMap) {
123
+ const data = typeMap.get(command.button);
124
+ if (data) {
125
+ checkNotThenable(data.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
76
126
  }
77
- if (eventType === EventType.Down ||
78
- eventType === EventType.Up ||
79
- eventType === EventType.HoverEnter ||
80
- eventType === EventType.HoverLeave) {
81
- const command = inputSystem.getInputCommand(opts.button, getPointerEvent(eventType), entity);
82
- if (command) {
83
- checkNotThenable(cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
127
+ const anyData = typeMap.get(3 /* InputAction.IA_ANY */);
128
+ if (anyData) {
129
+ checkNotThenable(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
130
+ }
131
+ }
132
+ // check clicks separately
133
+ if (command.state === 0 /* PointerEventType.PET_UP */) {
134
+ const clickMap = entityMap.get(EventType.Click);
135
+ if (clickMap) {
136
+ const data = clickMap.get(command.button);
137
+ if (data && inputSystem.getClick(command.button, entity)) {
138
+ checkNotThenable(data.cb(command), 'Click event returned a thenable. Only synchronous functions are allowed');
139
+ }
140
+ const anyData = clickMap.get(3 /* InputAction.IA_ANY */);
141
+ if (anyData && inputSystem.getClick(command.button, entity)) {
142
+ checkNotThenable(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
84
143
  }
85
144
  }
86
145
  }
87
146
  }
88
147
  });
89
- const onPointerDown = (...args) => {
90
- const [data, cb, maybeOpts] = args;
91
- if (typeof data === 'number') {
92
- return onPointerDown({ entity: data, opts: maybeOpts ?? {} }, cb);
93
- }
94
- const { entity, opts } = data;
95
- const options = getDefaultOpts(opts);
96
- removeEvent(entity, EventType.Down);
97
- getEvent(entity).set(EventType.Down, { cb, opts: options });
98
- setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
99
- };
100
- const onPointerUp = (...args) => {
101
- const [data, cb, maybeOpts] = args;
102
- if (typeof data === 'number') {
103
- return onPointerUp({ entity: data, opts: maybeOpts ?? {} }, cb);
104
- }
105
- const { entity, opts } = data;
106
- const options = getDefaultOpts(opts);
107
- removeEvent(entity, EventType.Up);
108
- getEvent(entity).set(EventType.Up, { cb, opts: options });
109
- setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options);
110
- };
111
- const onPointerHoverEnter = (...args) => {
112
- const [data, cb] = args;
113
- const { entity, opts } = data;
114
- const options = getDefaultOpts(opts);
115
- removeEvent(entity, EventType.HoverEnter);
116
- getEvent(entity).set(EventType.HoverEnter, { cb, opts: options });
117
- setPointerEvent(entity, 2 /* PointerEventType.PET_HOVER_ENTER */, options);
118
- };
119
- const onPointerHoverLeave = (...args) => {
120
- const [data, cb] = args;
121
- const { entity, opts } = data;
122
- const options = getDefaultOpts(opts);
123
- removeEvent(entity, EventType.HoverLeave);
124
- getEvent(entity).set(EventType.HoverLeave, { cb, opts: options });
125
- setPointerEvent(entity, 3 /* PointerEventType.PET_HOVER_LEAVE */, options);
148
+ // return a function with the correct event type.
149
+ // we use onPointerDown as the "archetype" for the returned function, but it fits with
150
+ // all the onPointer* declarations
151
+ const onPointerFunction = (ty) => {
152
+ return (arg0, arg1, arg2) => {
153
+ let entity;
154
+ let optsList;
155
+ if (typeof arg0 === 'number') {
156
+ // called as onPointerDown(entity: Entity, cb: EventSystemCallback, opts?: Partial<EventSystemOptions>): void
157
+ entity = arg0;
158
+ const cb = arg1;
159
+ const opts = arg2;
160
+ optsList = [{ cb, ...getDefaultOpts(opts) }];
161
+ }
162
+ else if (typeof arg1 === 'function') {
163
+ // called as onPointerDown(pointerData: { entity: Entity; opts?: Partial<EventSystemOptions> }, cb: EventSystemCallback): void
164
+ const { entity: e, opts } = arg0;
165
+ const cb = arg1;
166
+ entity = e;
167
+ optsList = [{ cb, ...getDefaultOpts(opts) }];
168
+ }
169
+ else {
170
+ // called as onPointerDown(pointerData: { entity: Entity; optsList: EventSystemOptionsCallback[] }): void
171
+ const { entity: e, optsList: o } = arg0;
172
+ entity = e;
173
+ optsList = o;
174
+ }
175
+ const previous = getEvent(entity).get(ty) ?? new Map();
176
+ const callbacks = new Map();
177
+ for (const opts of optsList) {
178
+ const prevOpts = previous.get(opts.button);
179
+ if (prevOpts !== undefined) {
180
+ if (prevOpts.hoverText !== opts.hoverText ||
181
+ prevOpts.maxDistance !== opts.maxDistance ||
182
+ prevOpts.showFeedback !== opts.showFeedback ||
183
+ prevOpts.showHighlight !== opts.showHighlight) {
184
+ removePointerEvent(entity, getPointerEvent(ty), opts.button);
185
+ setPointerEvent(entity, getPointerEvent(ty), opts);
186
+ }
187
+ }
188
+ else {
189
+ setPointerEvent(entity, getPointerEvent(ty), opts);
190
+ }
191
+ callbacks.set(opts.button, opts);
192
+ }
193
+ for (const button of previous.keys()) {
194
+ if (!callbacks.has(button)) {
195
+ removePointerEvent(entity, getPointerEvent(ty), button);
196
+ }
197
+ }
198
+ getEvent(entity).set(ty, callbacks);
199
+ };
126
200
  };
127
201
  return {
128
202
  removeOnClick(entity) {
@@ -140,18 +214,22 @@ export function createPointerEventsSystem(engine, inputSystem) {
140
214
  removeOnPointerHoverLeave(entity) {
141
215
  removeEvent(entity, EventType.HoverLeave);
142
216
  },
143
- onClick(value, cb) {
144
- const { entity } = value;
145
- const options = getDefaultOpts(value.opts);
146
- // Clear previous event with over feedback included
147
- removeEvent(entity, EventType.Click);
148
- // Set new event
149
- getEvent(entity).set(EventType.Click, { cb, opts: options });
150
- setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
217
+ removeOnPointerDrag(entity) {
218
+ removeEvent(entity, EventType.Drag);
219
+ },
220
+ removeOnPointerDragLocked(entity) {
221
+ removeEvent(entity, EventType.DragLocked);
222
+ },
223
+ removeOnPointerDragEnd(entity) {
224
+ removeEvent(entity, EventType.DragEnd);
151
225
  },
152
- onPointerDown,
153
- onPointerUp,
154
- onPointerHoverEnter,
155
- onPointerHoverLeave
226
+ onClick: onPointerFunction(EventType.Click),
227
+ onPointerDown: onPointerFunction(EventType.Down),
228
+ onPointerUp: onPointerFunction(EventType.Up),
229
+ onPointerHoverEnter: onPointerFunction(EventType.HoverEnter),
230
+ onPointerHoverLeave: onPointerFunction(EventType.HoverLeave),
231
+ onPointerDrag: onPointerFunction(EventType.Drag),
232
+ onPointerDragLocked: onPointerFunction(EventType.DragLocked),
233
+ onPointerDragEnd: onPointerFunction(EventType.DragEnd)
156
234
  };
157
235
  }
@@ -0,0 +1,10 @@
1
+ import { IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine';
2
+ import { PBAvatarEquippedData } from '../generated/pb/decentraland/sdk/components/avatar_equipped_data.gen';
3
+ /**
4
+ * @public
5
+ */
6
+ export type AvatarEquippedDataComponentDefinitionExtended = LastWriteWinElementSetComponentDefinition<AvatarEquippedDataType>;
7
+ export type AvatarEquippedDataType = Omit<PBAvatarEquippedData, 'forceRender'> & {
8
+ forceRender?: string[] | undefined;
9
+ };
10
+ export declare function defineAvatarEquippedDataComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): AvatarEquippedDataComponentDefinitionExtended;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineAvatarEquippedDataComponent = void 0;
4
+ const AvatarEquippedData_gen_1 = require("../generated/AvatarEquippedData.gen");
5
+ function defineAvatarEquippedDataComponent(engine) {
6
+ const patchedSchema = { ...AvatarEquippedData_gen_1.AvatarEquippedDataSchema };
7
+ const origSerialize = patchedSchema.serialize;
8
+ patchedSchema.serialize = (value, builder) => {
9
+ if (value.forceRender === undefined) {
10
+ origSerialize({ forceRender: [], ...value }, builder);
11
+ }
12
+ else {
13
+ origSerialize(value, builder);
14
+ }
15
+ };
16
+ const theComponent = engine.defineComponentFromSchema('core::AvatarEquippedData', patchedSchema);
17
+ return theComponent;
18
+ }
19
+ exports.defineAvatarEquippedDataComponent = defineAvatarEquippedDataComponent;
@@ -0,0 +1,10 @@
1
+ import { IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine';
2
+ import { PBAvatarShape } from '../generated/pb/decentraland/sdk/components/avatar_shape.gen';
3
+ /**
4
+ * @public
5
+ */
6
+ export type AvatarShapeComponentDefinitionExtended = LastWriteWinElementSetComponentDefinition<AvatarShapeType>;
7
+ export type AvatarShapeType = Omit<PBAvatarShape, 'forceRender'> & {
8
+ forceRender?: string[] | undefined;
9
+ };
10
+ export declare function defineAvatarShapeComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): AvatarShapeComponentDefinitionExtended;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineAvatarShapeComponent = void 0;
4
+ const AvatarShape_gen_1 = require("../generated/AvatarShape.gen");
5
+ function defineAvatarShapeComponent(engine) {
6
+ const patchedSchema = { ...AvatarShape_gen_1.AvatarShapeSchema };
7
+ const origSerialize = patchedSchema.serialize;
8
+ patchedSchema.serialize = (value, builder) => {
9
+ if (value.forceRender === undefined) {
10
+ origSerialize({ forceRender: [], ...value }, builder);
11
+ }
12
+ else {
13
+ origSerialize(value, builder);
14
+ }
15
+ };
16
+ const theComponent = engine.defineComponentFromSchema('core::AvatarShape', patchedSchema);
17
+ return theComponent;
18
+ }
19
+ exports.defineAvatarShapeComponent = defineAvatarShapeComponent;
@@ -34,5 +34,13 @@ 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;
37
45
  }
38
46
  export declare function defineMeshColliderComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): MeshColliderComponentDefinitionExtended;
@@ -37,6 +37,12 @@ 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
+ });
40
46
  }
41
47
  };
42
48
  }
@@ -32,5 +32,13 @@ 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;
35
43
  }
36
44
  export declare function defineMeshRendererComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): MeshRendererComponentDefinitionExtended;
@@ -25,6 +25,11 @@ 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
+ });
28
33
  }
29
34
  };
30
35
  }
@@ -1,6 +1,5 @@
1
- import { Entity, IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine';
2
- import { Quaternion, Vector2, Vector3 } from '../generated/pb/decentraland/common/vectors.gen';
3
- import { EasingFunction, Move, MoveContinuous, PBTween, Rotate, RotateContinuous, Scale, TextureMove, TextureMoveContinuous, TextureMovementType } from '../generated/index.gen';
1
+ import { IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine';
2
+ import { PBTween, Move, Rotate, Scale, TextureMove } from '../generated/index.gen';
4
3
  /**
5
4
  * @public
6
5
  */
@@ -10,29 +9,17 @@ export interface TweenHelper {
10
9
  */
11
10
  Move: (move: Move) => PBTween['mode'];
12
11
  /**
13
- * @returns a move-continuous mode tween
14
- */
15
- MoveContinuous: (move: MoveContinuous) => PBTween['mode'];
16
- /**
17
- * @returns a rotate mode tween
12
+ * @returns a move mode tween
18
13
  */
19
14
  Rotate: (rotate: Rotate) => PBTween['mode'];
20
15
  /**
21
- * @returns a rotate-continuous mode tween
22
- */
23
- RotateContinuous: (rotate: RotateContinuous) => PBTween['mode'];
24
- /**
25
- * @returns a scale mode tween
16
+ * @returns a move mode tween
26
17
  */
27
18
  Scale: (scale: Scale) => PBTween['mode'];
28
19
  /**
29
- * @returns a texture-move mode tween
20
+ * @returns a texture move mode tween
30
21
  */
31
22
  TextureMove: (textureMove: TextureMove) => PBTween['mode'];
32
- /**
33
- * @returns a texture-move-continuous mode tween
34
- */
35
- TextureMoveContinuous: (textureMove: TextureMoveContinuous) => PBTween['mode'];
36
23
  }
37
24
  /**
38
25
  * @public
@@ -42,81 +29,5 @@ export interface TweenComponentDefinitionExtended extends LastWriteWinElementSet
42
29
  * Texture helpers with constructor
43
30
  */
44
31
  Mode: TweenHelper;
45
- /**
46
- * @public
47
- *
48
- * Creates or replaces a move tween component that animates an entity's position from start to end
49
- * @param entity - entity to apply the tween to
50
- * @param start - starting position vector
51
- * @param end - ending position vector
52
- * @param duration - duration of the tween in milliseconds
53
- * @param easingFunction - easing function to use (defaults to EF_LINEAR)
54
- */
55
- setMove(entity: Entity, start: Vector3, end: Vector3, duration: number, easingFunction?: EasingFunction): void;
56
- /**
57
- * @public
58
- *
59
- * Creates or replaces a scale tween component that animates an entity's scale from start to end
60
- * @param entity - entity to apply the tween to
61
- * @param start - starting scale vector
62
- * @param end - ending scale vector
63
- * @param duration - duration of the tween in milliseconds
64
- * @param easingFunction - easing function to use (defaults to EF_LINEAR)
65
- */
66
- setScale(entity: Entity, start: Vector3, end: Vector3, duration: number, easingFunction?: EasingFunction): void;
67
- /**
68
- * @public
69
- *
70
- * Creates or replaces a rotation tween component that animates an entity's rotation from start to end
71
- * @param entity - entity to apply the tween to
72
- * @param start - starting rotation quaternion
73
- * @param end - ending rotation quaternion
74
- * @param duration - duration of the tween in milliseconds
75
- * @param easingFunction - easing function to use (defaults to EF_LINEAR)
76
- */
77
- setRotate(entity: Entity, start: Quaternion, end: Quaternion, duration: number, easingFunction?: EasingFunction): void;
78
- /**
79
- * @public
80
- *
81
- * Creates or replaces a texture move tween component that animates texture UV coordinates from start to end
82
- * @param entity - entity to apply the tween to
83
- * @param start - starting UV coordinates
84
- * @param end - ending UV coordinates
85
- * @param duration - duration of the tween in milliseconds
86
- * @param movementType - type of texture movement (defaults to TMT_OFFSET)
87
- * @param easingFunction - easing function to use (defaults to EF_LINEAR)
88
- */
89
- setTextureMove(entity: Entity, start: Vector2, end: Vector2, duration: number, movementType?: TextureMovementType, easingFunction?: EasingFunction): void;
90
- /**
91
- * @public
92
- *
93
- * Creates or replaces a continuous move tween component that moves an entity continuously in a direction
94
- * @param entity - entity to apply the tween to
95
- * @param direction - direction vector to move towards
96
- * @param speed - speed of movement per second
97
- * @param duration - duration of the tween in milliseconds (defaults to 0 for infinite)
98
- */
99
- setMoveContinuous(entity: Entity, direction: Vector3, speed: number, duration?: number): void;
100
- /**
101
- * @public
102
- *
103
- * Creates or replaces a continuous rotation tween component that rotates an entity continuously
104
- * @param entity - entity to apply the tween to
105
- * @param direction - rotation direction quaternion
106
- * @param speed - speed of rotation per second
107
- * @param duration - duration of the tween in milliseconds (defaults to 0 for infinite)
108
- */
109
- setRotateContinuous(entity: Entity, direction: Quaternion, speed: number, duration?: number): void;
110
- /**
111
- * @public
112
- *
113
- * Creates or replaces a continuous texture move tween component that moves texture UV coordinates continuously
114
- * @param entity - entity to apply the tween to
115
- * @param direction - direction vector for UV movement
116
- * @param speed - speed of UV movement per second
117
- * @param movementType - type of texture movement (defaults to TMT_OFFSET)
118
- * @param duration - duration of the tween in milliseconds (defaults to 0 for infinite)
119
- */
120
- setTextureMoveContinuous(entity: Entity, direction: Vector2, speed: number, movementType?: TextureMovementType, duration?: number): void;
121
32
  }
122
33
  export declare function defineTweenComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): TweenComponentDefinitionExtended;