@dcl/ecs 7.10.2 → 7.10.3-18106625709.commit-1bcaa4a

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 (61) 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/index.d.ts +4 -0
  19. package/dist/components/index.js +6 -0
  20. package/dist/components/manual/Tags.d.ts +34 -0
  21. package/dist/components/manual/Tags.js +37 -0
  22. package/dist/components/types.d.ts +2 -0
  23. package/dist/engine/index.js +10 -0
  24. package/dist/engine/types.d.ts +7 -0
  25. package/dist/index.d.ts +5 -1
  26. package/dist/index.js +3 -0
  27. package/dist/runtime/initialization/index.d.ts +7 -0
  28. package/dist/runtime/initialization/index.js +6 -0
  29. package/dist/systems/triggerArea.d.ts +50 -0
  30. package/dist/systems/triggerArea.js +113 -0
  31. package/dist-cjs/components/extended/TriggerArea.d.ts +22 -0
  32. package/dist-cjs/components/extended/TriggerArea.js +31 -0
  33. package/dist-cjs/components/generated/TriggerArea.gen.d.ts +1 -0
  34. package/dist-cjs/components/generated/TriggerArea.gen.js +28 -0
  35. package/dist-cjs/components/generated/TriggerAreaResult.gen.d.ts +1 -0
  36. package/dist-cjs/components/generated/TriggerAreaResult.gen.js +28 -0
  37. package/dist-cjs/components/generated/component-names.gen.js +2 -0
  38. package/dist-cjs/components/generated/global.gen.d.ts +4 -0
  39. package/dist-cjs/components/generated/global.gen.js +3 -1
  40. package/dist-cjs/components/generated/index.gen.d.ts +8 -0
  41. package/dist-cjs/components/generated/index.gen.js +16 -1
  42. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +2 -1
  43. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +2 -1
  44. package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area.gen.d.ts +32 -0
  45. package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area.gen.js +64 -0
  46. package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.d.ts +60 -0
  47. package/dist-cjs/components/generated/pb/decentraland/sdk/components/trigger_area_result.gen.js +183 -0
  48. package/dist-cjs/components/index.d.ts +4 -0
  49. package/dist-cjs/components/index.js +9 -1
  50. package/dist-cjs/components/manual/Tags.d.ts +34 -0
  51. package/dist-cjs/components/manual/Tags.js +39 -0
  52. package/dist-cjs/components/types.d.ts +2 -0
  53. package/dist-cjs/engine/index.js +10 -0
  54. package/dist-cjs/engine/types.d.ts +7 -0
  55. package/dist-cjs/index.d.ts +5 -1
  56. package/dist-cjs/index.js +4 -1
  57. package/dist-cjs/runtime/initialization/index.d.ts +7 -0
  58. package/dist-cjs/runtime/initialization/index.js +7 -1
  59. package/dist-cjs/systems/triggerArea.d.ts +50 -0
  60. package/dist-cjs/systems/triggerArea.js +140 -0
  61. package/package.json +2 -2
package/dist-cjs/index.js CHANGED
@@ -26,7 +26,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
26
  return result;
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.Name = exports.MeshCollider = exports.MeshRenderer = exports.Material = exports.AudioStream = exports.AudioSource = exports.Animator = exports.Transform = exports.components = exports.cyclicParentingChecker = void 0;
29
+ exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.TriggerArea = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.Tags = exports.Name = exports.MeshCollider = exports.MeshRenderer = exports.Material = exports.AudioStream = exports.AudioSource = exports.Animator = exports.Transform = exports.components = exports.cyclicParentingChecker = void 0;
30
30
  // The order of the following imports matters. Please do not auto-sort
31
31
  __exportStar(require("./engine"), exports);
32
32
  __exportStar(require("./schemas"), exports);
@@ -40,6 +40,7 @@ __exportStar(require("./systems/raycast"), exports);
40
40
  __exportStar(require("./systems/videoEvents"), exports);
41
41
  __exportStar(require("./systems/async-task"), exports);
42
42
  __exportStar(require("./systems/tween"), exports);
43
+ __exportStar(require("./systems/triggerArea"), exports);
43
44
  __exportStar(require("./engine/entity"), exports);
44
45
  __exportStar(require("./components/types"), exports);
45
46
  // @internal
@@ -55,10 +56,12 @@ exports.Material = components.Material(initialization_1.engine);
55
56
  exports.MeshRenderer = components.MeshRenderer(initialization_1.engine);
56
57
  exports.MeshCollider = components.MeshCollider(initialization_1.engine);
57
58
  exports.Name = components.Name(initialization_1.engine);
59
+ exports.Tags = components.Tags(initialization_1.engine);
58
60
  exports.Tween = components.Tween(initialization_1.engine);
59
61
  exports.VirtualCamera = components.VirtualCamera(initialization_1.engine);
60
62
  exports.InputModifier = components.InputModifier(initialization_1.engine);
61
63
  exports.LightSource = components.LightSource(initialization_1.engine);
64
+ exports.TriggerArea = components.TriggerArea(initialization_1.engine);
62
65
  /**
63
66
  * @alpha
64
67
  * This is going to be used for sync components through a server.
@@ -9,6 +9,7 @@ import { IInputSystem } from './../../engine/input';
9
9
  import { RaycastSystem } from '../../systems/raycast';
10
10
  import { VideoEventsSystem } from '../../systems/videoEvents';
11
11
  import { TweenSystem } from '../../systems/tween';
12
+ import { TriggerAreaEventsSystem } from '../../systems/triggerArea';
12
13
  /**
13
14
  * @public
14
15
  * The engine is the part of the scene that sits in the middle and manages all of the other parts.
@@ -56,6 +57,12 @@ export { VideoEventsSystem };
56
57
  */
57
58
  export declare const tweenSystem: TweenSystem;
58
59
  export { TweenSystem };
60
+ /**
61
+ * @public
62
+ * Register callback functions for trigger area results.
63
+ */
64
+ export declare const triggerAreaEventsSystem: TriggerAreaEventsSystem;
65
+ export { TriggerAreaEventsSystem };
59
66
  /**
60
67
  * @public
61
68
  * Runs an async function
@@ -4,7 +4,7 @@
4
4
  * init and it'll be changing.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.executeTask = exports.tweenSystem = exports.videoEventsSystem = exports.raycastSystem = exports.pointerEventsSystem = exports.inputSystem = exports.engine = void 0;
7
+ exports.executeTask = exports.triggerAreaEventsSystem = exports.tweenSystem = exports.videoEventsSystem = exports.raycastSystem = exports.pointerEventsSystem = exports.inputSystem = exports.engine = void 0;
8
8
  const engine_1 = require("../../engine");
9
9
  const async_task_1 = require("../../systems/async-task");
10
10
  const events_1 = require("../../systems/events");
@@ -13,6 +13,7 @@ const raycast_1 = require("../../systems/raycast");
13
13
  const videoEvents_1 = require("../../systems/videoEvents");
14
14
  const tween_1 = require("../../systems/tween");
15
15
  const pointer_event_collider_checker_1 = require("../../systems/pointer-event-collider-checker");
16
+ const triggerArea_1 = require("../../systems/triggerArea");
16
17
  /**
17
18
  * @public
18
19
  * The engine is the part of the scene that sits in the middle and manages all of the other parts.
@@ -55,6 +56,11 @@ exports.videoEventsSystem = (0, videoEvents_1.createVideoEventsSystem)(exports.e
55
56
  * Register callback functions to a particular entity on video events.
56
57
  */
57
58
  exports.tweenSystem = (0, tween_1.createTweenSystem)(exports.engine);
59
+ /**
60
+ * @public
61
+ * Register callback functions for trigger area results.
62
+ */
63
+ exports.triggerAreaEventsSystem = (0, triggerArea_1.createTriggerAreaEventsSystem)(exports.engine);
58
64
  /**
59
65
  * Adds pointer event collider system only in DEV env
60
66
  */
@@ -0,0 +1,50 @@
1
+ import { DeepReadonlyObject, Entity } from '../engine';
2
+ import { PBTriggerAreaResult } from '../components';
3
+ /**
4
+ * @public
5
+ */
6
+ export type TriggerAreaEventSystemCallback = (result: DeepReadonlyObject<PBTriggerAreaResult>) => void;
7
+ /**
8
+ * @public
9
+ */
10
+ export interface TriggerAreaEventsSystem {
11
+ /**
12
+ * @public
13
+ * Execute callback when an entity enters the Trigger Area
14
+ * @param entity - The entity that already has the TriggerArea component
15
+ * @param cb - Function to execute the 'Enter' type of result is detected
16
+ */
17
+ onTriggerEnter(entity: Entity, cb: TriggerAreaEventSystemCallback): void;
18
+ /**
19
+ * @public
20
+ * Remove the callback for Trigger Area 'Enter' type of result
21
+ * @param entity - Entity where the Trigger Area was attached
22
+ */
23
+ removeOnTriggerEnter(entity: Entity): void;
24
+ /**
25
+ * @public
26
+ * Execute callback when an entity stays in the Trigger Area
27
+ * @param entity - The entity that already has the TriggerArea component
28
+ * @param cb - Function to execute the 'Stay' type of result is detected
29
+ */
30
+ onTriggerStay(entity: Entity, cb: TriggerAreaEventSystemCallback): void;
31
+ /**
32
+ * @public
33
+ * Remove the callback for Trigger Area 'Stay' type of result
34
+ * @param entity - Entity where the Trigger Area was attached
35
+ */
36
+ removeOnTriggerStay(entity: Entity): void;
37
+ /**
38
+ * @public
39
+ * Execute callback when an entity exits the Trigger Area
40
+ * @param entity - The entity that already has the TriggerArea component
41
+ * @param cb - Function to execute the 'Exit' type of result is detected
42
+ */
43
+ onTriggerExit(entity: Entity, cb: TriggerAreaEventSystemCallback): void;
44
+ /**
45
+ * @public
46
+ * Remove the callback for Trigger Area 'Exit' type of result
47
+ * @param entity - Entity where the Trigger Area was attached
48
+ */
49
+ removeOnTriggerExit(entity: Entity): void;
50
+ }
@@ -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.2",
4
+ "version": "7.10.3-18106625709.commit-1bcaa4a",
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": "931de89979b7eca676af3d4e3ccbaa5dcf8ef300"
36
+ "commit": "1bcaa4aa66245ab02561c033a0a0651eed1260f3"
37
37
  }