@dcl/ecs 7.19.1-21526551025.commit-799f37f → 7.19.1-21595262606.commit-a6f1c20

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 (73) hide show
  1. package/dist/components/extended/AudioAnalysis.d.ts +55 -0
  2. package/dist/components/extended/AudioAnalysis.js +66 -0
  3. package/dist/components/generated/AssetLoad.gen.d.ts +1 -0
  4. package/dist/components/generated/AssetLoad.gen.js +25 -0
  5. package/dist/components/generated/AssetLoadLoadingState.gen.d.ts +1 -0
  6. package/dist/components/generated/AssetLoadLoadingState.gen.js +25 -0
  7. package/dist/components/generated/AudioAnalysis.gen.d.ts +1 -0
  8. package/dist/components/generated/AudioAnalysis.gen.js +25 -0
  9. package/dist/components/generated/AvatarLocomotionSettings.gen.d.ts +1 -0
  10. package/dist/components/generated/AvatarLocomotionSettings.gen.js +25 -0
  11. package/dist/components/generated/component-names.gen.js +4 -0
  12. package/dist/components/generated/global.gen.d.ts +8 -0
  13. package/dist/components/generated/global.gen.js +4 -0
  14. package/dist/components/generated/index.gen.d.ts +16 -0
  15. package/dist/components/generated/index.gen.js +22 -0
  16. package/dist/components/generated/pb/decentraland/sdk/components/asset_load.gen.d.ts +15 -0
  17. package/dist/components/generated/pb/decentraland/sdk/components/asset_load.gen.js +41 -0
  18. package/dist/components/generated/pb/decentraland/sdk/components/asset_load_loading_state.gen.d.ts +25 -0
  19. package/dist/components/generated/pb/decentraland/sdk/components/asset_load_loading_state.gen.js +59 -0
  20. package/dist/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
  21. package/dist/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +161 -0
  22. package/dist/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.d.ts +29 -0
  23. package/dist/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.js +93 -0
  24. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +2 -1
  25. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -0
  26. package/dist/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.d.ts +3 -0
  27. package/dist/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.js +10 -1
  28. package/dist/components/index.d.ts +4 -0
  29. package/dist/components/index.js +3 -0
  30. package/dist/components/types.d.ts +1 -0
  31. package/dist/index.d.ts +3 -1
  32. package/dist/index.js +2 -0
  33. package/dist/runtime/initialization/index.d.ts +7 -0
  34. package/dist/runtime/initialization/index.js +7 -0
  35. package/dist/systems/assetLoad.d.ts +13 -0
  36. package/dist/systems/assetLoad.js +47 -0
  37. package/dist-cjs/components/extended/AudioAnalysis.d.ts +55 -0
  38. package/dist-cjs/components/extended/AudioAnalysis.js +70 -0
  39. package/dist-cjs/components/generated/AssetLoad.gen.d.ts +1 -0
  40. package/dist-cjs/components/generated/AssetLoad.gen.js +28 -0
  41. package/dist-cjs/components/generated/AssetLoadLoadingState.gen.d.ts +1 -0
  42. package/dist-cjs/components/generated/AssetLoadLoadingState.gen.js +28 -0
  43. package/dist-cjs/components/generated/AudioAnalysis.gen.d.ts +1 -0
  44. package/dist-cjs/components/generated/AudioAnalysis.gen.js +28 -0
  45. package/dist-cjs/components/generated/AvatarLocomotionSettings.gen.d.ts +1 -0
  46. package/dist-cjs/components/generated/AvatarLocomotionSettings.gen.js +28 -0
  47. package/dist-cjs/components/generated/component-names.gen.js +4 -0
  48. package/dist-cjs/components/generated/global.gen.d.ts +8 -0
  49. package/dist-cjs/components/generated/global.gen.js +5 -1
  50. package/dist-cjs/components/generated/index.gen.d.ts +16 -0
  51. package/dist-cjs/components/generated/index.gen.js +28 -2
  52. package/dist-cjs/components/generated/pb/decentraland/sdk/components/asset_load.gen.d.ts +15 -0
  53. package/dist-cjs/components/generated/pb/decentraland/sdk/components/asset_load.gen.js +47 -0
  54. package/dist-cjs/components/generated/pb/decentraland/sdk/components/asset_load_loading_state.gen.d.ts +25 -0
  55. package/dist-cjs/components/generated/pb/decentraland/sdk/components/asset_load_loading_state.gen.js +65 -0
  56. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
  57. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +167 -0
  58. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.d.ts +29 -0
  59. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_locomotion_settings.gen.js +99 -0
  60. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +2 -1
  61. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -0
  62. package/dist-cjs/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.d.ts +3 -0
  63. package/dist-cjs/components/generated/pb/decentraland/sdk/components/virtual_camera.gen.js +10 -1
  64. package/dist-cjs/components/index.d.ts +4 -0
  65. package/dist-cjs/components/index.js +5 -1
  66. package/dist-cjs/components/types.d.ts +1 -0
  67. package/dist-cjs/index.d.ts +3 -1
  68. package/dist-cjs/index.js +3 -1
  69. package/dist-cjs/runtime/initialization/index.d.ts +7 -0
  70. package/dist-cjs/runtime/initialization/index.js +8 -1
  71. package/dist-cjs/systems/assetLoad.d.ts +13 -0
  72. package/dist-cjs/systems/assetLoad.js +74 -0
  73. package/package.json +2 -2
@@ -0,0 +1,161 @@
1
+ /* eslint-disable */
2
+ import _m0 from "protobufjs/minimal";
3
+ const protobufPackageSarasa = "decentraland.sdk.components";
4
+ /**
5
+ * @public
6
+ */
7
+ export var PBAudioAnalysisMode;
8
+ (function (PBAudioAnalysisMode) {
9
+ PBAudioAnalysisMode[PBAudioAnalysisMode["MODE_RAW"] = 0] = "MODE_RAW";
10
+ PBAudioAnalysisMode[PBAudioAnalysisMode["MODE_LOGARITHMIC"] = 1] = "MODE_LOGARITHMIC";
11
+ })(PBAudioAnalysisMode || (PBAudioAnalysisMode = {}));
12
+ function createBasePBAudioAnalysis() {
13
+ return {
14
+ mode: 0,
15
+ amplitudeGain: undefined,
16
+ bandsGain: undefined,
17
+ amplitude: 0,
18
+ band0: 0,
19
+ band1: 0,
20
+ band2: 0,
21
+ band3: 0,
22
+ band4: 0,
23
+ band5: 0,
24
+ band6: 0,
25
+ band7: 0,
26
+ };
27
+ }
28
+ /**
29
+ * @public
30
+ */
31
+ export var PBAudioAnalysis;
32
+ (function (PBAudioAnalysis) {
33
+ function encode(message, writer = _m0.Writer.create()) {
34
+ if (message.mode !== 0) {
35
+ writer.uint32(8).int32(message.mode);
36
+ }
37
+ if (message.amplitudeGain !== undefined) {
38
+ writer.uint32(805).float(message.amplitudeGain);
39
+ }
40
+ if (message.bandsGain !== undefined) {
41
+ writer.uint32(813).float(message.bandsGain);
42
+ }
43
+ if (message.amplitude !== 0) {
44
+ writer.uint32(1605).float(message.amplitude);
45
+ }
46
+ if (message.band0 !== 0) {
47
+ writer.uint32(1613).float(message.band0);
48
+ }
49
+ if (message.band1 !== 0) {
50
+ writer.uint32(1621).float(message.band1);
51
+ }
52
+ if (message.band2 !== 0) {
53
+ writer.uint32(1629).float(message.band2);
54
+ }
55
+ if (message.band3 !== 0) {
56
+ writer.uint32(1637).float(message.band3);
57
+ }
58
+ if (message.band4 !== 0) {
59
+ writer.uint32(1645).float(message.band4);
60
+ }
61
+ if (message.band5 !== 0) {
62
+ writer.uint32(1653).float(message.band5);
63
+ }
64
+ if (message.band6 !== 0) {
65
+ writer.uint32(1661).float(message.band6);
66
+ }
67
+ if (message.band7 !== 0) {
68
+ writer.uint32(1669).float(message.band7);
69
+ }
70
+ return writer;
71
+ }
72
+ PBAudioAnalysis.encode = encode;
73
+ function decode(input, length) {
74
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
75
+ let end = length === undefined ? reader.len : reader.pos + length;
76
+ const message = createBasePBAudioAnalysis();
77
+ while (reader.pos < end) {
78
+ const tag = reader.uint32();
79
+ switch (tag >>> 3) {
80
+ case 1:
81
+ if (tag !== 8) {
82
+ break;
83
+ }
84
+ message.mode = reader.int32();
85
+ continue;
86
+ case 100:
87
+ if (tag !== 805) {
88
+ break;
89
+ }
90
+ message.amplitudeGain = reader.float();
91
+ continue;
92
+ case 101:
93
+ if (tag !== 813) {
94
+ break;
95
+ }
96
+ message.bandsGain = reader.float();
97
+ continue;
98
+ case 200:
99
+ if (tag !== 1605) {
100
+ break;
101
+ }
102
+ message.amplitude = reader.float();
103
+ continue;
104
+ case 201:
105
+ if (tag !== 1613) {
106
+ break;
107
+ }
108
+ message.band0 = reader.float();
109
+ continue;
110
+ case 202:
111
+ if (tag !== 1621) {
112
+ break;
113
+ }
114
+ message.band1 = reader.float();
115
+ continue;
116
+ case 203:
117
+ if (tag !== 1629) {
118
+ break;
119
+ }
120
+ message.band2 = reader.float();
121
+ continue;
122
+ case 204:
123
+ if (tag !== 1637) {
124
+ break;
125
+ }
126
+ message.band3 = reader.float();
127
+ continue;
128
+ case 205:
129
+ if (tag !== 1645) {
130
+ break;
131
+ }
132
+ message.band4 = reader.float();
133
+ continue;
134
+ case 206:
135
+ if (tag !== 1653) {
136
+ break;
137
+ }
138
+ message.band5 = reader.float();
139
+ continue;
140
+ case 207:
141
+ if (tag !== 1661) {
142
+ break;
143
+ }
144
+ message.band6 = reader.float();
145
+ continue;
146
+ case 208:
147
+ if (tag !== 1669) {
148
+ break;
149
+ }
150
+ message.band7 = reader.float();
151
+ continue;
152
+ }
153
+ if ((tag & 7) === 4 || tag === 0) {
154
+ break;
155
+ }
156
+ reader.skipType(tag & 7);
157
+ }
158
+ return message;
159
+ }
160
+ PBAudioAnalysis.decode = decode;
161
+ })(PBAudioAnalysis || (PBAudioAnalysis = {}));
@@ -0,0 +1,29 @@
1
+ import _m0 from "protobufjs/minimal";
2
+ /**
3
+ * The PBAvatarLocomotionSettings component allows scenes to modify locomotion settings defining things such
4
+ * as the avatar movement speed, jump height etc.
5
+ */
6
+ /**
7
+ * @public
8
+ */
9
+ export interface PBAvatarLocomotionSettings {
10
+ /** Maximum speed when walking (in meters per second) */
11
+ walkSpeed?: number | undefined;
12
+ /** Maximum speed when jogging (in meters per second) */
13
+ jogSpeed?: number | undefined;
14
+ /** Maximum speed when running (in meters per second) */
15
+ runSpeed?: number | undefined;
16
+ /** Height of a regular jump (in meters) */
17
+ jumpHeight?: number | undefined;
18
+ /** Height of a jump while running (in meters) */
19
+ runJumpHeight?: number | undefined;
20
+ /** Cooldown time after a hard landing before the avatar can move again (in seconds) */
21
+ hardLandingCooldown?: number | undefined;
22
+ }
23
+ /**
24
+ * @public
25
+ */
26
+ export declare namespace PBAvatarLocomotionSettings {
27
+ function encode(message: PBAvatarLocomotionSettings, writer?: _m0.Writer): _m0.Writer;
28
+ function decode(input: _m0.Reader | Uint8Array, length?: number): PBAvatarLocomotionSettings;
29
+ }
@@ -0,0 +1,93 @@
1
+ /* eslint-disable */
2
+ import _m0 from "protobufjs/minimal";
3
+ const protobufPackageSarasa = "decentraland.sdk.components";
4
+ function createBasePBAvatarLocomotionSettings() {
5
+ return {
6
+ walkSpeed: undefined,
7
+ jogSpeed: undefined,
8
+ runSpeed: undefined,
9
+ jumpHeight: undefined,
10
+ runJumpHeight: undefined,
11
+ hardLandingCooldown: undefined,
12
+ };
13
+ }
14
+ /**
15
+ * @public
16
+ */
17
+ export var PBAvatarLocomotionSettings;
18
+ (function (PBAvatarLocomotionSettings) {
19
+ function encode(message, writer = _m0.Writer.create()) {
20
+ if (message.walkSpeed !== undefined) {
21
+ writer.uint32(13).float(message.walkSpeed);
22
+ }
23
+ if (message.jogSpeed !== undefined) {
24
+ writer.uint32(21).float(message.jogSpeed);
25
+ }
26
+ if (message.runSpeed !== undefined) {
27
+ writer.uint32(29).float(message.runSpeed);
28
+ }
29
+ if (message.jumpHeight !== undefined) {
30
+ writer.uint32(37).float(message.jumpHeight);
31
+ }
32
+ if (message.runJumpHeight !== undefined) {
33
+ writer.uint32(45).float(message.runJumpHeight);
34
+ }
35
+ if (message.hardLandingCooldown !== undefined) {
36
+ writer.uint32(53).float(message.hardLandingCooldown);
37
+ }
38
+ return writer;
39
+ }
40
+ PBAvatarLocomotionSettings.encode = encode;
41
+ function decode(input, length) {
42
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
43
+ let end = length === undefined ? reader.len : reader.pos + length;
44
+ const message = createBasePBAvatarLocomotionSettings();
45
+ while (reader.pos < end) {
46
+ const tag = reader.uint32();
47
+ switch (tag >>> 3) {
48
+ case 1:
49
+ if (tag !== 13) {
50
+ break;
51
+ }
52
+ message.walkSpeed = reader.float();
53
+ continue;
54
+ case 2:
55
+ if (tag !== 21) {
56
+ break;
57
+ }
58
+ message.jogSpeed = reader.float();
59
+ continue;
60
+ case 3:
61
+ if (tag !== 29) {
62
+ break;
63
+ }
64
+ message.runSpeed = reader.float();
65
+ continue;
66
+ case 4:
67
+ if (tag !== 37) {
68
+ break;
69
+ }
70
+ message.jumpHeight = reader.float();
71
+ continue;
72
+ case 5:
73
+ if (tag !== 45) {
74
+ break;
75
+ }
76
+ message.runJumpHeight = reader.float();
77
+ continue;
78
+ case 6:
79
+ if (tag !== 53) {
80
+ break;
81
+ }
82
+ message.hardLandingCooldown = reader.float();
83
+ continue;
84
+ }
85
+ if ((tag & 7) === 4 || tag === 0) {
86
+ break;
87
+ }
88
+ reader.skipType(tag & 7);
89
+ }
90
+ return message;
91
+ }
92
+ PBAvatarLocomotionSettings.decode = decode;
93
+ })(PBAvatarLocomotionSettings || (PBAvatarLocomotionSettings = {}));
@@ -15,7 +15,8 @@ export declare const enum InputAction {
15
15
  IA_ACTION_3 = 10,
16
16
  IA_ACTION_4 = 11,
17
17
  IA_ACTION_5 = 12,
18
- IA_ACTION_6 = 13
18
+ IA_ACTION_6 = 13,
19
+ IA_MODIFIER = 14
19
20
  }
20
21
  /** PointerEventType is a kind of interaction that can be detected. */
21
22
  /**
@@ -19,6 +19,7 @@ export var InputAction;
19
19
  InputAction[InputAction["IA_ACTION_4"] = 11] = "IA_ACTION_4";
20
20
  InputAction[InputAction["IA_ACTION_5"] = 12] = "IA_ACTION_5";
21
21
  InputAction[InputAction["IA_ACTION_6"] = 13] = "IA_ACTION_6";
22
+ InputAction[InputAction["IA_MODIFIER"] = 14] = "IA_MODIFIER";
22
23
  })(InputAction || (InputAction = {}));
23
24
  /** PointerEventType is a kind of interaction that can be detected. */
24
25
  /**
@@ -6,6 +6,7 @@ import { CameraTransition } from "./common/camera_transition.gen";
6
6
  * an 'instant' transition (like using speed/time = 0)
7
7
  * * The lookAtEntity defines to which entity the Camera has to look at constantly (independent from
8
8
  * the holding entity transform).
9
+ * * The fov defines the Field of View of the virtual camera
9
10
  */
10
11
  /**
11
12
  * @public
@@ -13,6 +14,8 @@ import { CameraTransition } from "./common/camera_transition.gen";
13
14
  export interface PBVirtualCamera {
14
15
  defaultTransition?: CameraTransition | undefined;
15
16
  lookAtEntity?: number | undefined;
17
+ /** default: 60 */
18
+ fov?: number | undefined;
16
19
  }
17
20
  /**
18
21
  * @public
@@ -3,7 +3,7 @@ import _m0 from "protobufjs/minimal";
3
3
  import { CameraTransition } from "./common/camera_transition.gen";
4
4
  const protobufPackageSarasa = "decentraland.sdk.components";
5
5
  function createBasePBVirtualCamera() {
6
- return { defaultTransition: undefined, lookAtEntity: undefined };
6
+ return { defaultTransition: undefined, lookAtEntity: undefined, fov: undefined };
7
7
  }
8
8
  /**
9
9
  * @public
@@ -17,6 +17,9 @@ export var PBVirtualCamera;
17
17
  if (message.lookAtEntity !== undefined) {
18
18
  writer.uint32(16).uint32(message.lookAtEntity);
19
19
  }
20
+ if (message.fov !== undefined) {
21
+ writer.uint32(29).float(message.fov);
22
+ }
20
23
  return writer;
21
24
  }
22
25
  PBVirtualCamera.encode = encode;
@@ -39,6 +42,12 @@ export var PBVirtualCamera;
39
42
  }
40
43
  message.lookAtEntity = reader.uint32();
41
44
  continue;
45
+ case 3:
46
+ if (tag !== 29) {
47
+ break;
48
+ }
49
+ message.fov = reader.float();
50
+ continue;
42
51
  }
43
52
  if ((tag & 7) === 4 || tag === 0) {
44
53
  break;
@@ -2,6 +2,8 @@ import { GrowOnlyValueSetComponentDefinition, LastWriteWinElementSetComponentDef
2
2
  import { IEngine } from '../engine/types';
3
3
  import { AnimatorComponentDefinitionExtended } from './extended/Animator';
4
4
  import { AudioSourceComponentDefinitionExtended } from './extended/AudioSource';
5
+ import { AudioAnalysisComponentDefinitionExtended } from './extended/AudioAnalysis';
6
+ import type { AudioAnalysisView } from './extended/AudioAnalysis';
5
7
  import { MaterialComponentDefinitionExtended } from './extended/Material';
6
8
  import { MeshColliderComponentDefinitionExtended } from './extended/MeshCollider';
7
9
  import { MeshRendererComponentDefinitionExtended } from './extended/MeshRenderer';
@@ -25,6 +27,7 @@ export declare const Transform: LwwComponentGetter<TransformComponentExtended>;
25
27
  export declare const Material: LwwComponentGetter<MaterialComponentDefinitionExtended>;
26
28
  export declare const Animator: LwwComponentGetter<AnimatorComponentDefinitionExtended>;
27
29
  export declare const AudioSource: LwwComponentGetter<AudioSourceComponentDefinitionExtended>;
30
+ export declare const AudioAnalysis: LwwComponentGetter<AudioAnalysisComponentDefinitionExtended>;
28
31
  export declare const AudioStream: (engine: Pick<IEngine, 'defineComponentFromSchema' | 'defineValueSetComponentFromSchema'>) => AudioStreamComponentDefinitionExtended;
29
32
  export declare const MeshRenderer: LwwComponentGetter<MeshRendererComponentDefinitionExtended>;
30
33
  export declare const MeshCollider: LwwComponentGetter<MeshColliderComponentDefinitionExtended>;
@@ -51,3 +54,4 @@ export declare const NetworkEntity: (engine: Pick<IEngine, 'defineComponent'>) =
51
54
  */
52
55
  export declare const NetworkParent: (engine: Pick<IEngine, 'defineComponent'>) => LastWriteWinElementSetComponentDefinition<INetowrkParentType>;
53
56
  export { MediaState };
57
+ export type { AudioAnalysisView };
@@ -1,5 +1,6 @@
1
1
  import { defineAnimatorComponent } from './extended/Animator';
2
2
  import { defineAudioSourceComponent } from './extended/AudioSource';
3
+ import { defineAudioAnalysisComponent } from './extended/AudioAnalysis';
3
4
  import { defineMaterialComponent } from './extended/Material';
4
5
  import { defineMeshColliderComponent } from './extended/MeshCollider';
5
6
  import { defineMeshRendererComponent } from './extended/MeshRenderer';
@@ -26,6 +27,8 @@ export const Animator = (engine) => defineAnimatorComponent(engine);
26
27
  /* @__PURE__ */
27
28
  export const AudioSource = (engine) => defineAudioSourceComponent(engine);
28
29
  /* @__PURE__ */
30
+ export const AudioAnalysis = (engine) => defineAudioAnalysisComponent(engine);
31
+ /* @__PURE__ */
29
32
  export const AudioStream = (engine) => defineAudioStreamComponent(engine);
30
33
  /* @__PURE__ */
31
34
  export const MeshRenderer = (engine) => defineMeshRendererComponent(engine);
@@ -1,5 +1,6 @@
1
1
  export type { AnimatorComponentDefinitionExtended } from './extended/Animator';
2
2
  export type { AudioSourceComponentDefinitionExtended } from './extended/AudioSource';
3
+ export type { AudioAnalysisComponentDefinitionExtended, AudioAnalysisView } from './extended/AudioAnalysis';
3
4
  export type { AudioStreamComponentDefinitionExtended } from './extended/AudioStream';
4
5
  export type { MeshRendererComponentDefinitionExtended } from './extended/MeshRenderer';
5
6
  export type { MeshColliderComponentDefinitionExtended } from './extended/MeshCollider';
package/dist/index.d.ts CHANGED
@@ -7,17 +7,19 @@ export { cyclicParentingChecker } from './systems/cyclicParentingChecker';
7
7
  export * from './systems/events';
8
8
  export * from './systems/raycast';
9
9
  export * from './systems/videoEvents';
10
+ export * from './systems/assetLoad';
10
11
  export * from './systems/async-task';
11
12
  export * from './systems/tween';
12
13
  export * from './systems/triggerArea';
13
14
  export * from './engine/entity';
14
15
  export * from './components/types';
15
- import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, AudioSourceComponentDefinitionExtended, AudioStreamComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended, INetowrkEntity, INetowrkParent, VirtualCameraComponentDefinitionExtended, InputModifierComponentDefinitionExtended, LightSourceComponentDefinitionExtended, TriggerAreaComponentDefinitionExtended } from './components/types';
16
+ import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, AudioSourceComponentDefinitionExtended, AudioAnalysisComponentDefinitionExtended, AudioStreamComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended, INetowrkEntity, INetowrkParent, VirtualCameraComponentDefinitionExtended, InputModifierComponentDefinitionExtended, LightSourceComponentDefinitionExtended, TriggerAreaComponentDefinitionExtended } from './components/types';
16
17
  import { NameComponent } from './components/manual/Name';
17
18
  import { TagsComponentDefinitionExtended } from './components/manual/Tags';
18
19
  export declare const Transform: TransformComponentExtended;
19
20
  export declare const Animator: AnimatorComponentDefinitionExtended;
20
21
  export declare const AudioSource: AudioSourceComponentDefinitionExtended;
22
+ export declare const AudioAnalysis: AudioAnalysisComponentDefinitionExtended;
21
23
  export declare const AudioStream: AudioStreamComponentDefinitionExtended;
22
24
  export declare const Material: MaterialComponentDefinitionExtended;
23
25
  export declare const MeshRenderer: MeshRendererComponentDefinitionExtended;
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ export { cyclicParentingChecker } from './systems/cyclicParentingChecker';
8
8
  export * from './systems/events';
9
9
  export * from './systems/raycast';
10
10
  export * from './systems/videoEvents';
11
+ export * from './systems/assetLoad';
11
12
  export * from './systems/async-task';
12
13
  export * from './systems/tween';
13
14
  export * from './systems/triggerArea';
@@ -22,6 +23,7 @@ import { engine } from './runtime/initialization';
22
23
  export const Transform = /* @__PURE__*/ components.Transform(engine);
23
24
  export const Animator = /* @__PURE__*/ components.Animator(engine);
24
25
  export const AudioSource = /* @__PURE__*/ components.AudioSource(engine);
26
+ export const AudioAnalysis = /* @__PURE__*/ components.AudioAnalysis(engine);
25
27
  export const AudioStream = /* @__PURE__*/ components.AudioStream(engine);
26
28
  export const Material = /* @__PURE__*/ components.Material(engine);
27
29
  export const MeshRenderer = /* @__PURE__*/ components.MeshRenderer(engine);
@@ -8,6 +8,7 @@ import { PointerEventsSystem } from '../../systems/events';
8
8
  import { IInputSystem } from './../../engine/input';
9
9
  import { RaycastSystem } from '../../systems/raycast';
10
10
  import { VideoEventsSystem } from '../../systems/videoEvents';
11
+ import { AssetLoadLoadingStateSystem } from '../../systems/assetLoad';
11
12
  import { TweenSystem } from '../../systems/tween';
12
13
  import { TriggerAreaEventsSystem } from '../../systems/triggerArea';
13
14
  import { createTimers, Timers } from '../helpers/timers';
@@ -52,6 +53,12 @@ export { RaycastSystem };
52
53
  */
53
54
  export declare const videoEventsSystem: VideoEventsSystem;
54
55
  export { VideoEventsSystem };
56
+ /**
57
+ * @public
58
+ * Register callback functions to a particular entity on asset pre-load events.
59
+ */
60
+ export declare const assetLoadLoadingStateSystem: AssetLoadLoadingStateSystem;
61
+ export { AssetLoadLoadingStateSystem };
55
62
  /**
56
63
  * @public
57
64
  * Register callback functions to a particular entity on tween events.
@@ -8,6 +8,7 @@ import { createPointerEventsSystem } from '../../systems/events';
8
8
  import { createInputSystem } from './../../engine/input';
9
9
  import { createRaycastSystem } from '../../systems/raycast';
10
10
  import { createVideoEventsSystem } from '../../systems/videoEvents';
11
+ import { createAssetLoadLoadingStateSystem } from '../../systems/assetLoad';
11
12
  import { createTweenSystem } from '../../systems/tween';
12
13
  import { pointerEventColliderChecker } from '../../systems/pointer-event-collider-checker';
13
14
  import { createTriggerAreaEventsSystem } from '../../systems/triggerArea';
@@ -50,6 +51,12 @@ export const raycastSystem = /* @__PURE__ */ createRaycastSystem(engine);
50
51
  * Register callback functions to a particular entity on video events.
51
52
  */
52
53
  export const videoEventsSystem = /* @__PURE__ */ createVideoEventsSystem(engine);
54
+ /**
55
+ * @public
56
+ * Register callback functions to a particular entity on asset pre-load events.
57
+ */
58
+ export const assetLoadLoadingStateSystem =
59
+ /* @__PURE__ */ createAssetLoadLoadingStateSystem(engine);
53
60
  /**
54
61
  * @public
55
62
  * Register callback functions to a particular entity on tween events.
@@ -0,0 +1,13 @@
1
+ import { DeepReadonlyObject, Entity } from '../engine';
2
+ import { PBAssetLoadLoadingState } from '../components';
3
+ /**
4
+ * @public
5
+ */
6
+ export type AssetLoadLoadingStateSystemCallback = (event: DeepReadonlyObject<PBAssetLoadLoadingState>) => void;
7
+ /**
8
+ * @public
9
+ */
10
+ export interface AssetLoadLoadingStateSystem {
11
+ removeAssetLoadLoadingStateEntity(entity: Entity): void;
12
+ registerAssetLoadLoadingStateEntity(entity: Entity, callback: AssetLoadLoadingStateSystemCallback): void;
13
+ }
@@ -0,0 +1,47 @@
1
+ import * as components from '../components';
2
+ import { EntityState } from '../engine/entity';
3
+ /**
4
+ * @internal
5
+ */
6
+ export function createAssetLoadLoadingStateSystem(engine) {
7
+ const assetLoadLoadingStateComponent = components.AssetLoadLoadingState(engine);
8
+ const entitiesCallbackAssetLoadLoadingStateMap = new Map();
9
+ function registerAssetLoadLoadingStateEntity(entity, callback) {
10
+ entitiesCallbackAssetLoadLoadingStateMap.set(entity, { callback: callback, lastLoadingStateLength: 0 });
11
+ }
12
+ function removeAssetLoadLoadingStateEntity(entity) {
13
+ entitiesCallbackAssetLoadLoadingStateMap.delete(entity);
14
+ }
15
+ // @internal
16
+ engine.addSystem(function EventSystem() {
17
+ const garbageEntries = [];
18
+ for (const [entity, data] of entitiesCallbackAssetLoadLoadingStateMap) {
19
+ if (engine.getEntityState(entity) === EntityState.Removed) {
20
+ garbageEntries.push(entity);
21
+ continue;
22
+ }
23
+ const loadingState = assetLoadLoadingStateComponent.get(entity);
24
+ if (loadingState.size === 0 || loadingState.size === data.lastLoadingStateLength)
25
+ continue;
26
+ // Get last added values (can be multiple per tick, just not for the same asset)
27
+ const lastValues = Array.from(loadingState.values()).slice(data.lastLoadingStateLength);
28
+ lastValues.forEach((value) => {
29
+ data.callback(value);
30
+ });
31
+ entitiesCallbackAssetLoadLoadingStateMap.set(entity, {
32
+ callback: data.callback,
33
+ lastLoadingStateLength: loadingState.size
34
+ });
35
+ }
36
+ // Clean up garbage entries
37
+ garbageEntries.forEach((garbageEntity) => entitiesCallbackAssetLoadLoadingStateMap.delete(garbageEntity));
38
+ });
39
+ return {
40
+ removeAssetLoadLoadingStateEntity(entity) {
41
+ removeAssetLoadLoadingStateEntity(entity);
42
+ },
43
+ registerAssetLoadLoadingStateEntity(entity, callback) {
44
+ registerAssetLoadLoadingStateEntity(entity, callback);
45
+ }
46
+ };
47
+ }
@@ -0,0 +1,55 @@
1
+ import { Entity, IEngine } from '../../engine';
2
+ import { LastWriteWinElementSetComponentDefinition } from '../../engine/component';
3
+ import { PBAudioAnalysis, PBAudioAnalysisMode } from '../generated/pb/decentraland/sdk/components/audio_analysis.gen';
4
+ export interface AudioAnalysisComponentDefinitionExtended extends LastWriteWinElementSetComponentDefinition<PBAudioAnalysis> {
5
+ /**
6
+ * Reads the component data of `entity` into the provided `out` view.
7
+ *
8
+ * @throws Error if the entity does not have an AudioAnalysis component.
9
+ * @param entity - The entity whose AudioAnalysis data will be read.
10
+ * @param out - An existing AudioAnalysisView to populate with the latest values.
11
+ */
12
+ readIntoView(entity: Entity, out: AudioAnalysisView): void;
13
+ /**
14
+ * Attempts to read the component data of `entity` into the provided `out` view.
15
+ *
16
+ * @returns `true` if the component exists and data was written into `out`,
17
+ * `false` if the entity does not have an AudioAnalysis component.
18
+ * @param entity - The entity whose AudioAnalysis data will be read.
19
+ * @param out - An existing AudioAnalysisView to populate.
20
+ */
21
+ tryReadIntoView(entity: Entity, out: AudioAnalysisView): boolean;
22
+ /**
23
+ * Creates an AudioAnalysis component for the given `entity`.
24
+ *
25
+ * If a component already exists on the entity, this call fails (does not replace).
26
+ *
27
+ * @param entity - The entity to attach the component to.
28
+ * @param mode - Analysis mode. Defaults to `PBAudioAnalysisMode.MODE_LOGARITHMIC`.
29
+ * @param amplitudeGain - Optional amplitude gain multiplier.
30
+ * @param bandsGain - Optional gain multiplier applied to all frequency bands.
31
+ */
32
+ createAudioAnalysis(entity: Entity, mode?: PBAudioAnalysisMode, // default is PBAudioAnalysisMode.MODE_LOGARITHMIC
33
+ amplitudeGain?: number, bandsGain?: number): void;
34
+ /**
35
+ * Creates the AudioAnalysis component if missing, or replaces the existing one.
36
+ *
37
+ * @param entity - The target entity.
38
+ * @param mode - Analysis mode. Defaults to `PBAudioAnalysisMode.MODE_LOGARITHMIC`.
39
+ * @param amplitudeGain - Optional amplitude gain multiplier.
40
+ * @param bandsGain - Optional gain multiplier applied to the frequency bands.
41
+ */
42
+ createOrReplaceAudioAnalysis(entity: Entity, mode?: PBAudioAnalysisMode, // default is PBAudioAnalysisMode.MODE_LOGARITHMIC
43
+ amplitudeGain?: number, bandsGain?: number): void;
44
+ }
45
+ /**
46
+ * A read-only JavaScript-friendly view of AudioAnalysis ECS data.
47
+ *
48
+ * `amplitude` represents the aggregated signal strength.
49
+ * `bands` represents the processed frequency bands.
50
+ */
51
+ export type AudioAnalysisView = {
52
+ amplitude: number;
53
+ bands: number[];
54
+ };
55
+ export declare function defineAudioAnalysisComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): AudioAnalysisComponentDefinitionExtended;