@dcl/ecs 7.13.0 → 7.13.1-19516109426.commit-e1e79aa
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/AvatarEquippedData.d.ts +10 -0
- package/dist/components/extended/AvatarEquippedData.js +15 -0
- package/dist/components/extended/AvatarShape.d.ts +10 -0
- package/dist/components/extended/AvatarShape.js +15 -0
- package/dist/components/extended/MeshCollider.d.ts +8 -0
- package/dist/components/extended/MeshCollider.js +6 -0
- package/dist/components/extended/MeshRenderer.d.ts +8 -0
- package/dist/components/extended/MeshRenderer.js +5 -0
- package/dist/components/generated/CameraLayer.gen.d.ts +1 -0
- package/dist/components/generated/CameraLayer.gen.js +25 -0
- package/dist/components/generated/CameraLayers.gen.d.ts +1 -0
- package/dist/components/generated/CameraLayers.gen.js +25 -0
- package/dist/components/generated/GlobalLight.gen.d.ts +1 -0
- package/dist/components/generated/GlobalLight.gen.js +25 -0
- package/dist/components/generated/GltfNode.gen.d.ts +1 -0
- package/dist/components/generated/GltfNode.gen.js +25 -0
- package/dist/components/generated/GltfNodeState.gen.d.ts +1 -0
- package/dist/components/generated/GltfNodeState.gen.js +25 -0
- package/dist/components/generated/TextureCamera.gen.d.ts +1 -0
- package/dist/components/generated/TextureCamera.gen.js +25 -0
- package/dist/components/generated/UiCanvas.gen.d.ts +1 -0
- package/dist/components/generated/UiCanvas.gen.js +25 -0
- package/dist/components/generated/UiScrollResult.gen.d.ts +1 -0
- package/dist/components/generated/UiScrollResult.gen.js +25 -0
- package/dist/components/generated/component-names.gen.js +8 -0
- package/dist/components/generated/global.gen.d.ts +16 -0
- package/dist/components/generated/global.gen.js +8 -0
- package/dist/components/generated/index.gen.d.ts +32 -0
- package/dist/components/generated/index.gen.js +40 -0
- package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
- package/dist/components/generated/pb/decentraland/common/texture.gen.js +65 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +43 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +151 -1
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +104 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +50 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +37 -1
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +119 -1
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
- package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
- package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +61 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +41 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +59 -0
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +57 -1
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +56 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +56 -0
- package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
- package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
- package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
- package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +191 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +60 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +42 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +4 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +20 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +90 -0
- package/dist/components/index.d.ts +11 -7
- package/dist/components/index.js +11 -5
- package/dist/components/types.d.ts +2 -0
- package/dist/engine/input.d.ts +6 -0
- package/dist/engine/input.js +7 -1
- package/dist/runtime/initialization/index.d.ts +1 -1
- package/dist/runtime/initialization/index.js +1 -1
- package/dist/systems/events.d.ts +100 -1
- package/dist/systems/events.js +143 -65
- package/dist/systems/tween.js +63 -88
- package/dist-cjs/components/extended/AvatarEquippedData.d.ts +10 -0
- package/dist-cjs/components/extended/AvatarEquippedData.js +19 -0
- package/dist-cjs/components/extended/AvatarShape.d.ts +10 -0
- package/dist-cjs/components/extended/AvatarShape.js +19 -0
- package/dist-cjs/components/extended/MeshCollider.d.ts +8 -0
- package/dist-cjs/components/extended/MeshCollider.js +6 -0
- package/dist-cjs/components/extended/MeshRenderer.d.ts +8 -0
- package/dist-cjs/components/extended/MeshRenderer.js +5 -0
- package/dist-cjs/components/generated/CameraLayer.gen.d.ts +1 -0
- package/dist-cjs/components/generated/CameraLayer.gen.js +28 -0
- package/dist-cjs/components/generated/CameraLayers.gen.d.ts +1 -0
- package/dist-cjs/components/generated/CameraLayers.gen.js +28 -0
- package/dist-cjs/components/generated/GlobalLight.gen.d.ts +1 -0
- package/dist-cjs/components/generated/GlobalLight.gen.js +28 -0
- package/dist-cjs/components/generated/GltfNode.gen.d.ts +1 -0
- package/dist-cjs/components/generated/GltfNode.gen.js +28 -0
- package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +1 -0
- package/dist-cjs/components/generated/GltfNodeState.gen.js +28 -0
- package/dist-cjs/components/generated/TextureCamera.gen.d.ts +1 -0
- package/dist-cjs/components/generated/TextureCamera.gen.js +28 -0
- package/dist-cjs/components/generated/UiCanvas.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiCanvas.gen.js +28 -0
- package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiScrollResult.gen.js +28 -0
- package/dist-cjs/components/generated/component-names.gen.js +8 -0
- package/dist-cjs/components/generated/global.gen.d.ts +16 -0
- package/dist-cjs/components/generated/global.gen.js +10 -1
- package/dist-cjs/components/generated/index.gen.d.ts +32 -0
- package/dist-cjs/components/generated/index.gen.js +50 -2
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +66 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +43 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +152 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +110 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +56 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +37 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +120 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +67 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +47 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +65 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +58 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +57 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +57 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +197 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +66 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +48 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +4 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +20 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +91 -1
- package/dist-cjs/components/index.d.ts +11 -7
- package/dist-cjs/components/index.js +15 -7
- package/dist-cjs/components/types.d.ts +2 -0
- package/dist-cjs/engine/input.d.ts +6 -0
- package/dist-cjs/engine/input.js +7 -1
- 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 +100 -1
- package/dist-cjs/systems/events.js +143 -65
- package/dist-cjs/systems/tween.js +63 -88
- 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) {
|
|
@@ -79,77 +82,148 @@ function createPointerEventsSystem(engine, inputSystem) {
|
|
|
79
82
|
else if (eventType === EventType.HoverEnter) {
|
|
80
83
|
return 2 /* PointerEventType.PET_HOVER_ENTER */;
|
|
81
84
|
}
|
|
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
|
+
}
|
|
82
94
|
return 1 /* PointerEventType.PET_DOWN */;
|
|
83
95
|
}
|
|
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
|
+
}
|
|
84
119
|
function removeEvent(entity, type) {
|
|
85
120
|
const event = getEvent(entity);
|
|
86
|
-
const
|
|
87
|
-
if (
|
|
88
|
-
|
|
121
|
+
const pointerEventList = event.get(type);
|
|
122
|
+
if (pointerEventList === undefined) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
for (const button of pointerEventList.keys()) {
|
|
126
|
+
removePointerEvent(entity, getPointerEvent(type), button);
|
|
89
127
|
}
|
|
90
128
|
event.delete(type);
|
|
91
129
|
}
|
|
92
130
|
engine.addSystem(function EventSystem() {
|
|
93
|
-
|
|
131
|
+
if (eventsMap.size === 0) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
for (const entity of eventsMap.keys()) {
|
|
94
135
|
if (engine.getEntityState(entity) === entity_1.EntityState.Removed) {
|
|
95
136
|
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) {
|
|
96
146
|
continue;
|
|
97
147
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
148
|
+
const typeMap = entityMap.get(getEventType(command.state));
|
|
149
|
+
if (typeMap) {
|
|
150
|
+
const data = typeMap.get(command.button);
|
|
151
|
+
if (data) {
|
|
152
|
+
(0, invariant_1.checkNotThenable)(data.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
|
|
103
153
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
154
|
+
const anyData = typeMap.get(3 /* InputAction.IA_ANY */);
|
|
155
|
+
if (anyData) {
|
|
156
|
+
(0, invariant_1.checkNotThenable)(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// check clicks separately
|
|
160
|
+
if (command.state === 0 /* PointerEventType.PET_UP */) {
|
|
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');
|
|
111
170
|
}
|
|
112
171
|
}
|
|
113
172
|
}
|
|
114
173
|
}
|
|
115
174
|
});
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
175
|
+
// return a function with the correct event type.
|
|
176
|
+
// we use onPointerDown as the "archetype" for the returned function, but it fits with
|
|
177
|
+
// all the onPointer* declarations
|
|
178
|
+
const onPointerFunction = (ty) => {
|
|
179
|
+
return (arg0, arg1, arg2) => {
|
|
180
|
+
let entity;
|
|
181
|
+
let optsList;
|
|
182
|
+
if (typeof arg0 === 'number') {
|
|
183
|
+
// called as onPointerDown(entity: Entity, cb: EventSystemCallback, opts?: Partial<EventSystemOptions>): void
|
|
184
|
+
entity = arg0;
|
|
185
|
+
const cb = arg1;
|
|
186
|
+
const opts = arg2;
|
|
187
|
+
optsList = [{ cb, ...(0, exports.getDefaultOpts)(opts) }];
|
|
188
|
+
}
|
|
189
|
+
else if (typeof arg1 === 'function') {
|
|
190
|
+
// called as onPointerDown(pointerData: { entity: Entity; opts?: Partial<EventSystemOptions> }, cb: EventSystemCallback): void
|
|
191
|
+
const { entity: e, opts } = arg0;
|
|
192
|
+
const cb = arg1;
|
|
193
|
+
entity = e;
|
|
194
|
+
optsList = [{ cb, ...(0, exports.getDefaultOpts)(opts) }];
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
// called as onPointerDown(pointerData: { entity: Entity; optsList: EventSystemOptionsCallback[] }): void
|
|
198
|
+
const { entity: e, optsList: o } = arg0;
|
|
199
|
+
entity = e;
|
|
200
|
+
optsList = o;
|
|
201
|
+
}
|
|
202
|
+
const previous = getEvent(entity).get(ty) ?? new Map();
|
|
203
|
+
const callbacks = new Map();
|
|
204
|
+
for (const opts of optsList) {
|
|
205
|
+
const prevOpts = previous.get(opts.button);
|
|
206
|
+
if (prevOpts !== undefined) {
|
|
207
|
+
if (prevOpts.hoverText !== opts.hoverText ||
|
|
208
|
+
prevOpts.maxDistance !== opts.maxDistance ||
|
|
209
|
+
prevOpts.showFeedback !== opts.showFeedback ||
|
|
210
|
+
prevOpts.showHighlight !== opts.showHighlight) {
|
|
211
|
+
removePointerEvent(entity, getPointerEvent(ty), opts.button);
|
|
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
|
+
};
|
|
153
227
|
};
|
|
154
228
|
return {
|
|
155
229
|
removeOnClick(entity) {
|
|
@@ -167,19 +241,23 @@ function createPointerEventsSystem(engine, inputSystem) {
|
|
|
167
241
|
removeOnPointerHoverLeave(entity) {
|
|
168
242
|
removeEvent(entity, EventType.HoverLeave);
|
|
169
243
|
},
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
removeEvent(entity, EventType.
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
244
|
+
removeOnPointerDrag(entity) {
|
|
245
|
+
removeEvent(entity, EventType.Drag);
|
|
246
|
+
},
|
|
247
|
+
removeOnPointerDragLocked(entity) {
|
|
248
|
+
removeEvent(entity, EventType.DragLocked);
|
|
249
|
+
},
|
|
250
|
+
removeOnPointerDragEnd(entity) {
|
|
251
|
+
removeEvent(entity, EventType.DragEnd);
|
|
178
252
|
},
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
253
|
+
onClick: onPointerFunction(EventType.Click),
|
|
254
|
+
onPointerDown: onPointerFunction(EventType.Down),
|
|
255
|
+
onPointerUp: onPointerFunction(EventType.Up),
|
|
256
|
+
onPointerHoverEnter: onPointerFunction(EventType.HoverEnter),
|
|
257
|
+
onPointerHoverLeave: onPointerFunction(EventType.HoverLeave),
|
|
258
|
+
onPointerDrag: onPointerFunction(EventType.Drag),
|
|
259
|
+
onPointerDragLocked: onPointerFunction(EventType.DragLocked),
|
|
260
|
+
onPointerDragEnd: onPointerFunction(EventType.DragEnd)
|
|
183
261
|
};
|
|
184
262
|
}
|
|
185
263
|
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)
|
|
51
51
|
return false;
|
|
52
52
|
/* istanbul ignore next */
|
|
53
53
|
if (
|
|
54
54
|
// Renderer notified that the tween is completed
|
|
55
|
-
|
|
56
|
-
((tweenState.state === 1 /* TweenStateStatus.TS_COMPLETED */ && !tweenCache.changed) ||
|
|
57
|
-
(tweenChanged(entity) && !tweenCache.changed)) &&
|
|
55
|
+
(tweenChanged(entity) || tweenState.state === 1 /* TweenStateStatus.TS_COMPLETED */) &&
|
|
58
56
|
// Avoid sending isCompleted multiple times
|
|
59
|
-
!tweenCache
|
|
57
|
+
!tweenCache?.completed &&
|
|
58
|
+
// Amount of frames needed to consider a tween completed
|
|
59
|
+
(tweenCache?.frames ?? 0) > 2) {
|
|
60
60
|
return true;
|
|
61
61
|
}
|
|
62
62
|
return false;
|
|
@@ -68,111 +68,86 @@ function createTweenSystem(engine) {
|
|
|
68
68
|
if ((currentTween && !prevTween) || (!currentTween && prevTween)) {
|
|
69
69
|
return true;
|
|
70
70
|
}
|
|
71
|
-
if (!currentTween || !prevTween)
|
|
72
|
-
return false;
|
|
73
71
|
const currentBuff = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
74
72
|
Tween.schema.serialize(currentTween, currentBuff);
|
|
75
|
-
const
|
|
76
|
-
return
|
|
73
|
+
const equal = (0, utils_1.dataCompare)(currentBuff.toBinary(), prevTween);
|
|
74
|
+
return equal;
|
|
77
75
|
}
|
|
78
|
-
|
|
76
|
+
const restartTweens = [];
|
|
77
|
+
// Logic for sequence tweens
|
|
79
78
|
engine.addSystem(() => {
|
|
79
|
+
for (const restart of restartTweens) {
|
|
80
|
+
restart();
|
|
81
|
+
}
|
|
82
|
+
restartTweens.length = 0;
|
|
80
83
|
for (const [entity, tween] of engine.getEntitiesWith(Tween)) {
|
|
81
84
|
if (tweenChanged(entity)) {
|
|
82
85
|
const buffer = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
83
86
|
Tween.schema.serialize(tween, buffer);
|
|
84
87
|
cache.set(entity, {
|
|
85
88
|
tween: buffer.toBinary(),
|
|
89
|
+
frames: 0,
|
|
86
90
|
completed: false,
|
|
87
91
|
changed: true
|
|
88
92
|
});
|
|
89
93
|
continue;
|
|
90
94
|
}
|
|
91
95
|
const tweenCache = cache.get(entity);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
tweenCache.frames += 1;
|
|
97
|
+
tweenCache.changed = false;
|
|
98
|
+
if (isCompleted(entity)) {
|
|
99
|
+
// Reset tween frames.
|
|
100
|
+
tweenCache.frames = 0;
|
|
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
|
+
});
|
|
97
125
|
}
|
|
98
126
|
}
|
|
99
127
|
}
|
|
100
128
|
}, Number.NEGATIVE_INFINITY);
|
|
101
|
-
function
|
|
102
|
-
|
|
103
|
-
|
|
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');
|
|
129
|
+
function backwardsTween(tween) {
|
|
130
|
+
if (tween.mode?.$case === 'move' && tween.mode.move) {
|
|
131
|
+
return { ...tween, mode: { ...tween.mode, move: { start: tween.mode.move.end, end: tween.mode.move.start } } };
|
|
124
132
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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);
|
|
133
|
+
if (tween.mode?.$case === 'rotate' && tween.mode.rotate) {
|
|
134
|
+
return {
|
|
135
|
+
...tween,
|
|
136
|
+
mode: { ...tween.mode, rotate: { start: tween.mode.rotate.end, end: tween.mode.rotate.start } }
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
if (tween.mode?.$case === 'scale' && tween.mode.scale) {
|
|
140
|
+
return { ...tween, mode: { ...tween.mode, scale: { start: tween.mode.scale.end, end: tween.mode.scale.start } } };
|
|
141
|
+
}
|
|
142
|
+
if (tween.mode?.$case === 'textureMove' && tween.mode.textureMove) {
|
|
143
|
+
return {
|
|
144
|
+
...tween,
|
|
145
|
+
mode: { ...tween.mode, textureMove: { start: tween.mode.textureMove.end, end: tween.mode.textureMove.start } }
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/* istanbul ignore next */
|
|
149
|
+
throw new Error('Invalid tween');
|
|
171
150
|
}
|
|
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();
|
|
176
151
|
const tweenSystem = {
|
|
177
152
|
// This event is fired only once per tween
|
|
178
153
|
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.13.
|
|
4
|
+
"version": "7.13.1-19516109426.commit-e1e79aa",
|
|
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": "e1e79aa4c353b3698cf182659d0110ef3eb2e68f"
|
|
37
37
|
}
|