@dcl/ecs 7.10.3-17918694201.commit-b983b3b → 7.10.3-18110910324.commit-20b1978
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/TriggerArea.d.ts +22 -0
- package/dist/components/extended/TriggerArea.js +27 -0
- package/dist/components/generated/TriggerArea.gen.d.ts +1 -0
- package/dist/components/generated/TriggerArea.gen.js +25 -0
- package/dist/components/generated/TriggerAreaResult.gen.d.ts +1 -0
- package/dist/components/generated/TriggerAreaResult.gen.js +25 -0
- package/dist/components/generated/component-names.gen.js +2 -0
- package/dist/components/generated/global.gen.d.ts +4 -0
- package/dist/components/generated/global.gen.js +2 -0
- package/dist/components/generated/index.gen.d.ts +8 -0
- package/dist/components/generated/index.gen.js +12 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +2 -1
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +2 -1
- package/dist/components/generated/pb/decentraland/sdk/components/trigger_area.gen.d.ts +32 -0
- package/dist/components/generated/pb/decentraland/sdk/components/trigger_area.gen.js +58 -0
- package/dist/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.d.ts +60 -0
- package/dist/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.js +177 -0
- package/dist/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.d.ts +3 -0
- package/dist/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.js +10 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +3 -0
- package/dist/components/types.d.ts +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -0
- package/dist/runtime/initialization/index.d.ts +7 -0
- package/dist/runtime/initialization/index.js +6 -0
- package/dist/systems/triggerArea.d.ts +50 -0
- package/dist/systems/triggerArea.js +113 -0
- package/dist-cjs/components/extended/TriggerArea.d.ts +22 -0
- package/dist-cjs/components/extended/TriggerArea.js +31 -0
- package/dist-cjs/components/generated/TriggerArea.gen.d.ts +1 -0
- package/dist-cjs/components/generated/TriggerArea.gen.js +28 -0
- package/dist-cjs/components/generated/TriggerAreaResult.gen.d.ts +1 -0
- package/dist-cjs/components/generated/TriggerAreaResult.gen.js +28 -0
- package/dist-cjs/components/generated/component-names.gen.js +2 -0
- package/dist-cjs/components/generated/global.gen.d.ts +4 -0
- package/dist-cjs/components/generated/global.gen.js +3 -1
- package/dist-cjs/components/generated/index.gen.d.ts +8 -0
- package/dist-cjs/components/generated/index.gen.js +16 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +2 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +2 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area.gen.d.ts +32 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area.gen.js +64 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.d.ts +60 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.js +183 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.d.ts +3 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.js +10 -1
- package/dist-cjs/components/index.d.ts +2 -0
- package/dist-cjs/components/index.js +5 -1
- package/dist-cjs/components/types.d.ts +1 -0
- package/dist-cjs/index.d.ts +3 -1
- package/dist-cjs/index.js +3 -1
- package/dist-cjs/runtime/initialization/index.d.ts +7 -0
- package/dist-cjs/runtime/initialization/index.js +7 -1
- package/dist-cjs/systems/triggerArea.d.ts +50 -0
- package/dist-cjs/systems/triggerArea.js +140 -0
- package/package.json +2 -2
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.createTriggerAreaEventsSystem = void 0;
|
|
27
|
+
const components = __importStar(require("../components"));
|
|
28
|
+
const entity_1 = require("../engine/entity");
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
function createTriggerAreaEventsSystem(engine) {
|
|
33
|
+
const triggerAreaResultComponent = components.TriggerAreaResult(engine);
|
|
34
|
+
const entitiesMap = new Map();
|
|
35
|
+
function hasCallbacksMap(entity) {
|
|
36
|
+
return entitiesMap.has(entity) && entitiesMap.get(entity) !== undefined;
|
|
37
|
+
}
|
|
38
|
+
function addEntityCallback(entity, triggerType, callback) {
|
|
39
|
+
if (hasCallbacksMap(entity)) {
|
|
40
|
+
entitiesMap.get(entity).triggerCallbackMap.set(triggerType, callback);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
entitiesMap.set(entity, {
|
|
44
|
+
triggerCallbackMap: new Map([[triggerType, callback]]),
|
|
45
|
+
lastConsumedTimestamp: -1
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function removeEntityCallback(entity, triggerType) {
|
|
50
|
+
if (!entitiesMap.has(entity) || !entitiesMap.get(entity).triggerCallbackMap.has(triggerType))
|
|
51
|
+
return;
|
|
52
|
+
const triggerCallbackMap = entitiesMap.get(entity).triggerCallbackMap;
|
|
53
|
+
triggerCallbackMap.delete(triggerType);
|
|
54
|
+
// Remove entity if no more trigger callbacks are registered
|
|
55
|
+
if (triggerCallbackMap.size === 0)
|
|
56
|
+
entitiesMap.delete(entity);
|
|
57
|
+
}
|
|
58
|
+
function onTriggerEnter(entity, cb) {
|
|
59
|
+
addEntityCallback(entity, 0 /* TriggerAreaEventType.TAET_ENTER */, cb);
|
|
60
|
+
}
|
|
61
|
+
function removeOnTriggerEnter(entity) {
|
|
62
|
+
removeEntityCallback(entity, 0 /* TriggerAreaEventType.TAET_ENTER */);
|
|
63
|
+
}
|
|
64
|
+
function onTriggerStay(entity, cb) {
|
|
65
|
+
addEntityCallback(entity, 1 /* TriggerAreaEventType.TAET_STAY */, cb);
|
|
66
|
+
}
|
|
67
|
+
function removeOnTriggerStay(entity) {
|
|
68
|
+
removeEntityCallback(entity, 1 /* TriggerAreaEventType.TAET_STAY */);
|
|
69
|
+
}
|
|
70
|
+
function onTriggerExit(entity, cb) {
|
|
71
|
+
addEntityCallback(entity, 2 /* TriggerAreaEventType.TAET_EXIT */, cb);
|
|
72
|
+
}
|
|
73
|
+
function removeOnTriggerExit(entity) {
|
|
74
|
+
removeEntityCallback(entity, 2 /* TriggerAreaEventType.TAET_EXIT */);
|
|
75
|
+
}
|
|
76
|
+
engine.addSystem(function TriggerAreaResultSystem() {
|
|
77
|
+
const garbageEntries = [];
|
|
78
|
+
for (const [entity, data] of entitiesMap) {
|
|
79
|
+
if (engine.getEntityState(entity) === entity_1.EntityState.Removed) {
|
|
80
|
+
garbageEntries.push(entity);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const result = triggerAreaResultComponent.get(entity);
|
|
84
|
+
// The Explorer may be taking time before the result component is put
|
|
85
|
+
if (result.size === 0)
|
|
86
|
+
continue;
|
|
87
|
+
const values = Array.from(result.values());
|
|
88
|
+
// determine starting index for new values (more than one could be added between System updates)
|
|
89
|
+
// search backwards to find the anchor at lastConsumedTimestamp
|
|
90
|
+
let startIndex = 0;
|
|
91
|
+
if (data.lastConsumedTimestamp >= 0) {
|
|
92
|
+
const newestTimestamp = values[values.length - 1].timestamp;
|
|
93
|
+
// if nothing new, skip processing
|
|
94
|
+
if (newestTimestamp <= data.lastConsumedTimestamp) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
// Find index of value with the lastConsumedTimestamp
|
|
98
|
+
let i = values.length - 2;
|
|
99
|
+
while (i >= 0 && values[i].timestamp > data.lastConsumedTimestamp)
|
|
100
|
+
i--;
|
|
101
|
+
// Mark the following value index as the starting point to trigger all the new value callbacks
|
|
102
|
+
startIndex = i + 1;
|
|
103
|
+
}
|
|
104
|
+
if (startIndex >= values.length)
|
|
105
|
+
continue;
|
|
106
|
+
// Trigger callbacks for all the new values
|
|
107
|
+
for (let i = startIndex; i < values.length; i++) {
|
|
108
|
+
switch (values[i].eventType) {
|
|
109
|
+
case 0 /* TriggerAreaEventType.TAET_ENTER */:
|
|
110
|
+
if (!data.triggerCallbackMap.has(0 /* TriggerAreaEventType.TAET_ENTER */))
|
|
111
|
+
continue;
|
|
112
|
+
data.triggerCallbackMap.get(0 /* TriggerAreaEventType.TAET_ENTER */)(values[i]);
|
|
113
|
+
break;
|
|
114
|
+
case 1 /* TriggerAreaEventType.TAET_STAY */:
|
|
115
|
+
if (!data.triggerCallbackMap.has(1 /* TriggerAreaEventType.TAET_STAY */))
|
|
116
|
+
continue;
|
|
117
|
+
data.triggerCallbackMap.get(1 /* TriggerAreaEventType.TAET_STAY */)(values[i]);
|
|
118
|
+
break;
|
|
119
|
+
case 2 /* TriggerAreaEventType.TAET_EXIT */:
|
|
120
|
+
if (!data.triggerCallbackMap.has(2 /* TriggerAreaEventType.TAET_EXIT */))
|
|
121
|
+
continue;
|
|
122
|
+
data.triggerCallbackMap.get(2 /* TriggerAreaEventType.TAET_EXIT */)(values[i]);
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
data.lastConsumedTimestamp = values[values.length - 1].timestamp;
|
|
127
|
+
}
|
|
128
|
+
// Clean up garbage entries
|
|
129
|
+
garbageEntries.forEach((garbageEntity) => entitiesMap.delete(garbageEntity));
|
|
130
|
+
});
|
|
131
|
+
return {
|
|
132
|
+
onTriggerEnter,
|
|
133
|
+
removeOnTriggerEnter,
|
|
134
|
+
onTriggerStay,
|
|
135
|
+
removeOnTriggerStay,
|
|
136
|
+
onTriggerExit,
|
|
137
|
+
removeOnTriggerExit
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
exports.createTriggerAreaEventsSystem = createTriggerAreaEventsSystem;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/ecs",
|
|
3
3
|
"description": "Decentraland ECS",
|
|
4
|
-
"version": "7.10.3-
|
|
4
|
+
"version": "7.10.3-18110910324.commit-20b1978",
|
|
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": "20b1978008d89a9d9bb851ccc8d055468a6133a8"
|
|
37
37
|
}
|