@dcl/ecs 7.13.1-19516109426.commit-e1e79aa → 7.14.0
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.
- package/dist/components/extended/MeshCollider.d.ts +0 -8
- package/dist/components/extended/MeshCollider.js +0 -6
- package/dist/components/extended/MeshRenderer.d.ts +0 -8
- package/dist/components/extended/MeshRenderer.js +0 -5
- package/dist/components/generated/component-names.gen.js +0 -8
- package/dist/components/generated/global.gen.d.ts +0 -16
- package/dist/components/generated/global.gen.js +0 -8
- package/dist/components/generated/index.gen.d.ts +0 -32
- package/dist/components/generated/index.gen.js +0 -40
- package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
- package/dist/components/generated/pb/decentraland/common/texture.gen.js +0 -65
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +0 -43
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +1 -151
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +1 -119
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +1 -4
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +0 -3
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +1 -57
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +0 -20
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +0 -56
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +0 -56
- package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
- package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +0 -90
- package/dist/components/index.d.ts +7 -11
- package/dist/components/index.js +5 -11
- package/dist/components/types.d.ts +0 -2
- package/dist/engine/input.d.ts +0 -6
- package/dist/engine/input.js +1 -7
- package/dist/runtime/initialization/index.d.ts +1 -1
- package/dist/runtime/initialization/index.js +1 -1
- package/dist/systems/events.d.ts +1 -100
- package/dist/systems/events.js +65 -143
- package/dist/systems/tween.js +88 -63
- package/dist-cjs/components/extended/MeshCollider.d.ts +0 -8
- package/dist-cjs/components/extended/MeshCollider.js +0 -6
- package/dist-cjs/components/extended/MeshRenderer.d.ts +0 -8
- package/dist-cjs/components/extended/MeshRenderer.js +0 -5
- package/dist-cjs/components/generated/component-names.gen.js +0 -8
- package/dist-cjs/components/generated/global.gen.d.ts +0 -16
- package/dist-cjs/components/generated/global.gen.js +1 -10
- package/dist-cjs/components/generated/index.gen.d.ts +0 -32
- package/dist-cjs/components/generated/index.gen.js +2 -50
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +1 -66
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +0 -43
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +2 -152
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +2 -120
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +1 -4
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +0 -3
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +2 -58
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +0 -20
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +1 -57
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +1 -57
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +1 -91
- package/dist-cjs/components/index.d.ts +7 -11
- package/dist-cjs/components/index.js +7 -15
- package/dist-cjs/components/types.d.ts +0 -2
- package/dist-cjs/engine/input.d.ts +0 -6
- package/dist-cjs/engine/input.js +1 -7
- package/dist-cjs/runtime/initialization/index.d.ts +1 -1
- package/dist-cjs/runtime/initialization/index.js +1 -1
- package/dist-cjs/systems/events.d.ts +1 -100
- package/dist-cjs/systems/events.js +65 -143
- package/dist-cjs/systems/tween.js +88 -63
- package/package.json +2 -2
- package/dist/components/extended/AvatarEquippedData.d.ts +0 -10
- package/dist/components/extended/AvatarEquippedData.js +0 -15
- package/dist/components/extended/AvatarShape.d.ts +0 -10
- package/dist/components/extended/AvatarShape.js +0 -15
- package/dist/components/generated/CameraLayer.gen.d.ts +0 -1
- package/dist/components/generated/CameraLayer.gen.js +0 -25
- package/dist/components/generated/CameraLayers.gen.d.ts +0 -1
- package/dist/components/generated/CameraLayers.gen.js +0 -25
- package/dist/components/generated/GlobalLight.gen.d.ts +0 -1
- package/dist/components/generated/GlobalLight.gen.js +0 -25
- package/dist/components/generated/GltfNode.gen.d.ts +0 -1
- package/dist/components/generated/GltfNode.gen.js +0 -25
- package/dist/components/generated/GltfNodeState.gen.d.ts +0 -1
- package/dist/components/generated/GltfNodeState.gen.js +0 -25
- package/dist/components/generated/TextureCamera.gen.d.ts +0 -1
- package/dist/components/generated/TextureCamera.gen.js +0 -25
- package/dist/components/generated/UiCanvas.gen.d.ts +0 -1
- package/dist/components/generated/UiCanvas.gen.js +0 -25
- package/dist/components/generated/UiScrollResult.gen.d.ts +0 -1
- package/dist/components/generated/UiScrollResult.gen.js +0 -25
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -104
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -50
- package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
- package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -61
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -41
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -59
- package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
- package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -191
- package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
- package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -60
- package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
- package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -42
- package/dist-cjs/components/extended/AvatarEquippedData.d.ts +0 -10
- package/dist-cjs/components/extended/AvatarEquippedData.js +0 -19
- package/dist-cjs/components/extended/AvatarShape.d.ts +0 -10
- package/dist-cjs/components/extended/AvatarShape.js +0 -19
- package/dist-cjs/components/generated/CameraLayer.gen.d.ts +0 -1
- package/dist-cjs/components/generated/CameraLayer.gen.js +0 -28
- package/dist-cjs/components/generated/CameraLayers.gen.d.ts +0 -1
- package/dist-cjs/components/generated/CameraLayers.gen.js +0 -28
- package/dist-cjs/components/generated/GlobalLight.gen.d.ts +0 -1
- package/dist-cjs/components/generated/GlobalLight.gen.js +0 -28
- package/dist-cjs/components/generated/GltfNode.gen.d.ts +0 -1
- package/dist-cjs/components/generated/GltfNode.gen.js +0 -28
- package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +0 -1
- package/dist-cjs/components/generated/GltfNodeState.gen.js +0 -28
- package/dist-cjs/components/generated/TextureCamera.gen.d.ts +0 -1
- package/dist-cjs/components/generated/TextureCamera.gen.js +0 -28
- package/dist-cjs/components/generated/UiCanvas.gen.d.ts +0 -1
- package/dist-cjs/components/generated/UiCanvas.gen.js +0 -28
- package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +0 -1
- package/dist-cjs/components/generated/UiScrollResult.gen.js +0 -28
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -110
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -56
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -67
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -47
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -65
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -197
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -66
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -48
|
@@ -45,9 +45,6 @@ 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";
|
|
51
48
|
})(EventType || (EventType = {}));
|
|
52
49
|
const eventsMap = new Map();
|
|
53
50
|
function getEvent(entity) {
|
|
@@ -82,148 +79,77 @@ function createPointerEventsSystem(engine, inputSystem) {
|
|
|
82
79
|
else if (eventType === EventType.HoverEnter) {
|
|
83
80
|
return 2 /* PointerEventType.PET_HOVER_ENTER */;
|
|
84
81
|
}
|
|
85
|
-
else if (eventType === EventType.Drag) {
|
|
86
|
-
return 5 /* PointerEventType.PET_DRAG */;
|
|
87
|
-
}
|
|
88
|
-
else if (eventType === EventType.DragLocked) {
|
|
89
|
-
return 4 /* PointerEventType.PET_DRAG_LOCKED */;
|
|
90
|
-
}
|
|
91
|
-
else if (eventType === EventType.DragEnd) {
|
|
92
|
-
return 6 /* PointerEventType.PET_DRAG_END */;
|
|
93
|
-
}
|
|
94
82
|
return 1 /* PointerEventType.PET_DOWN */;
|
|
95
83
|
}
|
|
96
|
-
function getEventType(pet) {
|
|
97
|
-
if (pet === 0 /* PointerEventType.PET_UP */) {
|
|
98
|
-
return EventType.Up;
|
|
99
|
-
}
|
|
100
|
-
else if (pet === 2 /* PointerEventType.PET_HOVER_ENTER */) {
|
|
101
|
-
return EventType.HoverEnter;
|
|
102
|
-
}
|
|
103
|
-
else if (pet === 3 /* PointerEventType.PET_HOVER_LEAVE */) {
|
|
104
|
-
return EventType.HoverLeave;
|
|
105
|
-
}
|
|
106
|
-
else if (pet === 5 /* PointerEventType.PET_DRAG */) {
|
|
107
|
-
return EventType.Drag;
|
|
108
|
-
}
|
|
109
|
-
else if (pet === 4 /* PointerEventType.PET_DRAG_LOCKED */) {
|
|
110
|
-
return EventType.DragLocked;
|
|
111
|
-
}
|
|
112
|
-
else if (pet === 6 /* PointerEventType.PET_DRAG_END */) {
|
|
113
|
-
return EventType.DragEnd;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
return EventType.Down;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
84
|
function removeEvent(entity, type) {
|
|
120
85
|
const event = getEvent(entity);
|
|
121
|
-
const
|
|
122
|
-
if (
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
for (const button of pointerEventList.keys()) {
|
|
126
|
-
removePointerEvent(entity, getPointerEvent(type), button);
|
|
86
|
+
const pointerEvent = event.get(type);
|
|
87
|
+
if (pointerEvent?.opts.hoverText) {
|
|
88
|
+
removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts.button);
|
|
127
89
|
}
|
|
128
90
|
event.delete(type);
|
|
129
91
|
}
|
|
130
92
|
engine.addSystem(function EventSystem() {
|
|
131
|
-
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
for (const entity of eventsMap.keys()) {
|
|
93
|
+
for (const [entity, event] of eventsMap) {
|
|
135
94
|
if (engine.getEntityState(entity) === entity_1.EntityState.Removed) {
|
|
136
95
|
eventsMap.delete(entity);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
for (const command of inputSystem.getInputCommands()) {
|
|
140
|
-
const entity = command.hit?.entityId;
|
|
141
|
-
if (entity === undefined) {
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
const entityMap = eventsMap.get(entity);
|
|
145
|
-
if (entityMap === undefined) {
|
|
146
96
|
continue;
|
|
147
97
|
}
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
98
|
+
for (const [eventType, { cb, opts }] of event) {
|
|
99
|
+
if (eventType === EventType.Click) {
|
|
100
|
+
const command = inputSystem.getClick(opts.button, entity);
|
|
101
|
+
if (command)
|
|
102
|
+
(0, invariant_1.checkNotThenable)(cb(command.up), 'Click event returned a thenable. Only synchronous functions are allowed');
|
|
153
103
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const clickMap = entityMap.get(EventType.Click);
|
|
162
|
-
if (clickMap) {
|
|
163
|
-
const data = clickMap.get(command.button);
|
|
164
|
-
if (data && inputSystem.getClick(command.button, entity)) {
|
|
165
|
-
(0, invariant_1.checkNotThenable)(data.cb(command), 'Click event returned a thenable. Only synchronous functions are allowed');
|
|
166
|
-
}
|
|
167
|
-
const anyData = clickMap.get(3 /* InputAction.IA_ANY */);
|
|
168
|
-
if (anyData && inputSystem.getClick(command.button, entity)) {
|
|
169
|
-
(0, invariant_1.checkNotThenable)(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
|
|
104
|
+
if (eventType === EventType.Down ||
|
|
105
|
+
eventType === EventType.Up ||
|
|
106
|
+
eventType === EventType.HoverEnter ||
|
|
107
|
+
eventType === EventType.HoverLeave) {
|
|
108
|
+
const command = inputSystem.getInputCommand(opts.button, getPointerEvent(eventType), entity);
|
|
109
|
+
if (command) {
|
|
110
|
+
(0, invariant_1.checkNotThenable)(cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
|
|
170
111
|
}
|
|
171
112
|
}
|
|
172
113
|
}
|
|
173
114
|
}
|
|
174
115
|
});
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
setPointerEvent(entity, getPointerEvent(ty), opts);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
setPointerEvent(entity, getPointerEvent(ty), opts);
|
|
217
|
-
}
|
|
218
|
-
callbacks.set(opts.button, opts);
|
|
219
|
-
}
|
|
220
|
-
for (const button of previous.keys()) {
|
|
221
|
-
if (!callbacks.has(button)) {
|
|
222
|
-
removePointerEvent(entity, getPointerEvent(ty), button);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
getEvent(entity).set(ty, callbacks);
|
|
226
|
-
};
|
|
116
|
+
const onPointerDown = (...args) => {
|
|
117
|
+
const [data, cb, maybeOpts] = args;
|
|
118
|
+
if (typeof data === 'number') {
|
|
119
|
+
return onPointerDown({ entity: data, opts: maybeOpts ?? {} }, cb);
|
|
120
|
+
}
|
|
121
|
+
const { entity, opts } = data;
|
|
122
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
123
|
+
removeEvent(entity, EventType.Down);
|
|
124
|
+
getEvent(entity).set(EventType.Down, { cb, opts: options });
|
|
125
|
+
setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
|
|
126
|
+
};
|
|
127
|
+
const onPointerUp = (...args) => {
|
|
128
|
+
const [data, cb, maybeOpts] = args;
|
|
129
|
+
if (typeof data === 'number') {
|
|
130
|
+
return onPointerUp({ entity: data, opts: maybeOpts ?? {} }, cb);
|
|
131
|
+
}
|
|
132
|
+
const { entity, opts } = data;
|
|
133
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
134
|
+
removeEvent(entity, EventType.Up);
|
|
135
|
+
getEvent(entity).set(EventType.Up, { cb, opts: options });
|
|
136
|
+
setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options);
|
|
137
|
+
};
|
|
138
|
+
const onPointerHoverEnter = (...args) => {
|
|
139
|
+
const [data, cb] = args;
|
|
140
|
+
const { entity, opts } = data;
|
|
141
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
142
|
+
removeEvent(entity, EventType.HoverEnter);
|
|
143
|
+
getEvent(entity).set(EventType.HoverEnter, { cb, opts: options });
|
|
144
|
+
setPointerEvent(entity, 2 /* PointerEventType.PET_HOVER_ENTER */, options);
|
|
145
|
+
};
|
|
146
|
+
const onPointerHoverLeave = (...args) => {
|
|
147
|
+
const [data, cb] = args;
|
|
148
|
+
const { entity, opts } = data;
|
|
149
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
150
|
+
removeEvent(entity, EventType.HoverLeave);
|
|
151
|
+
getEvent(entity).set(EventType.HoverLeave, { cb, opts: options });
|
|
152
|
+
setPointerEvent(entity, 3 /* PointerEventType.PET_HOVER_LEAVE */, options);
|
|
227
153
|
};
|
|
228
154
|
return {
|
|
229
155
|
removeOnClick(entity) {
|
|
@@ -241,23 +167,19 @@ function createPointerEventsSystem(engine, inputSystem) {
|
|
|
241
167
|
removeOnPointerHoverLeave(entity) {
|
|
242
168
|
removeEvent(entity, EventType.HoverLeave);
|
|
243
169
|
},
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
removeEvent(entity, EventType.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
170
|
+
onClick(value, cb) {
|
|
171
|
+
const { entity } = value;
|
|
172
|
+
const options = (0, exports.getDefaultOpts)(value.opts);
|
|
173
|
+
// Clear previous event with over feedback included
|
|
174
|
+
removeEvent(entity, EventType.Click);
|
|
175
|
+
// Set new event
|
|
176
|
+
getEvent(entity).set(EventType.Click, { cb, opts: options });
|
|
177
|
+
setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
|
|
252
178
|
},
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
onPointerHoverLeave: onPointerFunction(EventType.HoverLeave),
|
|
258
|
-
onPointerDrag: onPointerFunction(EventType.Drag),
|
|
259
|
-
onPointerDragLocked: onPointerFunction(EventType.DragLocked),
|
|
260
|
-
onPointerDragEnd: onPointerFunction(EventType.DragEnd)
|
|
179
|
+
onPointerDown,
|
|
180
|
+
onPointerUp,
|
|
181
|
+
onPointerHoverEnter,
|
|
182
|
+
onPointerHoverLeave
|
|
261
183
|
};
|
|
262
184
|
}
|
|
263
185
|
exports.createPointerEventsSystem = createPointerEventsSystem;
|
|
@@ -47,16 +47,16 @@ function createTweenSystem(engine) {
|
|
|
47
47
|
const tweenState = TweenState.getOrNull(entity);
|
|
48
48
|
const tween = Tween.getOrNull(entity);
|
|
49
49
|
const tweenCache = cache.get(entity);
|
|
50
|
-
if (!tweenState || !tween)
|
|
50
|
+
if (!tweenState || !tween || !tweenCache)
|
|
51
51
|
return false;
|
|
52
52
|
/* istanbul ignore next */
|
|
53
53
|
if (
|
|
54
54
|
// Renderer notified that the tween is completed
|
|
55
|
-
(
|
|
55
|
+
// Only consider it completed if the tween hasn't changed this frame (to avoid false positives after YOYO/sequence processing)
|
|
56
|
+
((tweenState.state === 1 /* TweenStateStatus.TS_COMPLETED */ && !tweenCache.changed) ||
|
|
57
|
+
(tweenChanged(entity) && !tweenCache.changed)) &&
|
|
56
58
|
// Avoid sending isCompleted multiple times
|
|
57
|
-
!tweenCache
|
|
58
|
-
// Amount of frames needed to consider a tween completed
|
|
59
|
-
(tweenCache?.frames ?? 0) > 2) {
|
|
59
|
+
!tweenCache.completed) {
|
|
60
60
|
return true;
|
|
61
61
|
}
|
|
62
62
|
return false;
|
|
@@ -68,86 +68,111 @@ function createTweenSystem(engine) {
|
|
|
68
68
|
if ((currentTween && !prevTween) || (!currentTween && prevTween)) {
|
|
69
69
|
return true;
|
|
70
70
|
}
|
|
71
|
+
if (!currentTween || !prevTween)
|
|
72
|
+
return false;
|
|
71
73
|
const currentBuff = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
72
74
|
Tween.schema.serialize(currentTween, currentBuff);
|
|
73
|
-
const
|
|
74
|
-
return
|
|
75
|
+
const compareResult = (0, utils_1.dataCompare)(currentBuff.toBinary(), prevTween);
|
|
76
|
+
return compareResult !== 0;
|
|
75
77
|
}
|
|
76
|
-
|
|
77
|
-
// Logic for sequence tweens
|
|
78
|
+
// System to manage cache (needed for tweenSystem.tweenCompleted() to work)
|
|
78
79
|
engine.addSystem(() => {
|
|
79
|
-
for (const restart of restartTweens) {
|
|
80
|
-
restart();
|
|
81
|
-
}
|
|
82
|
-
restartTweens.length = 0;
|
|
83
80
|
for (const [entity, tween] of engine.getEntitiesWith(Tween)) {
|
|
84
81
|
if (tweenChanged(entity)) {
|
|
85
82
|
const buffer = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
86
83
|
Tween.schema.serialize(tween, buffer);
|
|
87
84
|
cache.set(entity, {
|
|
88
85
|
tween: buffer.toBinary(),
|
|
89
|
-
frames: 0,
|
|
90
86
|
completed: false,
|
|
91
87
|
changed: true
|
|
92
88
|
});
|
|
93
89
|
continue;
|
|
94
90
|
}
|
|
95
91
|
const tweenCache = cache.get(entity);
|
|
96
|
-
tweenCache
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// set the tween completed to avoid calling this again for the same tween
|
|
102
|
-
tweenCache.completed = true;
|
|
103
|
-
const tweenSequence = TweenSequence.getOrNull(entity);
|
|
104
|
-
if (!tweenSequence)
|
|
105
|
-
continue;
|
|
106
|
-
const { sequence } = tweenSequence;
|
|
107
|
-
if (sequence && sequence.length) {
|
|
108
|
-
const [nextTweenSequence, ...otherTweens] = sequence;
|
|
109
|
-
Tween.createOrReplace(entity, nextTweenSequence);
|
|
110
|
-
const mutableTweenHelper = TweenSequence.getMutable(entity);
|
|
111
|
-
mutableTweenHelper.sequence = otherTweens;
|
|
112
|
-
if (tweenSequence.loop === 0 /* TweenLoop.TL_RESTART */) {
|
|
113
|
-
mutableTweenHelper.sequence.push(tween);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
else if (tweenSequence.loop === 1 /* TweenLoop.TL_YOYO */) {
|
|
117
|
-
Tween.createOrReplace(entity, backwardsTween(tween));
|
|
118
|
-
}
|
|
119
|
-
else if (tweenSequence.loop === 0 /* TweenLoop.TL_RESTART */) {
|
|
120
|
-
Tween.deleteFrom(entity);
|
|
121
|
-
cache.delete(entity);
|
|
122
|
-
restartTweens.push(() => {
|
|
123
|
-
Tween.createOrReplace(entity, tween);
|
|
124
|
-
});
|
|
92
|
+
if (tweenCache) {
|
|
93
|
+
tweenCache.changed = false;
|
|
94
|
+
if (isCompleted(entity)) {
|
|
95
|
+
// set the tween completed to avoid calling this again for the same tween
|
|
96
|
+
tweenCache.completed = true;
|
|
125
97
|
}
|
|
126
98
|
}
|
|
127
99
|
}
|
|
128
100
|
}, Number.NEGATIVE_INFINITY);
|
|
129
|
-
function
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
101
|
+
function initializeTweenSequenceSystem() {
|
|
102
|
+
const restartTweens = [];
|
|
103
|
+
function backwardsTween(tween) {
|
|
104
|
+
if (tween.mode?.$case === 'move' && tween.mode.move) {
|
|
105
|
+
return { ...tween, mode: { ...tween.mode, move: { start: tween.mode.move.end, end: tween.mode.move.start } } };
|
|
106
|
+
}
|
|
107
|
+
if (tween.mode?.$case === 'rotate' && tween.mode.rotate) {
|
|
108
|
+
return {
|
|
109
|
+
...tween,
|
|
110
|
+
mode: { ...tween.mode, rotate: { start: tween.mode.rotate.end, end: tween.mode.rotate.start } }
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
if (tween.mode?.$case === 'scale' && tween.mode.scale) {
|
|
114
|
+
return { ...tween, mode: { ...tween.mode, scale: { start: tween.mode.scale.end, end: tween.mode.scale.start } } };
|
|
115
|
+
}
|
|
116
|
+
if (tween.mode?.$case === 'textureMove' && tween.mode.textureMove) {
|
|
117
|
+
return {
|
|
118
|
+
...tween,
|
|
119
|
+
mode: { ...tween.mode, textureMove: { start: tween.mode.textureMove.end, end: tween.mode.textureMove.start } }
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/* istanbul ignore next */
|
|
123
|
+
throw new Error('Invalid tween');
|
|
147
124
|
}
|
|
148
|
-
|
|
149
|
-
|
|
125
|
+
// Logic for sequence tweens
|
|
126
|
+
engine.addSystem(() => {
|
|
127
|
+
for (const restart of restartTweens) {
|
|
128
|
+
restart();
|
|
129
|
+
}
|
|
130
|
+
restartTweens.length = 0;
|
|
131
|
+
for (const [entity, tween] of engine.getEntitiesWith(Tween)) {
|
|
132
|
+
const tweenCache = cache.get(entity);
|
|
133
|
+
if (!tweenCache)
|
|
134
|
+
continue;
|
|
135
|
+
// Only process tween sequences if the tween is completed
|
|
136
|
+
if (tweenCache.completed) {
|
|
137
|
+
const tweenSequence = TweenSequence.getOrNull(entity);
|
|
138
|
+
if (!tweenSequence)
|
|
139
|
+
continue;
|
|
140
|
+
const { sequence } = tweenSequence;
|
|
141
|
+
if (sequence && sequence.length) {
|
|
142
|
+
const [nextTweenSequence, ...otherTweens] = sequence;
|
|
143
|
+
Tween.createOrReplace(entity, nextTweenSequence);
|
|
144
|
+
const mutableTweenHelper = TweenSequence.getMutable(entity);
|
|
145
|
+
mutableTweenHelper.sequence = otherTweens;
|
|
146
|
+
if (tweenSequence.loop === 0 /* TweenLoop.TL_RESTART */) {
|
|
147
|
+
mutableTweenHelper.sequence.push(tween);
|
|
148
|
+
}
|
|
149
|
+
// Reset completed flag for the next tween in sequence
|
|
150
|
+
// Mark as changed so the cache system will detect the change and reset the cache properly
|
|
151
|
+
tweenCache.completed = false;
|
|
152
|
+
tweenCache.changed = true;
|
|
153
|
+
}
|
|
154
|
+
else if (tweenSequence.loop === 1 /* TweenLoop.TL_YOYO */) {
|
|
155
|
+
Tween.createOrReplace(entity, backwardsTween(tween));
|
|
156
|
+
// Reset completed flag for the backwards tween
|
|
157
|
+
// Mark as changed so the cache system will detect the change and reset the cache properly
|
|
158
|
+
tweenCache.completed = false;
|
|
159
|
+
tweenCache.changed = true;
|
|
160
|
+
}
|
|
161
|
+
else if (tweenSequence.loop === 0 /* TweenLoop.TL_RESTART */) {
|
|
162
|
+
Tween.deleteFrom(entity);
|
|
163
|
+
cache.delete(entity);
|
|
164
|
+
restartTweens.push(() => {
|
|
165
|
+
Tween.createOrReplace(entity, tween);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}, Number.NEGATIVE_INFINITY);
|
|
150
171
|
}
|
|
172
|
+
// Some Explorers may not inject the flag and TweenSequence logic must be enabled in that case
|
|
173
|
+
const enableTweenSequenceLogic = globalThis.ENABLE_SDK_TWEEN_SEQUENCE;
|
|
174
|
+
if (enableTweenSequenceLogic !== false)
|
|
175
|
+
initializeTweenSequenceSystem();
|
|
151
176
|
const tweenSystem = {
|
|
152
177
|
// This event is fired only once per tween
|
|
153
178
|
tweenCompleted: isCompleted
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/ecs",
|
|
3
3
|
"description": "Decentraland ECS",
|
|
4
|
-
"version": "7.
|
|
4
|
+
"version": "7.14.0",
|
|
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": "
|
|
36
|
+
"commit": "e7fb1688fcaed2c8efcc91f36e1b9f07104af1e8"
|
|
37
37
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
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;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { AvatarEquippedDataSchema } from '../generated/AvatarEquippedData.gen';
|
|
2
|
-
export function defineAvatarEquippedDataComponent(engine) {
|
|
3
|
-
const patchedSchema = { ...AvatarEquippedDataSchema };
|
|
4
|
-
const origSerialize = patchedSchema.serialize;
|
|
5
|
-
patchedSchema.serialize = (value, builder) => {
|
|
6
|
-
if (value.forceRender === undefined) {
|
|
7
|
-
origSerialize({ forceRender: [], ...value }, builder);
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
origSerialize(value, builder);
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
const theComponent = engine.defineComponentFromSchema('core::AvatarEquippedData', patchedSchema);
|
|
14
|
-
return theComponent;
|
|
15
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
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;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { AvatarShapeSchema } from '../generated/AvatarShape.gen';
|
|
2
|
-
export function defineAvatarShapeComponent(engine) {
|
|
3
|
-
const patchedSchema = { ...AvatarShapeSchema };
|
|
4
|
-
const origSerialize = patchedSchema.serialize;
|
|
5
|
-
patchedSchema.serialize = (value, builder) => {
|
|
6
|
-
if (value.forceRender === undefined) {
|
|
7
|
-
origSerialize({ forceRender: [], ...value }, builder);
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
origSerialize(value, builder);
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
const theComponent = engine.defineComponentFromSchema('core::AvatarShape', patchedSchema);
|
|
14
|
-
return theComponent;
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { PBCameraLayer } from './pb/decentraland/sdk/components/camera_layer.gen';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export const CameraLayerSchema = {
|
|
6
|
-
COMPONENT_ID: 1211,
|
|
7
|
-
serialize(value, builder) {
|
|
8
|
-
const writer = PBCameraLayer.encode(value);
|
|
9
|
-
const buffer = new Uint8Array(writer.finish(), 0, writer.len);
|
|
10
|
-
builder.writeBuffer(buffer, false);
|
|
11
|
-
},
|
|
12
|
-
deserialize(reader) {
|
|
13
|
-
return PBCameraLayer.decode(reader.buffer(), reader.remainingBytes());
|
|
14
|
-
},
|
|
15
|
-
create() {
|
|
16
|
-
// TODO: this is a hack.
|
|
17
|
-
return PBCameraLayer.decode(new Uint8Array());
|
|
18
|
-
},
|
|
19
|
-
jsonSchema: {
|
|
20
|
-
type: "object",
|
|
21
|
-
properties: {},
|
|
22
|
-
serializationType: "protocol-buffer",
|
|
23
|
-
protocolBuffer: "PBCameraLayer"
|
|
24
|
-
}
|
|
25
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { PBCameraLayers } from './pb/decentraland/sdk/components/camera_layers.gen';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export const CameraLayersSchema = {
|
|
6
|
-
COMPONENT_ID: 1208,
|
|
7
|
-
serialize(value, builder) {
|
|
8
|
-
const writer = PBCameraLayers.encode(value);
|
|
9
|
-
const buffer = new Uint8Array(writer.finish(), 0, writer.len);
|
|
10
|
-
builder.writeBuffer(buffer, false);
|
|
11
|
-
},
|
|
12
|
-
deserialize(reader) {
|
|
13
|
-
return PBCameraLayers.decode(reader.buffer(), reader.remainingBytes());
|
|
14
|
-
},
|
|
15
|
-
create() {
|
|
16
|
-
// TODO: this is a hack.
|
|
17
|
-
return PBCameraLayers.decode(new Uint8Array());
|
|
18
|
-
},
|
|
19
|
-
jsonSchema: {
|
|
20
|
-
type: "object",
|
|
21
|
-
properties: {},
|
|
22
|
-
serializationType: "protocol-buffer",
|
|
23
|
-
protocolBuffer: "PBCameraLayers"
|
|
24
|
-
}
|
|
25
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { PBGlobalLight } from './pb/decentraland/sdk/components/global_light.gen';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export const GlobalLightSchema = {
|
|
6
|
-
COMPONENT_ID: 1206,
|
|
7
|
-
serialize(value, builder) {
|
|
8
|
-
const writer = PBGlobalLight.encode(value);
|
|
9
|
-
const buffer = new Uint8Array(writer.finish(), 0, writer.len);
|
|
10
|
-
builder.writeBuffer(buffer, false);
|
|
11
|
-
},
|
|
12
|
-
deserialize(reader) {
|
|
13
|
-
return PBGlobalLight.decode(reader.buffer(), reader.remainingBytes());
|
|
14
|
-
},
|
|
15
|
-
create() {
|
|
16
|
-
// TODO: this is a hack.
|
|
17
|
-
return PBGlobalLight.decode(new Uint8Array());
|
|
18
|
-
},
|
|
19
|
-
jsonSchema: {
|
|
20
|
-
type: "object",
|
|
21
|
-
properties: {},
|
|
22
|
-
serializationType: "protocol-buffer",
|
|
23
|
-
protocolBuffer: "PBGlobalLight"
|
|
24
|
-
}
|
|
25
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { PBGltfNode } from './pb/decentraland/sdk/components/gltf_node.gen';
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
export const GltfNodeSchema = {
|
|
6
|
-
COMPONENT_ID: 1200,
|
|
7
|
-
serialize(value, builder) {
|
|
8
|
-
const writer = PBGltfNode.encode(value);
|
|
9
|
-
const buffer = new Uint8Array(writer.finish(), 0, writer.len);
|
|
10
|
-
builder.writeBuffer(buffer, false);
|
|
11
|
-
},
|
|
12
|
-
deserialize(reader) {
|
|
13
|
-
return PBGltfNode.decode(reader.buffer(), reader.remainingBytes());
|
|
14
|
-
},
|
|
15
|
-
create() {
|
|
16
|
-
// TODO: this is a hack.
|
|
17
|
-
return PBGltfNode.decode(new Uint8Array());
|
|
18
|
-
},
|
|
19
|
-
jsonSchema: {
|
|
20
|
-
type: "object",
|
|
21
|
-
properties: {},
|
|
22
|
-
serializationType: "protocol-buffer",
|
|
23
|
-
protocolBuffer: "PBGltfNode"
|
|
24
|
-
}
|
|
25
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|