@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.
Files changed (57) hide show
  1. package/dist/components/extended/TriggerArea.d.ts +22 -0
  2. package/dist/components/extended/TriggerArea.js +27 -0
  3. package/dist/components/generated/TriggerArea.gen.d.ts +1 -0
  4. package/dist/components/generated/TriggerArea.gen.js +25 -0
  5. package/dist/components/generated/TriggerAreaResult.gen.d.ts +1 -0
  6. package/dist/components/generated/TriggerAreaResult.gen.js +25 -0
  7. package/dist/components/generated/component-names.gen.js +2 -0
  8. package/dist/components/generated/global.gen.d.ts +4 -0
  9. package/dist/components/generated/global.gen.js +2 -0
  10. package/dist/components/generated/index.gen.d.ts +8 -0
  11. package/dist/components/generated/index.gen.js +12 -0
  12. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +2 -1
  13. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +2 -1
  14. package/dist/components/generated/pb/decentraland/sdk/components/trigger_area.gen.d.ts +32 -0
  15. package/dist/components/generated/pb/decentraland/sdk/components/trigger_area.gen.js +58 -0
  16. package/dist/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.d.ts +60 -0
  17. package/dist/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.js +177 -0
  18. package/dist/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.d.ts +3 -0
  19. package/dist/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.js +10 -1
  20. package/dist/components/index.d.ts +2 -0
  21. package/dist/components/index.js +3 -0
  22. package/dist/components/types.d.ts +1 -0
  23. package/dist/index.d.ts +3 -1
  24. package/dist/index.js +2 -0
  25. package/dist/runtime/initialization/index.d.ts +7 -0
  26. package/dist/runtime/initialization/index.js +6 -0
  27. package/dist/systems/triggerArea.d.ts +50 -0
  28. package/dist/systems/triggerArea.js +113 -0
  29. package/dist-cjs/components/extended/TriggerArea.d.ts +22 -0
  30. package/dist-cjs/components/extended/TriggerArea.js +31 -0
  31. package/dist-cjs/components/generated/TriggerArea.gen.d.ts +1 -0
  32. package/dist-cjs/components/generated/TriggerArea.gen.js +28 -0
  33. package/dist-cjs/components/generated/TriggerAreaResult.gen.d.ts +1 -0
  34. package/dist-cjs/components/generated/TriggerAreaResult.gen.js +28 -0
  35. package/dist-cjs/components/generated/component-names.gen.js +2 -0
  36. package/dist-cjs/components/generated/global.gen.d.ts +4 -0
  37. package/dist-cjs/components/generated/global.gen.js +3 -1
  38. package/dist-cjs/components/generated/index.gen.d.ts +8 -0
  39. package/dist-cjs/components/generated/index.gen.js +16 -1
  40. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +2 -1
  41. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +2 -1
  42. package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area.gen.d.ts +32 -0
  43. package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area.gen.js +64 -0
  44. package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.d.ts +60 -0
  45. package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.js +183 -0
  46. package/dist-cjs/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.d.ts +3 -0
  47. package/dist-cjs/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.js +10 -1
  48. package/dist-cjs/components/index.d.ts +2 -0
  49. package/dist-cjs/components/index.js +5 -1
  50. package/dist-cjs/components/types.d.ts +1 -0
  51. package/dist-cjs/index.d.ts +3 -1
  52. package/dist-cjs/index.js +3 -1
  53. package/dist-cjs/runtime/initialization/index.d.ts +7 -0
  54. package/dist-cjs/runtime/initialization/index.js +7 -1
  55. package/dist-cjs/systems/triggerArea.d.ts +50 -0
  56. package/dist-cjs/systems/triggerArea.js +140 -0
  57. 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-17918694201.commit-b983b3b",
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": "b983b3b74a44f323355ad4aed6a0e25504d20eb1"
36
+ "commit": "20b1978008d89a9d9bb851ccc8d055468a6133a8"
37
37
  }