@galacean/effects-core 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -153,4 +153,4 @@ Uniforms involved and their types:
153
153
  30. uWaveParams: vec4
154
154
  ```
155
155
 
156
- ## [API Documentation](https://galacean.antgroup.com/effects/#/api/modules_galacean_effects_core)
156
+ ## [API Documentation](https://galacean.antgroup.com/effects/api/effects-core)
@@ -4,7 +4,6 @@ import type { Engine } from './engine';
4
4
  import type { VFXItemProps } from './vfx-item';
5
5
  /**
6
6
  * @since 2.0.0
7
- * @internal
8
7
  */
9
8
  export declare class AssetLoader {
10
9
  private engine;
@@ -38,10 +38,6 @@ export declare class AssetManager implements Disposable {
38
38
  */
39
39
  constructor(options?: SceneLoadOptions, downloader?: Downloader);
40
40
  updateOptions(options?: SceneLoadOptions): void;
41
- /**
42
- * 根据用户传入的参数修改场景数据
43
- */
44
- private updateSceneData;
45
41
  /**
46
42
  * 场景创建,通过 json 创建出场景对象,并进行提前编译等工作
47
43
  * @param url - json 的 URL 链接或者 json 对象
@@ -15,7 +15,6 @@ export interface SceneBindingData {
15
15
  }
16
16
  /**
17
17
  * @since 2.0.0
18
- * @internal
19
18
  */
20
19
  export declare class CompositionComponent extends Behaviour {
21
20
  time: number;
@@ -33,6 +32,8 @@ export declare class CompositionComponent extends Behaviour {
33
32
  getReusable(): boolean;
34
33
  update(dt: number): void;
35
34
  createContent(): void;
35
+ showItems(): void;
36
+ hideItems(): void;
36
37
  onDestroy(): void;
37
38
  hitTest(ray: Ray, x: number, y: number, regions: Region[], force?: boolean, options?: CompositionHitTestOptions): Region[];
38
39
  fromData(data: unknown): void;
@@ -2,7 +2,6 @@ import { EffectsObject } from '../effects-object';
2
2
  import type { VFXItem } from '../vfx-item';
3
3
  /**
4
4
  * @since 2.0.0
5
- * @internal
6
5
  */
7
6
  export declare abstract class Component extends EffectsObject {
8
7
  name: string;
@@ -21,7 +20,6 @@ export declare abstract class Component extends EffectsObject {
21
20
  }
22
21
  /**
23
22
  * @since 2.0.0
24
- * @internal
25
23
  */
26
24
  export declare abstract class Behaviour extends Component {
27
25
  isAwakeCalled: boolean;
@@ -8,7 +8,6 @@ import { DestroyOptions } from '../utils';
8
8
  import { RendererComponent } from './renderer-component';
9
9
  /**
10
10
  * @since 2.0.0
11
- * @internal
12
11
  */
13
12
  export declare class EffectComponent extends RendererComponent {
14
13
  /**
@@ -278,7 +278,6 @@ export declare class Composition extends EventEmitter<CompositionEvent<Compositi
278
278
  /**
279
279
  * 前进合成到指定时间
280
280
  * @param time - 相对0时刻的时间
281
- * @param skipRender - 是否跳过渲染
282
281
  */
283
282
  private forwardTime;
284
283
  /**
@@ -290,7 +289,6 @@ export declare class Composition extends EventEmitter<CompositionEvent<Compositi
290
289
  /**
291
290
  * 合成更新,针对所有 item 的更新
292
291
  * @param deltaTime - 更新的时间步长
293
- * @param skipRender - 是否需要渲染
294
292
  */
295
293
  update(deltaTime: number): void;
296
294
  private toLocalTime;
@@ -362,31 +360,11 @@ export declare class Composition extends EventEmitter<CompositionEvent<Compositi
362
360
  * @param type - 交互类型
363
361
  */
364
362
  removeInteractiveItem(item: VFXItem, type: spec.InteractType): void;
365
- /**
366
- * 销毁插件 Item 中保存的纹理数组
367
- * @internal
368
- * @param textures - 需要销毁的数组
369
- */
370
- destroyTextures(textures: (Texture | null | undefined)[]): void;
371
- /**
372
- * 销毁 Item
373
- * @internal
374
- * @param item - 需要销毁的 item
375
- */
376
- destroyItem(item: VFXItem): void;
377
363
  lost(e: Event): void;
378
364
  /**
379
365
  * 合成对象销毁
380
366
  */
381
367
  dispose(): void;
382
- /**
383
- * 编辑器使用的 transform 修改方法
384
- * @internal
385
- * @param scale - 缩放比例
386
- * @param dx - x偏移量
387
- * @param dy - y偏移量
388
- */
389
- setEditorTransform(scale: number, dx: number, dy: number): void;
390
368
  /**
391
369
  * 合成整体在水平方向移动 x 像素,垂直方向移动 y 像素
392
370
  */
@@ -2,7 +2,6 @@ import type * as spec from '@galacean/effects-specification';
2
2
  import type { Engine } from './engine';
3
3
  /**
4
4
  * @since 2.0.0
5
- * @internal
6
5
  */
7
6
  export declare abstract class EffectsObject {
8
7
  engine: Engine;
@@ -5,7 +5,6 @@ interface FileSummary {
5
5
  }
6
6
  /**
7
7
  * @since 2.0.0
8
- * @internal
9
8
  */
10
9
  export declare class EffectsPackage {
11
10
  fileSummary: FileSummary;
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Description: Galacean Effects runtime core for the web
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
6
- * Version: v2.0.2
6
+ * Version: v2.0.4
7
7
  */
8
8
 
9
9
  'use strict';
@@ -4569,7 +4569,6 @@ function getDirectStore(target) {
4569
4569
 
4570
4570
  /**
4571
4571
  * @since 2.0.0
4572
- * @internal
4573
4572
  */ var EffectsObject = /*#__PURE__*/ function() {
4574
4573
  function EffectsObject(engine) {
4575
4574
  this.engine = engine;
@@ -4605,7 +4604,6 @@ function getDirectStore(target) {
4605
4604
 
4606
4605
  /**
4607
4606
  * @since 2.0.0
4608
- * @internal
4609
4607
  */ var Component = /*#__PURE__*/ function(EffectsObject) {
4610
4608
  _inherits(Component, EffectsObject);
4611
4609
  function Component() {
@@ -4640,7 +4638,6 @@ function getDirectStore(target) {
4640
4638
  }(EffectsObject);
4641
4639
  /**
4642
4640
  * @since 2.0.0
4643
- * @internal
4644
4641
  */ var Behaviour = /*#__PURE__*/ function(Component) {
4645
4642
  _inherits(Behaviour, Component);
4646
4643
  function Behaviour() {
@@ -8089,7 +8086,7 @@ function _loadVideo() {
8089
8086
  }, true);
8090
8087
  }
8091
8088
  video.addEventListener("error", function(e) {
8092
- reject(e);
8089
+ reject("Load video fail.");
8093
8090
  });
8094
8091
  })
8095
8092
  ];
@@ -13563,7 +13560,6 @@ function _assert_this_initialized(self) {
13563
13560
  /**
13564
13561
  * 动画图,负责更新所有的动画节点
13565
13562
  * @since 2.0.0
13566
- * @internal
13567
13563
  */ var PlayableGraph = /*#__PURE__*/ function() {
13568
13564
  function PlayableGraph() {
13569
13565
  this.playableOutputs = [];
@@ -13623,7 +13619,6 @@ function _assert_this_initialized(self) {
13623
13619
  /**
13624
13620
  * 动画图可播放节点对象
13625
13621
  * @since 2.0.0
13626
- * @internal
13627
13622
  */ var Playable = /*#__PURE__*/ function() {
13628
13623
  function Playable(graph, inputCount) {
13629
13624
  if (inputCount === void 0) inputCount = 0;
@@ -13821,7 +13816,6 @@ function _assert_this_initialized(self) {
13821
13816
  /**
13822
13817
  * 动画图输出节点对象,将动画数据采样到绑定的元素属性上
13823
13818
  * @since 2.0.0
13824
- * @internal
13825
13819
  */ var PlayableOutput = /*#__PURE__*/ function() {
13826
13820
  function PlayableOutput() {
13827
13821
  this.sourceOutputPort = 0;
@@ -13904,13 +13898,17 @@ var SpriteColorPlayable = /*#__PURE__*/ function(Playable) {
13904
13898
  if (!_instanceof1(boundObject, exports.VFXItem)) {
13905
13899
  return;
13906
13900
  }
13901
+ if (!this.spriteComponent) {
13902
+ this.spriteComponent = boundObject.getComponent(exports.SpriteComponent);
13903
+ }
13907
13904
  if (!this.spriteMaterial) {
13908
- this.spriteMaterial = boundObject.getComponent(exports.SpriteComponent).material;
13905
+ this.spriteMaterial = this.spriteComponent.material;
13909
13906
  var startColor = this.spriteMaterial.getVector4("_Color");
13910
13907
  if (startColor) {
13911
13908
  this.startColor = startColor.toArray();
13912
13909
  }
13913
13910
  }
13911
+ this.spriteComponent.setAnimationTime(this.time);
13914
13912
  var colorInc = vecFill(tempColor, 1);
13915
13913
  var colorChanged;
13916
13914
  var life = this.time / boundObject.duration;
@@ -13970,7 +13968,6 @@ exports.SpriteComponent = /*#__PURE__*/ function(RendererComponent) {
13970
13968
  _this = RendererComponent.call(this, engine) || this;
13971
13969
  _this.cachePrefix = "-";
13972
13970
  _this.frameAnimationLoop = false;
13973
- _this.frameAnimationTime = 0;
13974
13971
  _this.color = [
13975
13972
  1,
13976
13973
  1,
@@ -13978,6 +13975,8 @@ exports.SpriteComponent = /*#__PURE__*/ function(RendererComponent) {
13978
13975
  1
13979
13976
  ];
13980
13977
  _this.visible = true;
13978
+ _this.isManualTimeSet = false;
13979
+ _this.frameAnimationTime = 0;
13981
13980
  _this.getHitTestParams = function(force) {
13982
13981
  var ui = _this.interaction;
13983
13982
  if (force || ui) {
@@ -14060,6 +14059,12 @@ exports.SpriteComponent = /*#__PURE__*/ function(RendererComponent) {
14060
14059
  this.renderer.texture = texture;
14061
14060
  this.material.setTexture("uSampler0", texture);
14062
14061
  };
14062
+ /**
14063
+ * @internal
14064
+ */ _proto.setAnimationTime = function setAnimationTime(time) {
14065
+ this.frameAnimationTime = time;
14066
+ this.isManualTimeSet = true;
14067
+ };
14063
14068
  _proto.render = function render(renderer) {
14064
14069
  if (!this.getVisible()) {
14065
14070
  return;
@@ -14074,12 +14079,12 @@ exports.SpriteComponent = /*#__PURE__*/ function(RendererComponent) {
14074
14079
  };
14075
14080
  _proto.start = function start() {
14076
14081
  this.item.getHitTestParams = this.getHitTestParams;
14077
- if (this.item.endBehavior === EndBehavior.restart) {
14078
- this.frameAnimationLoop = true;
14079
- }
14080
14082
  };
14081
14083
  _proto.update = function update(dt) {
14082
- this.frameAnimationTime += dt / 1000;
14084
+ if (!this.isManualTimeSet) {
14085
+ this.frameAnimationTime += dt / 1000;
14086
+ this.isManualTimeSet = false;
14087
+ }
14083
14088
  var time = this.frameAnimationTime;
14084
14089
  var duration = this.item.duration;
14085
14090
  if (time > duration && this.frameAnimationLoop) {
@@ -16474,7 +16479,6 @@ function getTrailMeshShader(trails, particleMaxCount, name, gpuCapability, env)
16474
16479
 
16475
16480
  /**
16476
16481
  * @since 2.0.0
16477
- * @internal
16478
16482
  */ var ParticleSystemRenderer = /*#__PURE__*/ function(RendererComponent) {
16479
16483
  _inherits(ParticleSystemRenderer, RendererComponent);
16480
16484
  function ParticleSystemRenderer(engine, particleMeshProps, trailMeshProps) {
@@ -16622,6 +16626,9 @@ exports.ParticleSystem = /*#__PURE__*/ function(Component) {
16622
16626
  _proto.isFrozen = function isFrozen() {
16623
16627
  return this.frozen;
16624
16628
  };
16629
+ _proto.isEnded = function isEnded() {
16630
+ return this.ended;
16631
+ };
16625
16632
  _proto.initEmitterTransform = function initEmitterTransform() {
16626
16633
  var position = this.item.transform.position.clone();
16627
16634
  var rotation = this.item.transform.rotation.clone();
@@ -17540,7 +17547,6 @@ function randomArrItem(arr, keepArr) {
17540
17547
 
17541
17548
  /**
17542
17549
  * @since 2.0.0
17543
- * @internal
17544
17550
  */ var ParticleBehaviourPlayable = /*#__PURE__*/ function(Playable) {
17545
17551
  _inherits(ParticleBehaviourPlayable, Playable);
17546
17552
  function ParticleBehaviourPlayable() {
@@ -17568,11 +17574,8 @@ function randomArrItem(arr, keepArr) {
17568
17574
  }
17569
17575
  var particleSystem = this.particleSystem;
17570
17576
  if (particleSystem) {
17571
- // TODO: [1.31] @十弦 验证 https://github.com/galacean/effects-runtime/commit/3e7d73d37b7d98c2a25e4544e80e928b17801ccd#diff-fae062f28caf3771cfedd3a20dc22f9749bd054c7541bf2fd50a9a5e413153d4
17572
- // particleSystem.setParentTransform(parentItem.transform);
17573
- particleSystem.setVisible(true);
17574
17577
  var deltaTime = context.deltaTime;
17575
- if (this.time < particleSystem.item.duration && particleSystem.isFrozen()) {
17578
+ if (this.time >= 0 && this.time < particleSystem.item.duration && particleSystem.isEnded()) {
17576
17579
  particleSystem.reset();
17577
17580
  }
17578
17581
  if (Math.abs(this.time - this.lastTime) < 0.001) {
@@ -18600,7 +18603,6 @@ var tempSize = new Vector3(1, 1, 1);
18600
18603
  var tempPos = new Vector3();
18601
18604
  /**
18602
18605
  * @since 2.0.0
18603
- * @internal
18604
18606
  */ var TransformAnimationPlayable = /*#__PURE__*/ function(AnimationPlayable) {
18605
18607
  _inherits(TransformAnimationPlayable, AnimationPlayable);
18606
18608
  function TransformAnimationPlayable() {
@@ -18762,7 +18764,6 @@ exports.TransformPlayableAsset = __decorate([
18762
18764
  ], exports.TransformPlayableAsset);
18763
18765
  /**
18764
18766
  * @since 2.0.0
18765
- * @internal
18766
18767
  */ var ActivationPlayable = /*#__PURE__*/ function(Playable) {
18767
18768
  _inherits(ActivationPlayable, Playable);
18768
18769
  function ActivationPlayable() {
@@ -18913,7 +18914,6 @@ var AnimationClipPlayable = /*#__PURE__*/ function(Playable) {
18913
18914
 
18914
18915
  /**
18915
18916
  * @since 2.0.0
18916
- * @internal
18917
18917
  */ var TimelineClip = /*#__PURE__*/ function() {
18918
18918
  function TimelineClip() {
18919
18919
  this.start = 0;
@@ -19338,7 +19338,6 @@ function compareTracks(a, b) {
19338
19338
 
19339
19339
  /**
19340
19340
  * @since 2.0.0
19341
- * @internal
19342
19341
  */ var CompositionComponent = /*#__PURE__*/ function(Behaviour) {
19343
19342
  _inherits(CompositionComponent, Behaviour);
19344
19343
  function CompositionComponent() {
@@ -19449,6 +19448,18 @@ function compareTracks(a, b) {
19449
19448
  }
19450
19449
  }
19451
19450
  };
19451
+ _proto.showItems = function showItems() {
19452
+ for(var _iterator = _create_for_of_iterator_helper_loose(this.items), _step; !(_step = _iterator()).done;){
19453
+ var item = _step.value;
19454
+ item.setVisible(true);
19455
+ }
19456
+ };
19457
+ _proto.hideItems = function hideItems() {
19458
+ for(var _iterator = _create_for_of_iterator_helper_loose(this.items), _step; !(_step = _iterator()).done;){
19459
+ var item = _step.value;
19460
+ item.setVisible(false);
19461
+ }
19462
+ };
19452
19463
  _proto.onDestroy = function onDestroy() {
19453
19464
  if (this.item.composition) {
19454
19465
  if (this.items) {
@@ -19559,6 +19570,34 @@ function compareTracks(a, b) {
19559
19570
  return CompositionComponent;
19560
19571
  }(Behaviour);
19561
19572
 
19573
+ var SubCompositionMixerPlayable = /*#__PURE__*/ function(Playable) {
19574
+ _inherits(SubCompositionMixerPlayable, Playable);
19575
+ function SubCompositionMixerPlayable() {
19576
+ return Playable.apply(this, arguments);
19577
+ }
19578
+ var _proto = SubCompositionMixerPlayable.prototype;
19579
+ _proto.processFrame = function processFrame(context) {
19580
+ var boundObject = context.output.getUserData();
19581
+ if (!_instanceof1(boundObject, CompositionComponent)) {
19582
+ return;
19583
+ }
19584
+ var compositionComponent = boundObject;
19585
+ var hasInput = false;
19586
+ for(var i = 0; i < this.getInputCount(); i++){
19587
+ if (this.getInputWeight(i) > 0) {
19588
+ hasInput = true;
19589
+ break;
19590
+ }
19591
+ }
19592
+ if (hasInput) {
19593
+ compositionComponent.showItems();
19594
+ } else {
19595
+ compositionComponent.hideItems();
19596
+ }
19597
+ };
19598
+ return SubCompositionMixerPlayable;
19599
+ }(Playable);
19600
+
19562
19601
  exports.SubCompositionTrack = /*#__PURE__*/ function(TrackAsset) {
19563
19602
  _inherits(SubCompositionTrack, TrackAsset);
19564
19603
  function SubCompositionTrack() {
@@ -19571,6 +19610,9 @@ exports.SubCompositionTrack = /*#__PURE__*/ function(TrackAsset) {
19571
19610
  }
19572
19611
  return parentBinding.getComponent(CompositionComponent);
19573
19612
  };
19613
+ _proto.createTrackMixer = function createTrackMixer(graph) {
19614
+ return new SubCompositionMixerPlayable(graph);
19615
+ };
19574
19616
  return SubCompositionTrack;
19575
19617
  }(exports.TrackAsset);
19576
19618
  exports.SubCompositionTrack = __decorate([
@@ -21627,7 +21669,6 @@ var SerializationHelper = /*#__PURE__*/ function() {
21627
21669
 
21628
21670
  /**
21629
21671
  * @since 2.0.0
21630
- * @internal
21631
21672
  */ var AssetLoader = /*#__PURE__*/ function() {
21632
21673
  function AssetLoader(engine) {
21633
21674
  this.engine = engine;
@@ -23608,22 +23649,6 @@ var seed = 1;
23608
23649
  this.timeout = timeout;
23609
23650
  };
23610
23651
  /**
23611
- * 根据用户传入的参数修改场景数据
23612
- */ _proto.updateSceneData = function updateSceneData(items) {
23613
- var variables = this.options.variables;
23614
- if (!variables || Object.keys(variables).length === 0) {
23615
- return;
23616
- }
23617
- items.forEach(function(item) {
23618
- if (item.type === ItemType.text) {
23619
- var textVariable = variables[item.name];
23620
- if (textVariable) {
23621
- item.content.options.text = textVariable;
23622
- }
23623
- }
23624
- });
23625
- };
23626
- /**
23627
23652
  * 场景创建,通过 json 创建出场景对象,并进行提前编译等工作
23628
23653
  * @param url - json 的 URL 链接或者 json 对象
23629
23654
  * @param renderer - renderer 对象,用于获取管理、编译 shader 及 GPU 上下文的参数
@@ -23750,7 +23775,6 @@ var seed = 1;
23750
23775
  for(i1 = 0; i1 < scene.images.length; i1++){
23751
23776
  scene.textureOptions[i1].image = scene.images[i1];
23752
23777
  }
23753
- _this.updateSceneData(scene.jsonScene.items);
23754
23778
  _state.label = 5;
23755
23779
  case 5:
23756
23780
  return [
@@ -23807,7 +23831,6 @@ var seed = 1;
23807
23831
  ];
23808
23832
  case 10:
23809
23833
  loadedTextures = _state.sent();
23810
- _this.updateSceneData(jsonScene.items);
23811
23834
  scene = {
23812
23835
  timeInfos: timeInfos,
23813
23836
  url: url,
@@ -24099,7 +24122,7 @@ var seed = 1;
24099
24122
  ];
24100
24123
  case 6:
24101
24124
  e = _state.sent();
24102
- throw new Error("Failed to load. Check the template or if the URL is " + (isVideo ? "video" : "image") + " type, URL: " + url + ", Error: " + e.message + ".");
24125
+ throw new Error("Failed to load. Check the template or if the URL is " + (isVideo ? "video" : "image") + " type, URL: " + url + ", Error: " + (e.message || e) + ".");
24103
24126
  case 7:
24104
24127
  return [
24105
24128
  3,
@@ -25025,6 +25048,7 @@ var listOrder = 0;
25025
25048
  * 跳到指定时间点(不做任何播放行为)
25026
25049
  * @param time - 相对 startTime 的时间
25027
25050
  */ _proto.setTime = function setTime(time) {
25051
+ var speed = this.speed;
25028
25052
  var pause = this.paused;
25029
25053
  if (pause) {
25030
25054
  this.resume();
@@ -25033,7 +25057,9 @@ var listOrder = 0;
25033
25057
  this.rootComposition.start();
25034
25058
  this.rootComposition.isStartCalled = true;
25035
25059
  }
25060
+ this.setSpeed(1);
25036
25061
  this.forwardTime(time + this.startTime);
25062
+ this.setSpeed(speed);
25037
25063
  if (pause) {
25038
25064
  this.pause();
25039
25065
  }
@@ -25045,7 +25071,6 @@ var listOrder = 0;
25045
25071
  /**
25046
25072
  * 前进合成到指定时间
25047
25073
  * @param time - 相对0时刻的时间
25048
- * @param skipRender - 是否跳过渲染
25049
25074
  */ _proto.forwardTime = function forwardTime(time) {
25050
25075
  var deltaTime = time * 1000 - this.rootComposition.time * 1000;
25051
25076
  var reverse = deltaTime < 0;
@@ -25095,7 +25120,6 @@ var listOrder = 0;
25095
25120
  /**
25096
25121
  * 合成更新,针对所有 item 的更新
25097
25122
  * @param deltaTime - 更新的时间步长
25098
- * @param skipRender - 是否需要渲染
25099
25123
  */ _proto.update = function update(deltaTime) {
25100
25124
  if (!this.assigned || this.paused) {
25101
25125
  return;
@@ -27113,7 +27137,6 @@ var FBGeometryDataT = /*#__PURE__*/ function() {
27113
27137
 
27114
27138
  /**
27115
27139
  * @since 2.0.0
27116
- * @internal
27117
27140
  */ var EffectsPackage = /*#__PURE__*/ function() {
27118
27141
  function EffectsPackage() {
27119
27142
  this.exportObjectDatas = [];
@@ -27522,11 +27545,12 @@ var FBGeometryDataT = /*#__PURE__*/ function() {
27522
27545
  return Engine;
27523
27546
  }();
27524
27547
 
27548
+ var DEFAULT_FPS = 60;
27525
27549
  /**
27526
27550
  * 定时器类
27527
27551
  */ var Ticker = /*#__PURE__*/ function() {
27528
27552
  function Ticker(fps) {
27529
- if (fps === void 0) fps = 60;
27553
+ if (fps === void 0) fps = DEFAULT_FPS;
27530
27554
  this.paused = true;
27531
27555
  this.lastTime = 0;
27532
27556
  // deltaTime
@@ -27661,7 +27685,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem, true);
27661
27685
  registerPlugin("particle", ParticleLoader, exports.VFXItem, true);
27662
27686
  registerPlugin("cal", CalculateLoader, exports.VFXItem, true);
27663
27687
  registerPlugin("interact", InteractLoader, exports.VFXItem, true);
27664
- var version = "2.0.2";
27688
+ var version = "2.0.4";
27665
27689
  logger.info("Core version: " + version + ".");
27666
27690
 
27667
27691
  exports.AbstractPlugin = AbstractPlugin;
@@ -27685,6 +27709,7 @@ exports.Composition = Composition;
27685
27709
  exports.CompositionComponent = CompositionComponent;
27686
27710
  exports.CompositionSourceManager = CompositionSourceManager;
27687
27711
  exports.DEFAULT_FONTS = DEFAULT_FONTS;
27712
+ exports.DEFAULT_FPS = DEFAULT_FPS;
27688
27713
  exports.Database = Database;
27689
27714
  exports.Downloader = Downloader;
27690
27715
  exports.EFFECTS_COPY_MESH_NAME = EFFECTS_COPY_MESH_NAME;