@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
@@ -14,7 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.componentDefinitionByName = exports.VisibilityComponent = exports.VirtualCamera = exports.VideoPlayer = exports.VideoEvent = exports.UiTransform = exports.UiText = exports.UiInputResult = exports.UiInput = exports.UiDropdownResult = exports.UiDropdown = exports.UiCanvasInformation = exports.UiBackground = exports.TweenState = exports.TweenSequence = exports.Tween = exports.TextShape = exports.SkyboxTime = exports.RealmInfo = exports.RaycastResult = exports.Raycast = exports.PrimaryPointerInfo = exports.PointerLock = exports.PointerEventsResult = exports.PointerEvents = exports.PlayerIdentityData = exports.NftShape = exports.MeshRenderer = exports.MeshCollider = exports.Material = exports.MainCamera = exports.LightSource = exports.InputModifier = exports.GltfNodeModifiers = exports.GltfContainerLoadingState = exports.GltfContainer = exports.EngineInfo = exports.CameraModeArea = exports.CameraMode = exports.Billboard = exports.AvatarShape = exports.AvatarModifierArea = exports.AvatarEquippedData = exports.AvatarEmoteCommand = exports.AvatarBase = exports.AvatarAttach = exports.AudioStream = exports.AudioSource = exports.AudioEvent = exports.Animator = void 0;
17
+ exports.VirtualCamera = exports.VideoPlayer = exports.VideoEvent = exports.UiTransform = exports.UiText = exports.UiInputResult = exports.UiInput = exports.UiDropdownResult = exports.UiDropdown = exports.UiCanvasInformation = exports.UiBackground = exports.TweenState = exports.TweenSequence = exports.Tween = exports.TriggerAreaResult = exports.TriggerArea = exports.TextShape = exports.SkyboxTime = exports.RealmInfo = exports.RaycastResult = exports.Raycast = exports.PrimaryPointerInfo = exports.PointerLock = exports.PointerEventsResult = exports.PointerEvents = exports.PlayerIdentityData = exports.NftShape = exports.MeshRenderer = exports.MeshCollider = exports.Material = exports.MainCamera = exports.LightSource = exports.InputModifier = exports.GltfNodeModifiers = exports.GltfContainerLoadingState = exports.GltfContainer = exports.EngineInfo = exports.CameraModeArea = exports.CameraMode = exports.Billboard = exports.AvatarShape = exports.AvatarModifierArea = exports.AvatarEquippedData = exports.AvatarEmoteCommand = exports.AvatarBase = exports.AvatarAttach = exports.AudioStream = exports.AudioSource = exports.AudioEvent = exports.Animator = void 0;
18
+ exports.componentDefinitionByName = exports.VisibilityComponent = void 0;
18
19
  const Animator_gen_1 = require("./Animator.gen");
19
20
  const AudioEvent_gen_1 = require("./AudioEvent.gen");
20
21
  const AudioSource_gen_1 = require("./AudioSource.gen");
@@ -49,6 +50,8 @@ const RaycastResult_gen_1 = require("./RaycastResult.gen");
49
50
  const RealmInfo_gen_1 = require("./RealmInfo.gen");
50
51
  const SkyboxTime_gen_1 = require("./SkyboxTime.gen");
51
52
  const TextShape_gen_1 = require("./TextShape.gen");
53
+ const TriggerArea_gen_1 = require("./TriggerArea.gen");
54
+ const TriggerAreaResult_gen_1 = require("./TriggerAreaResult.gen");
52
55
  const Tween_gen_1 = require("./Tween.gen");
53
56
  const TweenSequence_gen_1 = require("./TweenSequence.gen");
54
57
  const TweenState_gen_1 = require("./TweenState.gen");
@@ -98,6 +101,8 @@ __exportStar(require("./pb/decentraland/sdk/components/raycast_result.gen"), exp
98
101
  __exportStar(require("./pb/decentraland/sdk/components/realm_info.gen"), exports);
99
102
  __exportStar(require("./pb/decentraland/sdk/components/skybox_time.gen"), exports);
100
103
  __exportStar(require("./pb/decentraland/sdk/components/text_shape.gen"), exports);
104
+ __exportStar(require("./pb/decentraland/sdk/components/trigger_area.gen"), exports);
105
+ __exportStar(require("./pb/decentraland/sdk/components/trigger_area_result.gen"), exports);
101
106
  __exportStar(require("./pb/decentraland/sdk/components/tween.gen"), exports);
102
107
  __exportStar(require("./pb/decentraland/sdk/components/tween_sequence.gen"), exports);
103
108
  __exportStar(require("./pb/decentraland/sdk/components/tween_state.gen"), exports);
@@ -221,6 +226,14 @@ exports.SkyboxTime = SkyboxTime;
221
226
  /** @public */ const TextShape = engine =>
222
227
  /* @__PURE__ */ engine.defineComponentFromSchema("core::TextShape", TextShape_gen_1.TextShapeSchema);
223
228
  exports.TextShape = TextShape;
229
+ /** @public */ const TriggerArea = engine =>
230
+ /* @__PURE__ */ engine.defineComponentFromSchema("core::TriggerArea", TriggerArea_gen_1.TriggerAreaSchema);
231
+ exports.TriggerArea = TriggerArea;
232
+ /** @public */ const TriggerAreaResult = (engine) => /* @__PURE__ */ engine.defineValueSetComponentFromSchema("core::TriggerAreaResult", TriggerAreaResult_gen_1.TriggerAreaResultSchema, {
233
+ timestampFunction: (t) => t.timestamp,
234
+ maxElements: 100
235
+ });
236
+ exports.TriggerAreaResult = TriggerAreaResult;
224
237
  /** @public */ const Tween = engine =>
225
238
  /* @__PURE__ */ engine.defineComponentFromSchema("core::Tween", Tween_gen_1.TweenSchema);
226
239
  exports.Tween = Tween;
@@ -304,6 +317,8 @@ exports.componentDefinitionByName = {
304
317
  "core::RealmInfo": exports.RealmInfo,
305
318
  "core::SkyboxTime": exports.SkyboxTime,
306
319
  "core::TextShape": exports.TextShape,
320
+ "core::TriggerArea": exports.TriggerArea,
321
+ "core::TriggerAreaResult": exports.TriggerAreaResult,
307
322
  "core::Tween": exports.Tween,
308
323
  "core::TweenSequence": exports.TweenSequence,
309
324
  "core::TweenState": exports.TweenState,
@@ -10,7 +10,8 @@ export declare const enum ColliderLayer {
10
10
  CL_POINTER = 1,
11
11
  /** CL_PHYSICS - collision affecting your player's physics i.e. walls, floor, moving platfroms */
12
12
  CL_PHYSICS = 2,
13
- CL_RESERVED1 = 4,
13
+ /** CL_PLAYER - layer corresponding to any player avatar */
14
+ CL_PLAYER = 4,
14
15
  CL_RESERVED2 = 8,
15
16
  CL_RESERVED3 = 16,
16
17
  CL_RESERVED4 = 32,
@@ -19,7 +19,8 @@ var ColliderLayer;
19
19
  ColliderLayer[ColliderLayer["CL_POINTER"] = 1] = "CL_POINTER";
20
20
  /** CL_PHYSICS - collision affecting your player's physics i.e. walls, floor, moving platfroms */
21
21
  ColliderLayer[ColliderLayer["CL_PHYSICS"] = 2] = "CL_PHYSICS";
22
- ColliderLayer[ColliderLayer["CL_RESERVED1"] = 4] = "CL_RESERVED1";
22
+ /** CL_PLAYER - layer corresponding to any player avatar */
23
+ ColliderLayer[ColliderLayer["CL_PLAYER"] = 4] = "CL_PLAYER";
23
24
  ColliderLayer[ColliderLayer["CL_RESERVED2"] = 8] = "CL_RESERVED2";
24
25
  ColliderLayer[ColliderLayer["CL_RESERVED3"] = 16] = "CL_RESERVED3";
25
26
  ColliderLayer[ColliderLayer["CL_RESERVED4"] = 32] = "CL_RESERVED4";
@@ -0,0 +1,32 @@
1
+ import _m0 from "protobufjs/minimal";
2
+ /**
3
+ * @public
4
+ */
5
+ export declare const enum TriggerAreaMeshType {
6
+ TAMT_BOX = 0,
7
+ TAMT_SPHERE = 1
8
+ }
9
+ /**
10
+ * The PBTriggerArea component is used to raise collision triggering events (through the TriggerAreaResult component)
11
+ * when entities enter this component's defined area.
12
+ *
13
+ * ADR: https://github.com/decentraland/adr/blob/2b30a5e2b4f359a7c22a68fb827db282f6e5f887/content/ADR-258-trigger-areas.md
14
+ *
15
+ * The area size and rotation is defined by the Entity's Transform.
16
+ */
17
+ /**
18
+ * @public
19
+ */
20
+ export interface PBTriggerArea {
21
+ /** default: MT_BOX */
22
+ mesh?: TriggerAreaMeshType | undefined;
23
+ /** default: CL_PLAYER */
24
+ collisionMask?: number | undefined;
25
+ }
26
+ /**
27
+ * @public
28
+ */
29
+ export declare namespace PBTriggerArea {
30
+ function encode(message: PBTriggerArea, writer?: _m0.Writer): _m0.Writer;
31
+ function decode(input: _m0.Reader | Uint8Array, length?: number): PBTriggerArea;
32
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PBTriggerArea = exports.TriggerAreaMeshType = void 0;
7
+ /* eslint-disable */
8
+ const minimal_1 = __importDefault(require("protobufjs/minimal"));
9
+ const protobufPackageSarasa = "decentraland.sdk.components";
10
+ /**
11
+ * @public
12
+ */
13
+ var TriggerAreaMeshType;
14
+ (function (TriggerAreaMeshType) {
15
+ TriggerAreaMeshType[TriggerAreaMeshType["TAMT_BOX"] = 0] = "TAMT_BOX";
16
+ TriggerAreaMeshType[TriggerAreaMeshType["TAMT_SPHERE"] = 1] = "TAMT_SPHERE";
17
+ })(TriggerAreaMeshType = exports.TriggerAreaMeshType || (exports.TriggerAreaMeshType = {}));
18
+ function createBasePBTriggerArea() {
19
+ return { mesh: undefined, collisionMask: undefined };
20
+ }
21
+ /**
22
+ * @public
23
+ */
24
+ var PBTriggerArea;
25
+ (function (PBTriggerArea) {
26
+ function encode(message, writer = minimal_1.default.Writer.create()) {
27
+ if (message.mesh !== undefined) {
28
+ writer.uint32(8).int32(message.mesh);
29
+ }
30
+ if (message.collisionMask !== undefined) {
31
+ writer.uint32(16).uint32(message.collisionMask);
32
+ }
33
+ return writer;
34
+ }
35
+ PBTriggerArea.encode = encode;
36
+ function decode(input, length) {
37
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
38
+ let end = length === undefined ? reader.len : reader.pos + length;
39
+ const message = createBasePBTriggerArea();
40
+ while (reader.pos < end) {
41
+ const tag = reader.uint32();
42
+ switch (tag >>> 3) {
43
+ case 1:
44
+ if (tag !== 8) {
45
+ break;
46
+ }
47
+ message.mesh = reader.int32();
48
+ continue;
49
+ case 2:
50
+ if (tag !== 16) {
51
+ break;
52
+ }
53
+ message.collisionMask = reader.uint32();
54
+ continue;
55
+ }
56
+ if ((tag & 7) === 4 || tag === 0) {
57
+ break;
58
+ }
59
+ reader.skipType(tag & 7);
60
+ }
61
+ return message;
62
+ }
63
+ PBTriggerArea.decode = decode;
64
+ })(PBTriggerArea = exports.PBTriggerArea || (exports.PBTriggerArea = {}));
@@ -0,0 +1,60 @@
1
+ import _m0 from "protobufjs/minimal";
2
+ import { Quaternion, Vector3 } from "../../common/vectors.gen";
3
+ /**
4
+ * @public
5
+ */
6
+ export declare const enum TriggerAreaEventType {
7
+ TAET_ENTER = 0,
8
+ TAET_STAY = 1,
9
+ TAET_EXIT = 2
10
+ }
11
+ /**
12
+ * The PBTriggerAreaResult component is used to transport the trigger collision event data for the PBTriggerArea component.
13
+ * ADR: https://github.com/decentraland/adr/blob/2b30a5e2b4f359a7c22a68fb827db282f6e5f887/content/ADR-258-trigger-areas.md
14
+ */
15
+ /**
16
+ * @public
17
+ */
18
+ export interface PBTriggerAreaResult {
19
+ /** The entity that was triggered (this is the entity that owns the trigger area) */
20
+ triggeredEntity: number;
21
+ /** The position of the triggered entity at the time of the trigger */
22
+ triggeredEntityPosition: Vector3 | undefined;
23
+ /** The rotation of the triggered entity at the time of the trigger */
24
+ triggeredEntityRotation: Quaternion | undefined;
25
+ /** The state of the trigger event (ENTER, STAY, EXIT) */
26
+ eventType: TriggerAreaEventType;
27
+ /** The timestamp of the trigger event */
28
+ timestamp: number;
29
+ trigger: PBTriggerAreaResult_Trigger | undefined;
30
+ }
31
+ /** Trigger data object */
32
+ /**
33
+ * @public
34
+ */
35
+ export interface PBTriggerAreaResult_Trigger {
36
+ /** The entity that triggered the Trigger Area */
37
+ entity: number;
38
+ /** The collision layermask of the entity that triggered the Trigger Area */
39
+ layers: number;
40
+ /** The position of the entity that triggered the trigger */
41
+ position: Vector3 | undefined;
42
+ /** The rotation of the entity that triggered the trigger */
43
+ rotation: Quaternion | undefined;
44
+ /** The scale of the entity that triggered the trigger */
45
+ scale: Vector3 | undefined;
46
+ }
47
+ /**
48
+ * @public
49
+ */
50
+ export declare namespace PBTriggerAreaResult {
51
+ function encode(message: PBTriggerAreaResult, writer?: _m0.Writer): _m0.Writer;
52
+ function decode(input: _m0.Reader | Uint8Array, length?: number): PBTriggerAreaResult;
53
+ }
54
+ /**
55
+ * @public
56
+ */
57
+ export declare namespace PBTriggerAreaResult_Trigger {
58
+ function encode(message: PBTriggerAreaResult_Trigger, writer?: _m0.Writer): _m0.Writer;
59
+ function decode(input: _m0.Reader | Uint8Array, length?: number): PBTriggerAreaResult_Trigger;
60
+ }
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PBTriggerAreaResult_Trigger = exports.PBTriggerAreaResult = exports.TriggerAreaEventType = void 0;
7
+ /* eslint-disable */
8
+ const minimal_1 = __importDefault(require("protobufjs/minimal"));
9
+ const vectors_gen_1 = require("../../common/vectors.gen");
10
+ const protobufPackageSarasa = "decentraland.sdk.components";
11
+ /**
12
+ * @public
13
+ */
14
+ var TriggerAreaEventType;
15
+ (function (TriggerAreaEventType) {
16
+ TriggerAreaEventType[TriggerAreaEventType["TAET_ENTER"] = 0] = "TAET_ENTER";
17
+ TriggerAreaEventType[TriggerAreaEventType["TAET_STAY"] = 1] = "TAET_STAY";
18
+ TriggerAreaEventType[TriggerAreaEventType["TAET_EXIT"] = 2] = "TAET_EXIT";
19
+ })(TriggerAreaEventType = exports.TriggerAreaEventType || (exports.TriggerAreaEventType = {}));
20
+ function createBasePBTriggerAreaResult() {
21
+ return {
22
+ triggeredEntity: 0,
23
+ triggeredEntityPosition: undefined,
24
+ triggeredEntityRotation: undefined,
25
+ eventType: 0,
26
+ timestamp: 0,
27
+ trigger: undefined,
28
+ };
29
+ }
30
+ /**
31
+ * @public
32
+ */
33
+ var PBTriggerAreaResult;
34
+ (function (PBTriggerAreaResult) {
35
+ function encode(message, writer = minimal_1.default.Writer.create()) {
36
+ if (message.triggeredEntity !== 0) {
37
+ writer.uint32(8).uint32(message.triggeredEntity);
38
+ }
39
+ if (message.triggeredEntityPosition !== undefined) {
40
+ vectors_gen_1.Vector3.encode(message.triggeredEntityPosition, writer.uint32(18).fork()).ldelim();
41
+ }
42
+ if (message.triggeredEntityRotation !== undefined) {
43
+ vectors_gen_1.Quaternion.encode(message.triggeredEntityRotation, writer.uint32(26).fork()).ldelim();
44
+ }
45
+ if (message.eventType !== 0) {
46
+ writer.uint32(32).int32(message.eventType);
47
+ }
48
+ if (message.timestamp !== 0) {
49
+ writer.uint32(40).uint32(message.timestamp);
50
+ }
51
+ if (message.trigger !== undefined) {
52
+ PBTriggerAreaResult_Trigger.encode(message.trigger, writer.uint32(50).fork()).ldelim();
53
+ }
54
+ return writer;
55
+ }
56
+ PBTriggerAreaResult.encode = encode;
57
+ function decode(input, length) {
58
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
59
+ let end = length === undefined ? reader.len : reader.pos + length;
60
+ const message = createBasePBTriggerAreaResult();
61
+ while (reader.pos < end) {
62
+ const tag = reader.uint32();
63
+ switch (tag >>> 3) {
64
+ case 1:
65
+ if (tag !== 8) {
66
+ break;
67
+ }
68
+ message.triggeredEntity = reader.uint32();
69
+ continue;
70
+ case 2:
71
+ if (tag !== 18) {
72
+ break;
73
+ }
74
+ message.triggeredEntityPosition = vectors_gen_1.Vector3.decode(reader, reader.uint32());
75
+ continue;
76
+ case 3:
77
+ if (tag !== 26) {
78
+ break;
79
+ }
80
+ message.triggeredEntityRotation = vectors_gen_1.Quaternion.decode(reader, reader.uint32());
81
+ continue;
82
+ case 4:
83
+ if (tag !== 32) {
84
+ break;
85
+ }
86
+ message.eventType = reader.int32();
87
+ continue;
88
+ case 5:
89
+ if (tag !== 40) {
90
+ break;
91
+ }
92
+ message.timestamp = reader.uint32();
93
+ continue;
94
+ case 6:
95
+ if (tag !== 50) {
96
+ break;
97
+ }
98
+ message.trigger = PBTriggerAreaResult_Trigger.decode(reader, reader.uint32());
99
+ continue;
100
+ }
101
+ if ((tag & 7) === 4 || tag === 0) {
102
+ break;
103
+ }
104
+ reader.skipType(tag & 7);
105
+ }
106
+ return message;
107
+ }
108
+ PBTriggerAreaResult.decode = decode;
109
+ })(PBTriggerAreaResult = exports.PBTriggerAreaResult || (exports.PBTriggerAreaResult = {}));
110
+ function createBasePBTriggerAreaResult_Trigger() {
111
+ return { entity: 0, layers: 0, position: undefined, rotation: undefined, scale: undefined };
112
+ }
113
+ /**
114
+ * @public
115
+ */
116
+ var PBTriggerAreaResult_Trigger;
117
+ (function (PBTriggerAreaResult_Trigger) {
118
+ function encode(message, writer = minimal_1.default.Writer.create()) {
119
+ if (message.entity !== 0) {
120
+ writer.uint32(8).uint32(message.entity);
121
+ }
122
+ if (message.layers !== 0) {
123
+ writer.uint32(16).uint32(message.layers);
124
+ }
125
+ if (message.position !== undefined) {
126
+ vectors_gen_1.Vector3.encode(message.position, writer.uint32(26).fork()).ldelim();
127
+ }
128
+ if (message.rotation !== undefined) {
129
+ vectors_gen_1.Quaternion.encode(message.rotation, writer.uint32(34).fork()).ldelim();
130
+ }
131
+ if (message.scale !== undefined) {
132
+ vectors_gen_1.Vector3.encode(message.scale, writer.uint32(42).fork()).ldelim();
133
+ }
134
+ return writer;
135
+ }
136
+ PBTriggerAreaResult_Trigger.encode = encode;
137
+ function decode(input, length) {
138
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
139
+ let end = length === undefined ? reader.len : reader.pos + length;
140
+ const message = createBasePBTriggerAreaResult_Trigger();
141
+ while (reader.pos < end) {
142
+ const tag = reader.uint32();
143
+ switch (tag >>> 3) {
144
+ case 1:
145
+ if (tag !== 8) {
146
+ break;
147
+ }
148
+ message.entity = reader.uint32();
149
+ continue;
150
+ case 2:
151
+ if (tag !== 16) {
152
+ break;
153
+ }
154
+ message.layers = reader.uint32();
155
+ continue;
156
+ case 3:
157
+ if (tag !== 26) {
158
+ break;
159
+ }
160
+ message.position = vectors_gen_1.Vector3.decode(reader, reader.uint32());
161
+ continue;
162
+ case 4:
163
+ if (tag !== 34) {
164
+ break;
165
+ }
166
+ message.rotation = vectors_gen_1.Quaternion.decode(reader, reader.uint32());
167
+ continue;
168
+ case 5:
169
+ if (tag !== 42) {
170
+ break;
171
+ }
172
+ message.scale = vectors_gen_1.Vector3.decode(reader, reader.uint32());
173
+ continue;
174
+ }
175
+ if ((tag & 7) === 4 || tag === 0) {
176
+ break;
177
+ }
178
+ reader.skipType(tag & 7);
179
+ }
180
+ return message;
181
+ }
182
+ PBTriggerAreaResult_Trigger.decode = decode;
183
+ })(PBTriggerAreaResult_Trigger = exports.PBTriggerAreaResult_Trigger || (exports.PBTriggerAreaResult_Trigger = {}));
@@ -17,6 +17,8 @@ import { MediaState } from './generated/pb/decentraland/sdk/components/common/me
17
17
  import { VirtualCameraComponentDefinitionExtended } from './extended/VirtualCamera';
18
18
  import { InputModifierComponentDefinitionExtended } from './extended/InputModifier';
19
19
  import { LightSourceComponentDefinitionExtended } from './extended/LightSource';
20
+ import { TriggerAreaComponentDefinitionExtended } from './extended/TriggerArea';
21
+ import { TagsComponentDefinitionExtended } from './manual/Tags';
20
22
  export * from './generated/index.gen';
21
23
  export type { GrowOnlyValueSetComponentDefinition, LastWriteWinElementSetComponentDefinition, LwwComponentGetter, GSetComponentGetter };
22
24
  export declare const Transform: LwwComponentGetter<TransformComponentExtended>;
@@ -30,10 +32,12 @@ export declare const Tween: LwwComponentGetter<TweenComponentDefinitionExtended>
30
32
  export declare const VirtualCamera: LwwComponentGetter<VirtualCameraComponentDefinitionExtended>;
31
33
  export declare const InputModifier: LwwComponentGetter<InputModifierComponentDefinitionExtended>;
32
34
  export declare const LightSource: LwwComponentGetter<LightSourceComponentDefinitionExtended>;
35
+ export declare const TriggerArea: LwwComponentGetter<TriggerAreaComponentDefinitionExtended>;
33
36
  /**
34
37
  * @alpha
35
38
  */
36
39
  export declare const Name: (engine: Pick<IEngine, 'defineComponent'>) => LastWriteWinElementSetComponentDefinition<NameType>;
40
+ export declare const Tags: (engine: Pick<IEngine, 'defineComponent'>) => TagsComponentDefinitionExtended;
37
41
  /**
38
42
  * @alpha
39
43
  */
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.MediaState = exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.Name = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.MeshCollider = exports.MeshRenderer = exports.AudioStream = exports.AudioSource = exports.Animator = exports.Material = exports.Transform = void 0;
20
+ exports.MediaState = exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.Tags = exports.Name = exports.TriggerArea = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.MeshCollider = exports.MeshRenderer = exports.AudioStream = exports.AudioSource = exports.Animator = exports.Material = exports.Transform = void 0;
21
21
  const Animator_1 = require("./extended/Animator");
22
22
  const AudioSource_1 = require("./extended/AudioSource");
23
23
  const Material_1 = require("./extended/Material");
@@ -35,6 +35,8 @@ Object.defineProperty(exports, "MediaState", { enumerable: true, get: function (
35
35
  const VirtualCamera_1 = require("./extended/VirtualCamera");
36
36
  const InputModifier_1 = require("./extended/InputModifier");
37
37
  const LightSource_1 = require("./extended/LightSource");
38
+ const TriggerArea_1 = require("./extended/TriggerArea");
39
+ const Tags_1 = __importDefault(require("./manual/Tags"));
38
40
  __exportStar(require("./generated/index.gen"), exports);
39
41
  /* @__PURE__ */
40
42
  const Transform = (engine) => (0, Transform_1.defineTransformComponent)(engine);
@@ -69,12 +71,18 @@ exports.InputModifier = InputModifier;
69
71
  /* @__PURE__ */
70
72
  const LightSource = (engine) => (0, LightSource_1.defineLightSourceComponent)(engine);
71
73
  exports.LightSource = LightSource;
74
+ /* @__PURE__ */
75
+ const TriggerArea = (engine) => (0, TriggerArea_1.defineTriggerAreaComponent)(engine);
76
+ exports.TriggerArea = TriggerArea;
72
77
  /**
73
78
  * @alpha
74
79
  */
75
80
  /* @__PURE__ */
76
81
  const Name = (engine) => (0, Name_1.default)(engine);
77
82
  exports.Name = Name;
83
+ /* @__PURE__ */
84
+ const Tags = (engine) => (0, Tags_1.default)(engine);
85
+ exports.Tags = Tags;
78
86
  /**
79
87
  * @alpha
80
88
  */
@@ -0,0 +1,34 @@
1
+ import { IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine/types';
2
+ import { Entity } from '../../engine';
3
+ export interface TagsType {
4
+ tags: string[];
5
+ }
6
+ export interface TagsComponentDefinitionExtended extends LastWriteWinElementSetComponentDefinition<TagsType> {
7
+ /**
8
+ * @public
9
+ *
10
+ * Add a tag to the entity's Tags component or create the component if it doesn't exist and add the tag
11
+ * @param entity - entity to add the tag to
12
+ * @param tagName - the tag name to add
13
+ * @returns true
14
+ */
15
+ add(entity: Entity, tagName: string): boolean;
16
+ /**
17
+ * @public
18
+ *
19
+ * Remove a tag from the entity's Tags component
20
+ * @param entity - entity to remove the tag from
21
+ * @param tagName - the tag name to remove
22
+ * @returns true if successful, false if the entity doesn't have a Tags component or the tag doesn't exist
23
+ */
24
+ remove(entity: Entity, tagName: string): boolean;
25
+ }
26
+ /**
27
+ * @public
28
+ *
29
+ * Define the Tags component
30
+ * @param engine - the engine to define the component on
31
+ * @returns the Tags component definition
32
+ */
33
+ declare function defineTagsComponent(engine: Pick<IEngine, 'defineComponent'>): TagsComponentDefinitionExtended;
34
+ export default defineTagsComponent;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schemas_1 = require("../../schemas");
4
+ /**
5
+ * @public
6
+ *
7
+ * Define the Tags component
8
+ * @param engine - the engine to define the component on
9
+ * @returns the Tags component definition
10
+ */
11
+ function defineTagsComponent(engine) {
12
+ const Tags = engine.defineComponent('core-schema::Tags', {
13
+ tags: schemas_1.Schemas.Array(schemas_1.Schemas.String)
14
+ });
15
+ return {
16
+ ...Tags,
17
+ add(entity, tagName) {
18
+ const tagsComponent = Tags.getMutableOrNull(entity);
19
+ if (tagsComponent) {
20
+ tagsComponent.tags.push(tagName);
21
+ }
22
+ else {
23
+ Tags.createOrReplace(entity, { tags: [tagName] });
24
+ }
25
+ return true;
26
+ },
27
+ remove(entity, tagName) {
28
+ const tagsComponent = Tags.getMutableOrNull(entity);
29
+ if (!tagsComponent || !tagsComponent.tags)
30
+ return false;
31
+ const newTags = tagsComponent.tags.filter((tag) => tag !== tagName);
32
+ if (newTags.length === tagsComponent.tags.length)
33
+ return false;
34
+ tagsComponent.tags = newTags;
35
+ return true;
36
+ }
37
+ };
38
+ }
39
+ exports.default = defineTagsComponent;
@@ -8,8 +8,10 @@ export type { TweenHelper, TweenComponentDefinitionExtended } from './extended/T
8
8
  export type { CameraTransitionHelper, VirtualCameraComponentDefinitionExtended } from './extended/VirtualCamera';
9
9
  export type { TransformComponentExtended, TransformTypeWithOptionals } from './manual/Transform';
10
10
  export type { NameComponent, NameType } from './manual/Name';
11
+ export type { TagsComponentDefinitionExtended, TagsType } from './manual/Tags';
11
12
  export type { ISyncComponents, ISyncComponentsType } from './manual/SyncComponents';
12
13
  export type { INetowrkEntity, INetowrkEntityType } from './manual/NetworkEntity';
13
14
  export type { INetowrkParent, INetowrkParentType } from './manual/NetworkParent';
14
15
  export type { InputModifierHelper, InputModifierComponentDefinitionExtended } from './extended/InputModifier';
15
16
  export type { LightSourceHelper, LightSourceComponentDefinitionExtended } from './extended/LightSource';
17
+ export type { TriggerAreaComponentDefinitionExtended } from './extended/TriggerArea';
@@ -172,6 +172,14 @@ function preEngine(options) {
172
172
  const entity = getEntityOrNullByName(value);
173
173
  return entity;
174
174
  }
175
+ function* getEntitiesByTag(tagName) {
176
+ const TagComponent = components.Tags({ defineComponent });
177
+ for (const [entity, component] of getEntitiesWith(TagComponent)) {
178
+ if (entity !== 0 && component.tags?.some((tag) => tag === tagName)) {
179
+ yield entity;
180
+ }
181
+ }
182
+ }
175
183
  function* getComponentDefGroup(...args) {
176
184
  const [firstComponentDef, ...componentDefinitions] = args;
177
185
  for (const [entity] of firstComponentDef.iterator()) {
@@ -220,6 +228,7 @@ function preEngine(options) {
220
228
  getComponentOrNull: getComponentOrNull,
221
229
  getEntityOrNullByName,
222
230
  getEntityByName,
231
+ getEntitiesByTag,
223
232
  removeComponentDefinition,
224
233
  registerComponentDefinition,
225
234
  entityContainer,
@@ -275,6 +284,7 @@ function Engine(options) {
275
284
  seal: partialEngine.seal,
276
285
  getEntityOrNullByName: partialEngine.getEntityOrNullByName,
277
286
  getEntityByName: partialEngine.getEntityByName,
287
+ getEntitiesByTag: partialEngine.getEntitiesByTag,
278
288
  update,
279
289
  RootEntity: 0,
280
290
  PlayerEntity: 1,
@@ -196,6 +196,13 @@ export interface IEngine {
196
196
  * @typeParam T - The type of the entity name value
197
197
  */
198
198
  getEntityByName<T = never, K = T>(value: K & (T extends never ? never : string)): Entity;
199
+ /**
200
+ * @public
201
+ * Get all entities that have a specific tag in their Tag component
202
+ * @param tag - Tag to search
203
+ * @returns Iterator of entities that have the given tag
204
+ */
205
+ getEntitiesByTag(tagName: string): Iterable<Entity>;
199
206
  /**
200
207
  * @public
201
208
  * @param deltaTime - deltaTime in seconds
@@ -9,10 +9,12 @@ export * from './systems/raycast';
9
9
  export * from './systems/videoEvents';
10
10
  export * from './systems/async-task';
11
11
  export * from './systems/tween';
12
+ export * from './systems/triggerArea';
12
13
  export * from './engine/entity';
13
14
  export * from './components/types';
14
- import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, AudioSourceComponentDefinitionExtended, AudioStreamComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended, INetowrkEntity, INetowrkParent, VirtualCameraComponentDefinitionExtended, InputModifierComponentDefinitionExtended, LightSourceComponentDefinitionExtended } from './components/types';
15
+ import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, AudioSourceComponentDefinitionExtended, AudioStreamComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended, INetowrkEntity, INetowrkParent, VirtualCameraComponentDefinitionExtended, InputModifierComponentDefinitionExtended, LightSourceComponentDefinitionExtended, TriggerAreaComponentDefinitionExtended } from './components/types';
15
16
  import { NameComponent } from './components/manual/Name';
17
+ import { TagsComponentDefinitionExtended } from './components/manual/Tags';
16
18
  export declare const Transform: TransformComponentExtended;
17
19
  export declare const Animator: AnimatorComponentDefinitionExtended;
18
20
  export declare const AudioSource: AudioSourceComponentDefinitionExtended;
@@ -21,10 +23,12 @@ export declare const Material: MaterialComponentDefinitionExtended;
21
23
  export declare const MeshRenderer: MeshRendererComponentDefinitionExtended;
22
24
  export declare const MeshCollider: MeshColliderComponentDefinitionExtended;
23
25
  export declare const Name: NameComponent;
26
+ export declare const Tags: TagsComponentDefinitionExtended;
24
27
  export declare const Tween: TweenComponentDefinitionExtended;
25
28
  export declare const VirtualCamera: VirtualCameraComponentDefinitionExtended;
26
29
  export declare const InputModifier: InputModifierComponentDefinitionExtended;
27
30
  export declare const LightSource: LightSourceComponentDefinitionExtended;
31
+ export declare const TriggerArea: TriggerAreaComponentDefinitionExtended;
28
32
  /**
29
33
  * @alpha
30
34
  * This is going to be used for sync components through a server.