@galacean/effects-threejs 2.4.0-beta.0 → 2.4.0-beta.2

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/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@
3
3
  * Description: Galacean Effects runtime threejs plugin for the web
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
6
- * Version: v2.4.0-beta.0
6
+ * Version: v2.4.0-beta.2
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -2002,7 +2002,7 @@ function getDirectStore(target) {
2002
2002
  function EffectsObject(engine) {
2003
2003
  this.engine = engine;
2004
2004
  this.guid = generateGUID();
2005
- this.taggedProperties = {};
2005
+ this.defination = {};
2006
2006
  this.engine.addInstance(this);
2007
2007
  }
2008
2008
  var _proto = EffectsObject.prototype;
@@ -2027,11 +2027,7 @@ function getDirectStore(target) {
2027
2027
  * 反序列化函数
2028
2028
  *
2029
2029
  * @param data - 对象的序列化的数据
2030
- */ _proto.fromData = function fromData(data) {
2031
- if (data.id) {
2032
- this.setInstanceId(data.id);
2033
- }
2034
- };
2030
+ */ _proto.fromData = function fromData(data) {};
2035
2031
  /**
2036
2032
  *
2037
2033
  */ _proto.dispose = function dispose() {};
@@ -2127,9 +2123,6 @@ function getDirectStore(target) {
2127
2123
  };
2128
2124
  _proto.fromData = function fromData(data) {
2129
2125
  EffectsObject.prototype.fromData.call(this, data);
2130
- if (data.item) {
2131
- this.item = data.item;
2132
- }
2133
2126
  };
2134
2127
  _proto.dispose = function dispose() {
2135
2128
  if (this.isEnableCalled) {
@@ -2194,11 +2187,15 @@ function getDirectStore(target) {
2194
2187
  ]);
2195
2188
  return Component;
2196
2189
  }(EffectsObject);
2190
+ __decorate([
2191
+ serialize()
2192
+ ], Component.prototype, "item", void 0);
2197
2193
  __decorate([
2198
2194
  serialize()
2199
2195
  ], Component.prototype, "_enabled", void 0);
2200
2196
  /**
2201
2197
  * @since 2.0.0
2198
+ * @deprecated 2.4.0 Please use Component instead
2202
2199
  */ var Behaviour = /*#__PURE__*/ function(Component) {
2203
2200
  _inherits(Behaviour, Component);
2204
2201
  function Behaviour() {
@@ -2228,10 +2225,6 @@ __decorate([
2228
2225
  }
2229
2226
  var _proto = RendererComponent.prototype;
2230
2227
  _proto.render = function render(renderer) {};
2231
- _proto.setVFXItem = function setVFXItem(item) {
2232
- Component.prototype.setVFXItem.call(this, item);
2233
- this.item.rendererComponents.push(this);
2234
- };
2235
2228
  _proto.onEnable = function onEnable() {
2236
2229
  var _this_item_composition;
2237
2230
  (_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.renderFrame.addMeshToDefaultRenderPass(this);
@@ -2240,18 +2233,6 @@ __decorate([
2240
2233
  var _this_item_composition;
2241
2234
  (_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.renderFrame.removeMeshFromDefaultRenderPass(this);
2242
2235
  };
2243
- _proto.fromData = function fromData(data) {
2244
- Component.prototype.fromData.call(this, data);
2245
- };
2246
- _proto.toData = function toData() {
2247
- Component.prototype.toData.call(this);
2248
- };
2249
- _proto.dispose = function dispose() {
2250
- if (this.item) {
2251
- removeItem(this.item.rendererComponents, this);
2252
- }
2253
- Component.prototype.dispose.call(this);
2254
- };
2255
2236
  _create_class(RendererComponent, [
2256
2237
  {
2257
2238
  key: "priority",
@@ -3874,11 +3855,11 @@ EffectComponent = __decorate([
3874
3855
  effectsClass(DataType.EffectComponent)
3875
3856
  ], EffectComponent);
3876
3857
 
3877
- var PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
3878
- _inherits(PostProcessVolume, Behaviour);
3858
+ var PostProcessVolume = /*#__PURE__*/ function(Component) {
3859
+ _inherits(PostProcessVolume, Component);
3879
3860
  function PostProcessVolume(engine) {
3880
3861
  var _this;
3881
- _this = Behaviour.call(this, engine) || this;
3862
+ _this = Component.call(this, engine) || this;
3882
3863
  _this.bloom = {
3883
3864
  threshold: 0,
3884
3865
  intensity: 0,
@@ -3909,7 +3890,7 @@ var PostProcessVolume = /*#__PURE__*/ function(Behaviour) {
3909
3890
  }
3910
3891
  };
3911
3892
  return PostProcessVolume;
3912
- }(Behaviour);
3893
+ }(Component);
3913
3894
  __decorate([
3914
3895
  serialize()
3915
3896
  ], PostProcessVolume.prototype, "bloom", void 0);
@@ -6142,12 +6123,7 @@ function setMaskMode(material, maskMode, colorMask) {
6142
6123
  glContext.REPLACE
6143
6124
  ];
6144
6125
  // 关闭/开启蒙版元素的颜色写入
6145
- material.colorMask = [
6146
- colorMask,
6147
- colorMask,
6148
- colorMask,
6149
- colorMask
6150
- ];
6126
+ material.colorMask = colorMask;
6151
6127
  break;
6152
6128
  case MaskMode.OBSCURED:
6153
6129
  material.stencilTest = true;
@@ -7619,13 +7595,6 @@ var MaterialRenderType;
7619
7595
  set: /**
7620
7596
  * 设置 Material 的通过 alpha 值决定临时覆盖值计算的开关
7621
7597
  * @param value - 是否开启 alpha 抖动
7622
- */ function set(value) {}
7623
- },
7624
- {
7625
- key: "colorMask",
7626
- set: /**
7627
- * 设置 Material 颜色缓冲区的写入开关
7628
- * @param value
7629
7598
  */ function set(value) {}
7630
7599
  },
7631
7600
  {
@@ -7684,10 +7653,15 @@ var MaskProcessor = /*#__PURE__*/ function() {
7684
7653
  } else if (mode === ObscuredMode.OBSCURED || mode === ObscuredMode.REVERSE_OBSCURED) {
7685
7654
  maskMode = mode === ObscuredMode.OBSCURED ? MaskMode.OBSCURED : MaskMode.REVERSE_OBSCURED;
7686
7655
  this.maskRef = ref.maskManager.getRefValue();
7656
+ this.maskable = ref;
7687
7657
  }
7688
7658
  }
7689
7659
  return maskMode;
7690
7660
  };
7661
+ _proto.drawStencilMask = function drawStencilMask(renderer) {
7662
+ var _this_maskable;
7663
+ (_this_maskable = this.maskable) == null ? void 0 : _this_maskable.drawStencilMask(renderer);
7664
+ };
7691
7665
  return MaskProcessor;
7692
7666
  }();
7693
7667
 
@@ -12594,17 +12568,16 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12594
12568
  if (!this.getVisible()) {
12595
12569
  return;
12596
12570
  }
12597
- if (renderer.renderingData.currentFrame.globalUniforms) {
12598
- renderer.setGlobalMatrix("effects_ObjectToWorld", this.transform.getWorldMatrix());
12599
- }
12600
- for(var i = 0; i < this.materials.length; i++){
12601
- var material = this.materials[i];
12602
- material.setVector2("_Size", this.transform.size);
12603
- if (this.renderer.renderMode === RenderMode.BILLBOARD || this.renderer.renderMode === RenderMode.VERTICAL_BILLBOARD || this.renderer.renderMode === RenderMode.HORIZONTAL_BILLBOARD) {
12604
- material.setVector3("_Scale", this.transform.scale);
12605
- }
12606
- renderer.drawGeometry(this.geometry, material, i);
12607
- }
12571
+ this.maskManager.drawStencilMask(renderer);
12572
+ this.draw(renderer);
12573
+ };
12574
+ /**
12575
+ * @internal
12576
+ */ _proto.drawStencilMask = function drawStencilMask(renderer) {
12577
+ var previousColorMask = this.material.colorMask;
12578
+ this.material.colorMask = false;
12579
+ this.draw(renderer);
12580
+ this.material.colorMask = previousColorMask;
12608
12581
  };
12609
12582
  _proto.onStart = function onStart() {
12610
12583
  this.item.getHitTestParams = this.getHitTestParams;
@@ -12742,10 +12715,27 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12742
12715
  }
12743
12716
  return material;
12744
12717
  };
12718
+ _proto.draw = function draw(renderer) {
12719
+ if (renderer.renderingData.currentFrame.globalUniforms) {
12720
+ renderer.setGlobalMatrix("effects_ObjectToWorld", this.transform.getWorldMatrix());
12721
+ }
12722
+ for(var i = 0; i < this.materials.length; i++){
12723
+ var material = this.materials[i];
12724
+ material.setVector2("_Size", this.transform.size);
12725
+ if (this.renderer.renderMode === RenderMode.BILLBOARD || this.renderer.renderMode === RenderMode.VERTICAL_BILLBOARD || this.renderer.renderMode === RenderMode.HORIZONTAL_BILLBOARD) {
12726
+ material.setVector3("_Scale", this.transform.scale);
12727
+ }
12728
+ renderer.drawGeometry(this.geometry, material, i);
12729
+ }
12730
+ };
12745
12731
  _proto.fromData = function fromData(data) {
12746
12732
  RendererComponent.prototype.fromData.call(this, data);
12747
12733
  var _data_renderer;
12748
12734
  var renderer = (_data_renderer = data.renderer) != null ? _data_renderer : {};
12735
+ var maskProps = data.mask;
12736
+ if (maskProps && maskProps.ref) {
12737
+ maskProps.ref = this.engine.findObject(maskProps.ref);
12738
+ }
12749
12739
  var maskMode = this.maskManager.getMaskMode(data);
12750
12740
  // TODO 新蒙板上线后移除
12751
12741
  //-------------------------------------------------------------------------
@@ -12753,15 +12743,15 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12753
12743
  //@ts-expect-error
12754
12744
  var split = data.splits && !data.textureSheetAnimation ? data.splits[0] : undefined;
12755
12745
  var shapeGeometry = undefined;
12756
- if (shapeData !== undefined && !("aPoint" in shapeData && "index" in shapeData)) {
12746
+ if (shapeData !== undefined && shapeData !== null && !("aPoint" in shapeData && "index" in shapeData)) {
12757
12747
  shapeGeometry = getGeometryByShape(shapeData, split);
12758
12748
  }
12759
- var _renderer_renderMode, _renderer_blending, _renderer_texture, _renderer_side;
12749
+ var _renderer_renderMode, _renderer_blending, _renderer_side;
12760
12750
  //-------------------------------------------------------------------------
12761
12751
  this.renderer = {
12762
12752
  renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.MESH,
12763
12753
  blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending : BlendingMode.ALPHA,
12764
- texture: (_renderer_texture = renderer.texture) != null ? _renderer_texture : this.engine.emptyTexture,
12754
+ texture: renderer.texture ? this.engine.findObject(renderer.texture) : this.engine.emptyTexture,
12765
12755
  occlusion: !!renderer.occlusion,
12766
12756
  transparentOcclusion: !!renderer.transparentOcclusion || maskMode === MaskMode.MASK,
12767
12757
  side: (_renderer_side = renderer.side) != null ? _renderer_side : SideMode.DOUBLE,
@@ -12978,14 +12968,14 @@ var ShapeComponent = /*#__PURE__*/ function(BaseRenderComponent) {
12978
12968
  var control2 = easingIns[pointIndex.easingIn];
12979
12969
  this.graphicsPath.bezierCurveTo(control1.x + lastPoint.x, control1.y + lastPoint.y, control2.x + point.x, control2.y + point.y, point.x, point.y, 1);
12980
12970
  }
12981
- var pointIndex1 = indices[0];
12982
- var lastPointIndex1 = indices[indices.length - 1];
12983
- var point1 = points[pointIndex1.point];
12984
- var lastPoint1 = points[lastPointIndex1.point];
12985
- var control11 = easingOuts[lastPointIndex1.easingOut];
12986
- var control21 = easingIns[pointIndex1.easingIn];
12987
- this.graphicsPath.bezierCurveTo(control11.x + lastPoint1.x, control11.y + lastPoint1.y, control21.x + point1.x, control21.y + point1.y, point1.x, point1.y, 1);
12988
12971
  if (shape.close) {
12972
+ var pointIndex1 = indices[0];
12973
+ var lastPointIndex1 = indices[indices.length - 1];
12974
+ var point1 = points[pointIndex1.point];
12975
+ var lastPoint1 = points[lastPointIndex1.point];
12976
+ var control11 = easingOuts[lastPointIndex1.easingOut];
12977
+ var control21 = easingIns[pointIndex1.easingIn];
12978
+ this.graphicsPath.bezierCurveTo(control11.x + lastPoint1.x, control11.y + lastPoint1.y, control21.x + point1.x, control21.y + point1.y, point1.x, point1.y, 1);
12989
12979
  this.graphicsPath.closePath();
12990
12980
  }
12991
12981
  }
@@ -13115,6 +13105,10 @@ var ShapeComponent = /*#__PURE__*/ function(BaseRenderComponent) {
13115
13105
  break;
13116
13106
  }
13117
13107
  }
13108
+ var maskProps = data.mask;
13109
+ if (maskProps && maskProps.ref) {
13110
+ maskProps.ref = this.engine.findObject(maskProps.ref);
13111
+ }
13118
13112
  var maskMode = this.maskManager.getMaskMode(data);
13119
13113
  var maskRef = this.maskManager.getRefValue();
13120
13114
  this.material.stencilRef = maskRef !== undefined ? [
@@ -13264,11 +13258,11 @@ var Fake3DAnimationMode;
13264
13258
  Fake3DAnimationMode[Fake3DAnimationMode["Linear"] = 1] = "Linear";
13265
13259
  })(Fake3DAnimationMode || (Fake3DAnimationMode = {}));
13266
13260
 
13267
- var CameraController = /*#__PURE__*/ function(Behaviour) {
13268
- _inherits(CameraController, Behaviour);
13261
+ var CameraController = /*#__PURE__*/ function(Component) {
13262
+ _inherits(CameraController, Component);
13269
13263
  function CameraController(engine, props) {
13270
13264
  var _this;
13271
- _this = Behaviour.call(this, engine) || this;
13265
+ _this = Component.call(this, engine) || this;
13272
13266
  if (props) {
13273
13267
  _this.fromData(props);
13274
13268
  }
@@ -13289,11 +13283,11 @@ var CameraController = /*#__PURE__*/ function(Behaviour) {
13289
13283
  }
13290
13284
  };
13291
13285
  _proto.fromData = function fromData(data) {
13292
- Behaviour.prototype.fromData.call(this, data);
13286
+ Component.prototype.fromData.call(this, data);
13293
13287
  this.options = data.options;
13294
13288
  };
13295
13289
  return CameraController;
13296
- }(Behaviour);
13290
+ }(Component);
13297
13291
  CameraController = __decorate([
13298
13292
  effectsClass(DataType.CameraController)
13299
13293
  ], CameraController);
@@ -15374,6 +15368,7 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
15374
15368
  };
15375
15369
  _this.duringPlay = false;
15376
15370
  /** 是否响应点击和拖拽交互事件 */ _this._interactive = true;
15371
+ _this.lastTime = -1;
15377
15372
  _this.getHitTestParams = function(force) {
15378
15373
  if (!_this.clickable) {
15379
15374
  return;
@@ -15464,11 +15459,21 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
15464
15459
  var _this_previewContent;
15465
15460
  this.duringPlay = true;
15466
15461
  // trigger messageBegin when item enter
15467
- if (this.item.time > 0 && this.item.time - dt / 1000 <= 0) {
15468
- var _this_item_composition;
15469
- var options = this.item.props.content.options;
15470
- (_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.addInteractiveItem(this.item, options.type);
15462
+ if (this.lastTime <= this.item.time) {
15463
+ if (this.item.time >= 0 && this.lastTime < 0) {
15464
+ var _this_item_composition;
15465
+ var options = this.item.props.content.options;
15466
+ (_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.addInteractiveItem(this.item, options.type);
15467
+ }
15468
+ } else {
15469
+ // loop trigger
15470
+ if (this.item.time >= 0) {
15471
+ var _this_item_composition1;
15472
+ var options1 = this.item.props.content.options;
15473
+ (_this_item_composition1 = this.item.composition) == null ? void 0 : _this_item_composition1.addInteractiveItem(this.item, options1.type);
15474
+ }
15471
15475
  }
15476
+ this.lastTime = this.item.time;
15472
15477
  (_this_previewContent = this.previewContent) == null ? void 0 : _this_previewContent.updateMesh();
15473
15478
  if (!this.dragEvent || !this.bouncingArg) {
15474
15479
  return;
@@ -18600,6 +18605,7 @@ function modifyMaxKeyframeShader(shader, maxVertex, maxFrag) {
18600
18605
  this.particleMesh.mesh.material.setVector4("uParams", uParams.set(time, this.item.duration, 0, 0));
18601
18606
  };
18602
18607
  _proto.render = function render(renderer) {
18608
+ this.maskManager.drawStencilMask(renderer);
18603
18609
  for(var _iterator = _create_for_of_iterator_helper_loose(this.meshes), _step; !(_step = _iterator()).done;){
18604
18610
  var mesh = _step.value;
18605
18611
  mesh.render(renderer);
@@ -19441,7 +19447,7 @@ var ParticleSystem = /*#__PURE__*/ function(Component) {
19441
19447
  mask: maskProps.maskRef,
19442
19448
  maskMode: maskProps.maskMode,
19443
19449
  forceTarget: forceTarget,
19444
- diffuse: renderer.texture,
19450
+ diffuse: renderer.texture ? this.engine.findObject(renderer.texture) : undefined,
19445
19451
  sizeOverLifetime: sizeOverLifetimeGetter,
19446
19452
  anchor: anchor
19447
19453
  };
@@ -19528,7 +19534,7 @@ var ParticleSystem = /*#__PURE__*/ function(Component) {
19528
19534
  maxTrailCount: options.maxCount,
19529
19535
  pointCountPerTrail: Math.round(trails.maxPointPerTrail) || 32,
19530
19536
  blending: trails.blending,
19531
- texture: trails.texture,
19537
+ texture: trails.texture ? this.engine.findObject(trails.texture) : undefined,
19532
19538
  opacityOverLifetime: createValueGetter(trails.opacityOverLifetime || 1),
19533
19539
  widthOverTrail: createValueGetter(trails.widthOverTrail || 1),
19534
19540
  // order: vfxItem.listIndex + (trails.orderOffset || 0),
@@ -19549,6 +19555,7 @@ var ParticleSystem = /*#__PURE__*/ function(Component) {
19549
19555
  }
19550
19556
  this.renderer = new ParticleSystemRenderer(this.engine, particleMeshProps, trailMeshProps);
19551
19557
  this.renderer.item = this.item;
19558
+ this.renderer.maskManager = this.maskManager;
19552
19559
  this.meshes = this.renderer.meshes;
19553
19560
  var interaction = props.interaction;
19554
19561
  if (interaction) {
@@ -19567,8 +19574,9 @@ var ParticleSystem = /*#__PURE__*/ function(Component) {
19567
19574
  var maskRef = 0;
19568
19575
  if (data.mask) {
19569
19576
  var _data_mask = data.mask, mode = _data_mask.mode, ref = _data_mask.ref;
19577
+ var refComponent = this.engine.findObject(ref);
19570
19578
  maskMode = mode;
19571
- maskRef = ref.maskManager.getRefValue();
19579
+ maskRef = refComponent.maskManager.getRefValue();
19572
19580
  }
19573
19581
  return {
19574
19582
  maskMode: maskMode,
@@ -20656,13 +20664,11 @@ Vector2PropertyPlayableAsset = __decorate([
20656
20664
  effectsClass(DataType.Vector2PropertyPlayableAsset)
20657
20665
  ], Vector2PropertyPlayableAsset);
20658
20666
 
20659
- /**
20660
- * @since 2.0.0
20661
- */ var CompositionComponent = /*#__PURE__*/ function(Behaviour) {
20662
- _inherits(CompositionComponent, Behaviour);
20667
+ var CompositionComponent = /*#__PURE__*/ function(Component) {
20668
+ _inherits(CompositionComponent, Component);
20663
20669
  function CompositionComponent() {
20664
20670
  var _this;
20665
- _this = Behaviour.apply(this, arguments) || this;
20671
+ _this = Component.apply(this, arguments) || this;
20666
20672
  _this.time = 0;
20667
20673
  _this.startTime = 0;
20668
20674
  _this.items = [] // 场景的所有元素
@@ -20838,13 +20844,10 @@ Vector2PropertyPlayableAsset = __decorate([
20838
20844
  return startOrder;
20839
20845
  };
20840
20846
  _proto.fromData = function fromData(data) {
20841
- Behaviour.prototype.fromData.call(this, data);
20847
+ Component.prototype.fromData.call(this, data);
20842
20848
  var compositionData = data;
20843
- this.items = compositionData.items;
20844
20849
  var _compositionData_startTime;
20845
20850
  this.startTime = (_compositionData_startTime = compositionData.startTime) != null ? _compositionData_startTime : 0;
20846
- this.sceneBindings = compositionData.sceneBindings;
20847
- this.timelineAsset = compositionData.timelineAsset;
20848
20851
  };
20849
20852
  _proto.resolveBindings = function resolveBindings() {
20850
20853
  for(var _iterator = _create_for_of_iterator_helper_loose(this.sceneBindings), _step; !(_step = _iterator()).done;){
@@ -20867,7 +20870,19 @@ Vector2PropertyPlayableAsset = __decorate([
20867
20870
  }
20868
20871
  };
20869
20872
  return CompositionComponent;
20870
- }(Behaviour);
20873
+ }(Component);
20874
+ __decorate([
20875
+ serialize()
20876
+ ], CompositionComponent.prototype, "items", void 0);
20877
+ __decorate([
20878
+ serialize()
20879
+ ], CompositionComponent.prototype, "sceneBindings", void 0);
20880
+ __decorate([
20881
+ serialize()
20882
+ ], CompositionComponent.prototype, "timelineAsset", void 0);
20883
+ CompositionComponent = __decorate([
20884
+ effectsClass("CompositionComponent")
20885
+ ], CompositionComponent);
20871
20886
 
20872
20887
  /**
20873
20888
  *
@@ -21059,482 +21074,6 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21059
21074
  // }
21060
21075
  (TickData);
21061
21076
 
21062
- var SerializationHelper = /*#__PURE__*/ function() {
21063
- function SerializationHelper() {}
21064
- SerializationHelper.collectSerializableObject = function collectSerializableObject(effectsObject, res) {
21065
- if (res[effectsObject.getInstanceId()]) {
21066
- return;
21067
- }
21068
- effectsObject.toData();
21069
- res[effectsObject.getInstanceId()] = effectsObject;
21070
- var serializedProperties = getMergedStore(effectsObject);
21071
- if (serializedProperties) {
21072
- for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(serializedProperties)), _step; !(_step = _iterator()).done;){
21073
- var key = _step.value;
21074
- // TODO 待移除,序列化属性通过 effectsObject 对象直接获取
21075
- var value = effectsObject.taggedProperties[key];
21076
- if (value === undefined) {
21077
- value = effectsObject[key];
21078
- }
21079
- if (EffectsObject.is(value)) {
21080
- SerializationHelper.collectSerializableObject(value, res);
21081
- } else if (isArray(value)) {
21082
- for(var _iterator1 = _create_for_of_iterator_helper_loose(value), _step1; !(_step1 = _iterator1()).done;){
21083
- var arrayValue = _step1.value;
21084
- if (EffectsObject.is(arrayValue)) {
21085
- SerializationHelper.collectSerializableObject(arrayValue, res);
21086
- }
21087
- }
21088
- } else if (isObject(value)) {
21089
- // 非 EffectsObject 对象只递归一层
21090
- for(var _iterator2 = _create_for_of_iterator_helper_loose(Object.keys(value)), _step2; !(_step2 = _iterator2()).done;){
21091
- var objectKey = _step2.value;
21092
- var objectValue = value[objectKey];
21093
- if (EffectsObject.is(objectValue)) {
21094
- SerializationHelper.collectSerializableObject(objectValue, res);
21095
- }
21096
- }
21097
- }
21098
- }
21099
- }
21100
- };
21101
- SerializationHelper.serializeEffectObject = function serializeEffectObject(effectsObject) {
21102
- // 持有所有需要序列化的引擎对象
21103
- var serializableMap = {};
21104
- var engine = effectsObject.engine;
21105
- // 加入内存中已加载的资产数据,避免重复创建资产数据
21106
- var serializedDatas = _extends({}, engine.jsonSceneData);
21107
- // 递归收集所有需要序列化的对象
21108
- SerializationHelper.collectSerializableObject(effectsObject, serializableMap);
21109
- // 依次序列化
21110
- for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(serializableMap)), _step; !(_step = _iterator()).done;){
21111
- var guid = _step.value;
21112
- var serializeObject = serializableMap[guid];
21113
- if (!serializedDatas[serializeObject.getInstanceId()]) {
21114
- serializedDatas[serializeObject.getInstanceId()] = {};
21115
- }
21116
- SerializationHelper.serialize(serializeObject, serializedDatas[serializeObject.getInstanceId()]);
21117
- }
21118
- return serializedDatas;
21119
- };
21120
- SerializationHelper.serialize = function serialize(effectsObject, serializedData) {
21121
- effectsObject.toData();
21122
- if (!serializedData) {
21123
- serializedData = {};
21124
- }
21125
- var serializedProperties = getMergedStore(effectsObject);
21126
- if (serializedProperties) {
21127
- for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(serializedProperties)), _step; !(_step = _iterator()).done;){
21128
- var key = _step.value;
21129
- var value = effectsObject[key];
21130
- if (typeof value === "number" || typeof value === "string" || typeof value === "boolean" || SerializationHelper.checkTypedArray(value)) {
21131
- // TODO json 数据避免传 typedArray
21132
- serializedData[key] = value;
21133
- } else if (isArray(value)) {
21134
- if (!serializedData[key]) {
21135
- serializedData[key] = [];
21136
- }
21137
- SerializationHelper.serializeArrayProperty(value, serializedData[key], 0);
21138
- } else if (EffectsObject.is(value)) {
21139
- // TODO 处理 EffectsObject 递归序列化
21140
- serializedData[key] = {
21141
- id: value.getInstanceId()
21142
- };
21143
- } else if (isObject(value)) {
21144
- if (!serializedData[key]) {
21145
- serializedData[key] = {};
21146
- }
21147
- SerializationHelper.serializeObjectProperty(value, serializedData[key], 0);
21148
- }
21149
- }
21150
- }
21151
- // TODO 待移除 tagggedProperties 为没有装饰器的临时方案
21152
- for(var _iterator1 = _create_for_of_iterator_helper_loose(Object.keys(effectsObject.taggedProperties)), _step1; !(_step1 = _iterator1()).done;){
21153
- var key1 = _step1.value;
21154
- var value1 = effectsObject.taggedProperties[key1];
21155
- if (typeof value1 === "number" || typeof value1 === "string" || typeof value1 === "boolean" || SerializationHelper.checkTypedArray(value1)) {
21156
- // TODO json 数据避免传 typedArray
21157
- serializedData[key1] = value1;
21158
- } else if (isArray(value1)) {
21159
- if (!serializedData[key1]) {
21160
- serializedData[key1] = [];
21161
- }
21162
- SerializationHelper.serializeArrayProperty(value1, serializedData[key1], 0);
21163
- } else if (EffectsObject.is(value1)) {
21164
- // TODO 处理 EffectsObject 递归序列化
21165
- serializedData[key1] = {
21166
- id: value1.getInstanceId()
21167
- };
21168
- } else if (isObject(value1)) {
21169
- if (!serializedData[key1]) {
21170
- serializedData[key1] = {};
21171
- }
21172
- SerializationHelper.serializeObjectProperty(value1, serializedData[key1], 0);
21173
- }
21174
- }
21175
- return serializedData;
21176
- };
21177
- SerializationHelper.deserialize = function deserialize(serializedData, effectsObject) {
21178
- var taggedProperties = effectsObject.taggedProperties;
21179
- var serializedProperties = getMergedStore(effectsObject);
21180
- var engine = effectsObject.engine;
21181
- for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(serializedData)), _step; !(_step = _iterator()).done;){
21182
- var key = _step.value;
21183
- if (serializedProperties && serializedProperties[key]) {
21184
- continue;
21185
- }
21186
- var value = serializedData[key];
21187
- taggedProperties[key] = SerializationHelper.deserializeProperty(value, engine, 0);
21188
- }
21189
- if (serializedProperties) {
21190
- for(var _iterator1 = _create_for_of_iterator_helper_loose(Object.keys(serializedProperties)), _step1; !(_step1 = _iterator1()).done;){
21191
- var key1 = _step1.value;
21192
- var value1 = serializedData[key1];
21193
- if (value1 === undefined) {
21194
- continue;
21195
- }
21196
- var propertyType = serializedProperties[key1].type;
21197
- // FIXME: taggedProperties 为 readonly,这里存在强制赋值
21198
- // @ts-expect-error
21199
- effectsObject[key1] = SerializationHelper.deserializeProperty(value1, engine, 0, propertyType);
21200
- }
21201
- }
21202
- effectsObject.fromData(taggedProperties);
21203
- };
21204
- SerializationHelper.deserializeAsync = function deserializeAsync(serializedData, effectsObject) {
21205
- return _async_to_generator(function() {
21206
- var taggedProperties, serializedProperties, engine, _iterator, _step, key, value, _iterator1, _step1, key1, value1, propertyType;
21207
- return __generator(this, function(_state) {
21208
- switch(_state.label){
21209
- case 0:
21210
- taggedProperties = effectsObject.taggedProperties;
21211
- serializedProperties = getMergedStore(effectsObject);
21212
- engine = effectsObject.engine;
21213
- _iterator = _create_for_of_iterator_helper_loose(Object.keys(serializedData));
21214
- _state.label = 1;
21215
- case 1:
21216
- if (!!(_step = _iterator()).done) return [
21217
- 3,
21218
- 4
21219
- ];
21220
- key = _step.value;
21221
- if (serializedProperties && serializedProperties[key]) {
21222
- return [
21223
- 3,
21224
- 3
21225
- ];
21226
- }
21227
- value = serializedData[key];
21228
- return [
21229
- 4,
21230
- SerializationHelper.deserializePropertyAsync(value, engine, 0)
21231
- ];
21232
- case 2:
21233
- taggedProperties[key] = _state.sent();
21234
- _state.label = 3;
21235
- case 3:
21236
- return [
21237
- 3,
21238
- 1
21239
- ];
21240
- case 4:
21241
- if (!serializedProperties) return [
21242
- 3,
21243
- 8
21244
- ];
21245
- _iterator1 = _create_for_of_iterator_helper_loose(Object.keys(serializedProperties));
21246
- _state.label = 5;
21247
- case 5:
21248
- if (!!(_step1 = _iterator1()).done) return [
21249
- 3,
21250
- 8
21251
- ];
21252
- key1 = _step1.value;
21253
- value1 = serializedData[key1];
21254
- if (value1 === undefined) {
21255
- return [
21256
- 3,
21257
- 7
21258
- ];
21259
- }
21260
- propertyType = serializedProperties[key1].type;
21261
- return [
21262
- 4,
21263
- SerializationHelper.deserializePropertyAsync(value1, engine, 0, propertyType)
21264
- ];
21265
- case 6:
21266
- // FIXME: taggedProperties 为 readonly,这里存在强制赋值
21267
- // @ts-expect-error
21268
- effectsObject[key1] = _state.sent();
21269
- _state.label = 7;
21270
- case 7:
21271
- return [
21272
- 3,
21273
- 5
21274
- ];
21275
- case 8:
21276
- effectsObject.fromData(taggedProperties);
21277
- return [
21278
- 2
21279
- ];
21280
- }
21281
- });
21282
- })();
21283
- };
21284
- SerializationHelper.checkTypedArray = function checkTypedArray(obj) {
21285
- return _instanceof1(obj, Int8Array) || _instanceof1(obj, Uint8Array) || _instanceof1(obj, Uint8ClampedArray) || _instanceof1(obj, Int16Array) || _instanceof1(obj, Uint16Array) || _instanceof1(obj, Int32Array) || _instanceof1(obj, Uint32Array) || _instanceof1(obj, Float32Array) || _instanceof1(obj, Float64Array) || _instanceof1(obj, ArrayBuffer);
21286
- };
21287
- // check value is { id: 7e69662e964e4892ae8933f24562395b }
21288
- SerializationHelper.checkDataPath = function checkDataPath(value) {
21289
- return !!(isObject(value) && Object.keys(value).length === 1 && "id" in value && isString(value.id) && value.id.length === 32);
21290
- };
21291
- // TODO 测试函数,2.0 上线后移除
21292
- SerializationHelper.checkGLTFNode = function checkGLTFNode(value) {
21293
- return isObject(value) && value.nodeIndex !== undefined && value.isJoint !== undefined;
21294
- };
21295
- SerializationHelper.checkImageSource = function checkImageSource(value) {
21296
- return isCanvas(value) || _instanceof1(value, HTMLImageElement);
21297
- };
21298
- SerializationHelper.deserializeProperty = function deserializeProperty(property, engine, level, type) {
21299
- if (level > 14) {
21300
- console.error("The nested object layers of the serialized data exceed the maximum limit.");
21301
- return;
21302
- }
21303
- // 加载并链接 DataPath 字段表示的 EffectsObject 引用。Class 对象 copy [key, value] 会丢失对象信息,因此只递归数组对象和普通 js Object 结构对象。
21304
- if (isArray(property)) {
21305
- var res = [];
21306
- for(var _iterator = _create_for_of_iterator_helper_loose(property), _step; !(_step = _iterator()).done;){
21307
- var value = _step.value;
21308
- res.push(SerializationHelper.deserializeProperty(value, engine, level + 1, type));
21309
- }
21310
- return res;
21311
- // TODO json 数据避免传 typedArray
21312
- } else if (SerializationHelper.checkDataPath(property)) {
21313
- return engine.assetLoader.loadGUID(property.id);
21314
- } else if (isObject(property) && property.constructor === Object) {
21315
- var res1;
21316
- if (type) {
21317
- res1 = new type();
21318
- } else {
21319
- res1 = {};
21320
- }
21321
- for(var _iterator1 = _create_for_of_iterator_helper_loose(Object.keys(property)), _step1; !(_step1 = _iterator1()).done;){
21322
- var key = _step1.value;
21323
- res1[key] = SerializationHelper.deserializeProperty(property[key], engine, level + 1);
21324
- }
21325
- return res1;
21326
- } else {
21327
- return property;
21328
- }
21329
- };
21330
- SerializationHelper.deserializePropertyAsync = function deserializePropertyAsync(property, engine, level, type) {
21331
- return _async_to_generator(function() {
21332
- var res, _iterator, _step, value, _, res1, res2, _iterator1, _step1, key;
21333
- return __generator(this, function(_state) {
21334
- switch(_state.label){
21335
- case 0:
21336
- if (level > 14) {
21337
- console.error("The nested object layers of the serialized data exceed the maximum limit.");
21338
- return [
21339
- 2
21340
- ];
21341
- }
21342
- if (!isArray(property)) return [
21343
- 3,
21344
- 5
21345
- ];
21346
- res = [];
21347
- _iterator = _create_for_of_iterator_helper_loose(property);
21348
- _state.label = 1;
21349
- case 1:
21350
- if (!!(_step = _iterator()).done) return [
21351
- 3,
21352
- 4
21353
- ];
21354
- value = _step.value;
21355
- _ = res.push;
21356
- return [
21357
- 4,
21358
- SerializationHelper.deserializePropertyAsync(value, engine, level + 1, type)
21359
- ];
21360
- case 2:
21361
- _.apply(res, [
21362
- _state.sent()
21363
- ]);
21364
- _state.label = 3;
21365
- case 3:
21366
- return [
21367
- 3,
21368
- 1
21369
- ];
21370
- case 4:
21371
- return [
21372
- 2,
21373
- res
21374
- ];
21375
- case 5:
21376
- if (!SerializationHelper.checkDataPath(property)) return [
21377
- 3,
21378
- 7
21379
- ];
21380
- return [
21381
- 4,
21382
- engine.assetLoader.loadGUIDAsync(property.id)
21383
- ];
21384
- case 6:
21385
- res1 = _state.sent();
21386
- return [
21387
- 2,
21388
- res1
21389
- ];
21390
- case 7:
21391
- if (!(isObject(property) && property.constructor === Object)) return [
21392
- 3,
21393
- 12
21394
- ];
21395
- if (type) {
21396
- res2 = new type();
21397
- } else {
21398
- res2 = {};
21399
- }
21400
- _iterator1 = _create_for_of_iterator_helper_loose(Object.keys(property));
21401
- _state.label = 8;
21402
- case 8:
21403
- if (!!(_step1 = _iterator1()).done) return [
21404
- 3,
21405
- 11
21406
- ];
21407
- key = _step1.value;
21408
- return [
21409
- 4,
21410
- SerializationHelper.deserializePropertyAsync(property[key], engine, level + 1)
21411
- ];
21412
- case 9:
21413
- res2[key] = _state.sent();
21414
- _state.label = 10;
21415
- case 10:
21416
- return [
21417
- 3,
21418
- 8
21419
- ];
21420
- case 11:
21421
- return [
21422
- 2,
21423
- res2
21424
- ];
21425
- case 12:
21426
- return [
21427
- 2,
21428
- property
21429
- ];
21430
- case 13:
21431
- return [
21432
- 2
21433
- ];
21434
- }
21435
- });
21436
- })();
21437
- };
21438
- SerializationHelper.serializeObjectProperty = function serializeObjectProperty(objectProperty, serializedData, level) {
21439
- if (level > 14) {
21440
- console.error("The nested object layers of the serialized data exceed the maximum limit.");
21441
- return;
21442
- }
21443
- if (!serializedData) {
21444
- serializedData = {};
21445
- }
21446
- for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(objectProperty)), _step; !(_step = _iterator()).done;){
21447
- var key = _step.value;
21448
- var value = objectProperty[key];
21449
- if (typeof value === "number" || typeof value === "string" || typeof value === "boolean" || SerializationHelper.checkTypedArray(objectProperty)) {
21450
- // TODO json 数据避免传 typedArray
21451
- serializedData[key] = value;
21452
- } else if (isArray(value)) {
21453
- if (!serializedData[key]) {
21454
- serializedData[key] = [];
21455
- }
21456
- SerializationHelper.serializeArrayProperty(value, serializedData[key], level + 1);
21457
- } else if (EffectsObject.is(value)) {
21458
- // TODO 处理 EffectsObject 递归序列化
21459
- serializedData[key] = {
21460
- id: value.getInstanceId()
21461
- };
21462
- } else if (isObject(value)) {
21463
- if (!serializedData[key]) {
21464
- serializedData[key] = {};
21465
- }
21466
- SerializationHelper.serializeObjectProperty(value, serializedData[key], level + 1);
21467
- }
21468
- }
21469
- };
21470
- SerializationHelper.serializeArrayProperty = function serializeArrayProperty(arrayProperty, serializedData, level) {
21471
- if (level > 14) {
21472
- console.error("The nested object layers of the serialized data exceed the maximum limit.");
21473
- return;
21474
- }
21475
- if (!serializedData) {
21476
- serializedData = [];
21477
- }
21478
- for(var i = 0; i < arrayProperty.length; i++){
21479
- var value = arrayProperty[i];
21480
- if (typeof value === "number" || typeof value === "string" || typeof value === "boolean" || SerializationHelper.checkTypedArray(arrayProperty)) {
21481
- // TODO json 数据避免传 typedArray
21482
- serializedData[i] = value;
21483
- } else if (isArray(value)) {
21484
- if (!serializedData[i]) {
21485
- serializedData[i] = [];
21486
- }
21487
- SerializationHelper.serializeArrayProperty(value, serializedData[i], level + 1);
21488
- } else if (EffectsObject.is(value)) {
21489
- // TODO 处理 EffectsObject 递归序列化
21490
- serializedData[i] = {
21491
- id: value.getInstanceId()
21492
- };
21493
- } else if (isObject(value)) {
21494
- if (!serializedData[i]) {
21495
- serializedData[i] = {};
21496
- }
21497
- SerializationHelper.serializeObjectProperty(value, serializedData[i], level + 1);
21498
- }
21499
- }
21500
- };
21501
- return SerializationHelper;
21502
- }();
21503
-
21504
- var _obj$2;
21505
- /**
21506
- * 机型和渲染等级对应表
21507
- *
21508
- * 机型:B-低端机、A-中端机、S-高端机
21509
- * 渲染等级:B-低、A-中、S-高、A+-中高、B+-全部
21510
- *
21511
- * - S(高端机):高、全部、中高
21512
- * - A(中端机):中、全部、中高
21513
- * - B(低端机):低、全部
21514
- * - undefined(全部机型)
21515
- */ var renderLevelPassSet = (_obj$2 = {}, _obj$2[RenderLevel.S] = [
21516
- RenderLevel.S,
21517
- RenderLevel.BPlus,
21518
- RenderLevel.APlus
21519
- ], _obj$2[RenderLevel.A] = [
21520
- RenderLevel.A,
21521
- RenderLevel.BPlus,
21522
- RenderLevel.APlus
21523
- ], _obj$2[RenderLevel.B] = [
21524
- RenderLevel.B,
21525
- RenderLevel.BPlus
21526
- ], _obj$2);
21527
- function passRenderLevel(l, renderLevel) {
21528
- if (!l || !renderLevel) {
21529
- return true;
21530
- }
21531
- var arr = renderLevelPassSet[renderLevel];
21532
- if (arr) {
21533
- return arr.includes(l);
21534
- }
21535
- return false;
21536
- }
21537
-
21538
21077
  /**
21539
21078
  * 合成抽象类:核心对象,通常一个场景只包含一个合成,可能会有多个合成。
21540
21079
  * 合成中包含了相关的 Item 元素,支持对 Item 元素的创建、更新和销毁。
@@ -21600,10 +21139,16 @@ function passRenderLevel(l, renderLevel) {
21600
21139
  _this.rootItem.duration = sourceContent.duration;
21601
21140
  _this.rootItem.endBehavior = sourceContent.endBehavior;
21602
21141
  _this.rootItem.composition = _assert_this_initialized(_this);
21603
- // Create rootCompositionComponent
21604
- _this.rootComposition = _this.rootItem.addComponent(CompositionComponent);
21605
- filterItemsByRenderLevel(sourceContent, _this.getEngine(), scene.renderLevel);
21606
- SerializationHelper.deserialize(sourceContent, _this.rootComposition);
21142
+ // Create rootItem components
21143
+ //@ts-expect-error TODO update spec.
21144
+ var componentPaths = sourceContent.components;
21145
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(componentPaths), _step1; !(_step1 = _iterator1()).done;){
21146
+ var componentPath = _step1.value;
21147
+ var component = _this.getEngine().findObject(componentPath);
21148
+ _this.rootItem.components.push(component);
21149
+ component.item = _this.rootItem;
21150
+ }
21151
+ _this.rootComposition = _this.rootItem.getComponent(CompositionComponent);
21607
21152
  _this.width = width;
21608
21153
  _this.height = height;
21609
21154
  _this.renderOrder = baseRenderOrder;
@@ -21631,7 +21176,7 @@ function passRenderLevel(l, renderLevel) {
21631
21176
  _this.handleItemMessage = handleItemMessage;
21632
21177
  _this.createRenderFrame();
21633
21178
  _this.rendererOptions = null;
21634
- _this.buildItemTree(_this.rootItem);
21179
+ Composition.buildItemTree(_this.rootItem);
21635
21180
  _this.rootComposition.setChildrenRenderOrder(0);
21636
21181
  _this.pluginSystem.resetComposition(_assert_this_initialized(_this), _this.renderFrame);
21637
21182
  return _this;
@@ -21849,38 +21394,6 @@ function passRenderLevel(l, renderLevel) {
21849
21394
  }
21850
21395
  };
21851
21396
  /**
21852
- * 构建父子树,同时保存到 itemCacheMap 中便于查找
21853
- */ _proto.buildItemTree = function buildItemTree(compVFXItem) {
21854
- if (!compVFXItem.composition) {
21855
- return;
21856
- }
21857
- var itemMap = new Map();
21858
- var contentItems = compVFXItem.getComponent(CompositionComponent).items;
21859
- for(var _iterator = _create_for_of_iterator_helper_loose(contentItems), _step; !(_step = _iterator()).done;){
21860
- var item = _step.value;
21861
- itemMap.set(item.id, item);
21862
- }
21863
- for(var _iterator1 = _create_for_of_iterator_helper_loose(contentItems), _step1; !(_step1 = _iterator1()).done;){
21864
- var item1 = _step1.value;
21865
- if (item1.parentId === undefined) {
21866
- item1.setParent(compVFXItem);
21867
- } else {
21868
- var parent = itemMap.get(item1.parentId);
21869
- if (parent) {
21870
- item1.setParent(parent);
21871
- } else {
21872
- throw new Error("The element references a non-existent element, please check the data.");
21873
- }
21874
- }
21875
- }
21876
- for(var _iterator2 = _create_for_of_iterator_helper_loose(contentItems), _step2; !(_step2 = _iterator2()).done;){
21877
- var item2 = _step2.value;
21878
- if (VFXItem.isComposition(item2)) {
21879
- this.buildItemTree(item2);
21880
- }
21881
- }
21882
- };
21883
- /**
21884
21397
  * 更新视频数据到纹理
21885
21398
  * @override
21886
21399
  */ _proto.updateVideo = function updateVideo() {
@@ -22239,6 +21752,30 @@ function passRenderLevel(l, renderLevel) {
22239
21752
  });
22240
21753
  })();
22241
21754
  };
21755
+ /**
21756
+ * @internal
21757
+ * 构建父子树,同时保存到 itemCacheMap 中便于查找
21758
+ */ Composition.buildItemTree = function buildItemTree(compVFXItem) {
21759
+ var itemMap = new Map();
21760
+ var contentItems = compVFXItem.getComponent(CompositionComponent).items;
21761
+ for(var _iterator = _create_for_of_iterator_helper_loose(contentItems), _step; !(_step = _iterator()).done;){
21762
+ var item = _step.value;
21763
+ itemMap.set(item.id, item);
21764
+ }
21765
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(contentItems), _step1; !(_step1 = _iterator1()).done;){
21766
+ var item1 = _step1.value;
21767
+ if (item1.parentId === undefined) {
21768
+ item1.setParent(compVFXItem);
21769
+ } else {
21770
+ var parent = itemMap.get(item1.parentId);
21771
+ if (parent) {
21772
+ item1.setParent(parent);
21773
+ } else {
21774
+ throw new Error("The element references a non-existent element, please check the data.");
21775
+ }
21776
+ }
21777
+ }
21778
+ };
22242
21779
  _create_class(Composition, [
22243
21780
  {
22244
21781
  key: "transform",
@@ -22300,25 +21837,6 @@ function passRenderLevel(l, renderLevel) {
22300
21837
  ]);
22301
21838
  return Composition;
22302
21839
  }(EventEmitter);
22303
- function filterItemsByRenderLevel(composition, engine, renderLevel) {
22304
- var items = [];
22305
- for(var _iterator = _create_for_of_iterator_helper_loose(composition.items), _step; !(_step = _iterator()).done;){
22306
- var itemDataPath = _step.value;
22307
- var itemProps = engine.findEffectsObjectData(itemDataPath.id);
22308
- if (passRenderLevel(itemProps.renderLevel, renderLevel)) {
22309
- items.push(itemDataPath);
22310
- } else {
22311
- // 非预合成元素未达到渲染等级的转化为空节点。
22312
- // 预合成元素有根据 item type 的子元素加载判断,没法保留空节点,这边先整体过滤掉。
22313
- if (itemProps.type !== ItemType.composition) {
22314
- itemProps.components = [];
22315
- items.push(itemDataPath);
22316
- }
22317
- }
22318
- }
22319
- composition.items = items;
22320
- return composition;
22321
- }
22322
21840
 
22323
21841
  var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22324
21842
  _inherits(VFXItem, EffectsObject);
@@ -22331,7 +21849,7 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22331
21849
  */ _this.transform = new Transform();
22332
21850
  /**
22333
21851
  * 元素动画的当前时间
22334
- */ _this.time = 0;
21852
+ */ _this.time = -1;
22335
21853
  /**
22336
21854
  * 元素动画的持续时间
22337
21855
  */ _this.duration = 0;
@@ -22342,9 +21860,8 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22342
21860
  * 元素动画结束时行为(如何处理元素)
22343
21861
  */ _this.endBehavior = EndBehavior.forward;
22344
21862
  _this.type = ItemType.base;
22345
- _this.isDuringPlay = false;
22346
21863
  _this.components = [];
22347
- _this.rendererComponents = [];
21864
+ _this.isDuringPlay = false;
22348
21865
  /**
22349
21866
  * 元素是否激活
22350
21867
  */ _this.active = true;
@@ -22612,6 +22129,25 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22612
22129
  return undefined;
22613
22130
  };
22614
22131
  /**
22132
+ * 复制 VFXItem,返回一个新的 VFXItem
22133
+ * @since 2.4.0
22134
+ * @returns 复制的新 VFXItem
22135
+ */ _proto.duplicate = function duplicate() {
22136
+ var previousObjectIDMap = new Map();
22137
+ this.gatherPreviousObjectID(previousObjectIDMap);
22138
+ // 重新设置当前元素和组件的 ID 以及子元素和子元素组件的 ID,避免实例化新的对象时产生碰撞
22139
+ this.resetGUID();
22140
+ var newItem = this.engine.findObject({
22141
+ id: this.defination.id
22142
+ });
22143
+ newItem.resetGUID();
22144
+ this.resetGUID(previousObjectIDMap);
22145
+ if (this.composition) {
22146
+ newItem.setParent(this.composition.rootItem);
22147
+ }
22148
+ return newItem;
22149
+ };
22150
+ /**
22615
22151
  * @internal
22616
22152
  */ _proto.beginPlay = function beginPlay() {
22617
22153
  this.isDuringPlay = true;
@@ -22706,19 +22242,18 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22706
22242
  if (duration < 0) {
22707
22243
  throw new Error("Item duration can't be less than 0, see " + HELP_LINK["Item duration can't be less than 0"] + ".");
22708
22244
  }
22709
- this.rendererComponents.length = 0;
22710
- for(var _iterator = _create_for_of_iterator_helper_loose(this.components), _step; !(_step = _iterator()).done;){
22711
- var component = _step.value;
22712
- component.item = this;
22713
- if (_instanceof1(component, RendererComponent)) {
22714
- this.rendererComponents.push(component);
22715
- }
22716
- // TODO ParticleSystemRenderer 现在是动态生成的,后面需要在 json 中单独表示为一个组件
22717
- if (_instanceof1(component, ParticleSystem)) {
22718
- if (!this.components.includes(component.renderer)) {
22719
- this.components.push(component.renderer);
22245
+ if (data.components) {
22246
+ this.components.length = 0;
22247
+ for(var _iterator = _create_for_of_iterator_helper_loose(data.components), _step; !(_step = _iterator()).done;){
22248
+ var componentPath = _step.value;
22249
+ var component = this.engine.findObject(componentPath);
22250
+ this.components.push(component);
22251
+ // TODO ParticleSystemRenderer 现在是动态生成的,后面需要在 json 中单独表示为一个组件
22252
+ if (_instanceof1(component, ParticleSystem)) {
22253
+ if (!this.components.includes(component.renderer)) {
22254
+ this.components.push(component.renderer);
22255
+ }
22720
22256
  }
22721
- this.rendererComponents.push(component.renderer);
22722
22257
  }
22723
22258
  }
22724
22259
  if (VFXItem.isComposition(this)) {
@@ -22727,24 +22262,24 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22727
22262
  };
22728
22263
  _proto.toData = function toData() {
22729
22264
  var _this_parent;
22730
- this.taggedProperties.id = this.guid;
22731
- this.taggedProperties.transform = this.transform.toData();
22732
- this.taggedProperties.dataType = DataType.VFXItemData;
22265
+ this.defination.id = this.guid;
22266
+ this.defination.transform = this.transform.toData();
22267
+ this.defination.dataType = DataType.VFXItemData;
22733
22268
  if (((_this_parent = this.parent) == null ? void 0 : _this_parent.name) !== "rootItem") {
22734
22269
  var _this_parent1;
22735
- this.taggedProperties.parentId = (_this_parent1 = this.parent) == null ? void 0 : _this_parent1.guid;
22270
+ this.defination.parentId = (_this_parent1 = this.parent) == null ? void 0 : _this_parent1.guid;
22736
22271
  }
22737
22272
  // TODO 统一 sprite 等其他组件的序列化逻辑
22738
- if (!this.taggedProperties.components) {
22739
- this.taggedProperties.components = [];
22273
+ if (!this.defination.components) {
22274
+ this.defination.components = [];
22740
22275
  for(var _iterator = _create_for_of_iterator_helper_loose(this.components), _step; !(_step = _iterator()).done;){
22741
22276
  var component = _step.value;
22742
22277
  if (_instanceof1(component, EffectComponent)) {
22743
- this.taggedProperties.components.push(component);
22278
+ this.defination.components.push(component);
22744
22279
  }
22745
22280
  }
22746
22281
  }
22747
- this.taggedProperties.content = {};
22282
+ this.defination.content = {};
22748
22283
  };
22749
22284
  _proto.translateByPixel = function translateByPixel(x, y) {
22750
22285
  if (this.composition) {
@@ -22801,17 +22336,52 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22801
22336
  if (!props) {
22802
22337
  throw new Error("Referenced precomposition with Id: " + refId + " does not exist.");
22803
22338
  }
22804
- var compositionComponent = this.addComponent(CompositionComponent);
22805
- filterItemsByRenderLevel(props, this.engine, this.engine.renderLevel);
22806
- SerializationHelper.deserialize(props, compositionComponent);
22807
- for(var _iterator = _create_for_of_iterator_helper_loose(compositionComponent.items), _step; !(_step = _iterator()).done;){
22808
- var vfxItem = _step.value;
22809
- vfxItem.setInstanceId(generateGUID());
22810
- for(var _iterator1 = _create_for_of_iterator_helper_loose(vfxItem.components), _step1; !(_step1 = _iterator1()).done;){
22811
- var component = _step1.value;
22812
- component.setInstanceId(generateGUID());
22339
+ //@ts-expect-error TODO update spec.
22340
+ var componentPaths = props.components;
22341
+ for(var _iterator = _create_for_of_iterator_helper_loose(componentPaths), _step; !(_step = _iterator()).done;){
22342
+ var componentPath = _step.value;
22343
+ var component = this.engine.findObject(componentPath);
22344
+ component.item = this;
22345
+ this.components.push(component);
22346
+ component.setInstanceId(generateGUID());
22347
+ if (_instanceof1(component, CompositionComponent)) {
22348
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(component.items), _step1; !(_step1 = _iterator1()).done;){
22349
+ var vfxItem = _step1.value;
22350
+ vfxItem.setInstanceId(generateGUID());
22351
+ for(var _iterator2 = _create_for_of_iterator_helper_loose(vfxItem.components), _step2; !(_step2 = _iterator2()).done;){
22352
+ var component1 = _step2.value;
22353
+ component1.setInstanceId(generateGUID());
22354
+ }
22355
+ }
22813
22356
  }
22814
22357
  }
22358
+ Composition.buildItemTree(this);
22359
+ };
22360
+ _proto.resetGUID = function resetGUID(previousObjectIDMap) {
22361
+ var _previousObjectIDMap_get;
22362
+ var itemGUID = (_previousObjectIDMap_get = previousObjectIDMap == null ? void 0 : previousObjectIDMap.get(this)) != null ? _previousObjectIDMap_get : generateGUID();
22363
+ this.setInstanceId(itemGUID);
22364
+ for(var _iterator = _create_for_of_iterator_helper_loose(this.components), _step; !(_step = _iterator()).done;){
22365
+ var component = _step.value;
22366
+ var _previousObjectIDMap_get1;
22367
+ var componentGUID = (_previousObjectIDMap_get1 = previousObjectIDMap == null ? void 0 : previousObjectIDMap.get(component)) != null ? _previousObjectIDMap_get1 : generateGUID();
22368
+ component.setInstanceId(componentGUID);
22369
+ }
22370
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(this.children), _step1; !(_step1 = _iterator1()).done;){
22371
+ var child = _step1.value;
22372
+ child.resetGUID(previousObjectIDMap);
22373
+ }
22374
+ };
22375
+ _proto.gatherPreviousObjectID = function gatherPreviousObjectID(previousObjectIDMap) {
22376
+ previousObjectIDMap.set(this, this.getInstanceId());
22377
+ for(var _iterator = _create_for_of_iterator_helper_loose(this.components), _step; !(_step = _iterator()).done;){
22378
+ var component = _step.value;
22379
+ previousObjectIDMap.set(component, component.getInstanceId());
22380
+ }
22381
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(this.children), _step1; !(_step1 = _iterator1()).done;){
22382
+ var child = _step1.value;
22383
+ child.gatherPreviousObjectID(previousObjectIDMap);
22384
+ }
22815
22385
  };
22816
22386
  /**
22817
22387
  *
@@ -22918,9 +22488,11 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22918
22488
  set: function set(value) {
22919
22489
  if (this.listIndex !== value) {
22920
22490
  this.listIndex = value;
22921
- for(var _iterator = _create_for_of_iterator_helper_loose(this.rendererComponents), _step; !(_step = _iterator()).done;){
22922
- var rendererComponent = _step.value;
22923
- rendererComponent.priority = value;
22491
+ for(var _iterator = _create_for_of_iterator_helper_loose(this.components), _step; !(_step = _iterator()).done;){
22492
+ var component = _step.value;
22493
+ if (_instanceof1(component, RendererComponent)) {
22494
+ component.priority = value;
22495
+ }
22924
22496
  }
22925
22497
  }
22926
22498
  }
@@ -22944,9 +22516,6 @@ var VFXItem = /*#__PURE__*/ function(EffectsObject) {
22944
22516
  ]);
22945
22517
  return VFXItem;
22946
22518
  }(EffectsObject);
22947
- __decorate([
22948
- serialize()
22949
- ], VFXItem.prototype, "components", void 0);
22950
22519
  VFXItem = __decorate([
22951
22520
  effectsClass(DataType.VFXItemData)
22952
22521
  ], VFXItem);
@@ -27011,8 +26580,6 @@ var BinaryAsset = /*#__PURE__*/ function(EffectsObject) {
27011
26580
  function BinaryAsset() {
27012
26581
  return EffectsObject.apply(this, arguments);
27013
26582
  }
27014
- var _proto = BinaryAsset.prototype;
27015
- _proto.fromData = function fromData(data) {};
27016
26583
  return BinaryAsset;
27017
26584
  }(EffectsObject);
27018
26585
  __decorate([
@@ -27022,6 +26589,197 @@ BinaryAsset = __decorate([
27022
26589
  effectsClass(DataType.BinaryAsset)
27023
26590
  ], BinaryAsset);
27024
26591
 
26592
+ var SerializationHelper = /*#__PURE__*/ function() {
26593
+ function SerializationHelper() {}
26594
+ SerializationHelper.serialize = function serialize(effectsObject, serializedData) {
26595
+ effectsObject.toData();
26596
+ if (!serializedData) {
26597
+ serializedData = {};
26598
+ }
26599
+ var serializedProperties = getMergedStore(effectsObject);
26600
+ if (serializedProperties) {
26601
+ for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(serializedProperties)), _step; !(_step = _iterator()).done;){
26602
+ var key = _step.value;
26603
+ var value = effectsObject[key];
26604
+ if (typeof value === "number" || typeof value === "string" || typeof value === "boolean" || SerializationHelper.checkTypedArray(value)) {
26605
+ // TODO json 数据避免传 typedArray
26606
+ serializedData[key] = value;
26607
+ } else if (isArray(value)) {
26608
+ if (!serializedData[key]) {
26609
+ serializedData[key] = [];
26610
+ }
26611
+ SerializationHelper.serializeArrayProperty(value, serializedData[key], 0);
26612
+ } else if (EffectsObject.is(value)) {
26613
+ // TODO 处理 EffectsObject 递归序列化
26614
+ serializedData[key] = {
26615
+ id: value.getInstanceId()
26616
+ };
26617
+ } else if (isObject(value)) {
26618
+ if (!serializedData[key]) {
26619
+ serializedData[key] = {};
26620
+ }
26621
+ SerializationHelper.serializeObjectProperty(value, serializedData[key], 0);
26622
+ }
26623
+ }
26624
+ }
26625
+ // TODO 待移除 tagggedProperties 为没有装饰器的临时方案
26626
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(Object.keys(effectsObject.defination)), _step1; !(_step1 = _iterator1()).done;){
26627
+ var key1 = _step1.value;
26628
+ var value1 = effectsObject.defination[key1];
26629
+ if (typeof value1 === "number" || typeof value1 === "string" || typeof value1 === "boolean" || SerializationHelper.checkTypedArray(value1)) {
26630
+ // TODO json 数据避免传 typedArray
26631
+ serializedData[key1] = value1;
26632
+ } else if (isArray(value1)) {
26633
+ if (!serializedData[key1]) {
26634
+ serializedData[key1] = [];
26635
+ }
26636
+ SerializationHelper.serializeArrayProperty(value1, serializedData[key1], 0);
26637
+ } else if (EffectsObject.is(value1)) {
26638
+ // TODO 处理 EffectsObject 递归序列化
26639
+ serializedData[key1] = {
26640
+ id: value1.getInstanceId()
26641
+ };
26642
+ } else if (isObject(value1)) {
26643
+ if (!serializedData[key1]) {
26644
+ serializedData[key1] = {};
26645
+ }
26646
+ SerializationHelper.serializeObjectProperty(value1, serializedData[key1], 0);
26647
+ }
26648
+ }
26649
+ return serializedData;
26650
+ };
26651
+ SerializationHelper.deserialize = function deserialize(serializedData, effectsObject) {
26652
+ effectsObject.defination = serializedData;
26653
+ var serializedProperties = getMergedStore(effectsObject);
26654
+ var engine = effectsObject.engine;
26655
+ if (serializedProperties) {
26656
+ for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(serializedProperties)), _step; !(_step = _iterator()).done;){
26657
+ var key = _step.value;
26658
+ var value = serializedData[key];
26659
+ if (value === undefined) {
26660
+ continue;
26661
+ }
26662
+ var propertyType = serializedProperties[key].type;
26663
+ // FIXME: taggedProperties 为 readonly,这里存在强制赋值
26664
+ effectsObject[key] = SerializationHelper.deserializeProperty(value, engine, 0, propertyType);
26665
+ }
26666
+ }
26667
+ effectsObject.fromData(effectsObject.defination);
26668
+ };
26669
+ SerializationHelper.checkTypedArray = function checkTypedArray(obj) {
26670
+ return _instanceof1(obj, Int8Array) || _instanceof1(obj, Uint8Array) || _instanceof1(obj, Uint8ClampedArray) || _instanceof1(obj, Int16Array) || _instanceof1(obj, Uint16Array) || _instanceof1(obj, Int32Array) || _instanceof1(obj, Uint32Array) || _instanceof1(obj, Float32Array) || _instanceof1(obj, Float64Array) || _instanceof1(obj, ArrayBuffer);
26671
+ };
26672
+ // check value is { id: 7e69662e964e4892ae8933f24562395b }
26673
+ SerializationHelper.checkDataPath = function checkDataPath(value) {
26674
+ return !!(isObject(value) && Object.keys(value).length === 1 && "id" in value && isString(value.id) && value.id.length === 32);
26675
+ };
26676
+ // TODO 测试函数,2.0 上线后移除
26677
+ SerializationHelper.checkGLTFNode = function checkGLTFNode(value) {
26678
+ return isObject(value) && value.nodeIndex !== undefined && value.isJoint !== undefined;
26679
+ };
26680
+ SerializationHelper.checkImageSource = function checkImageSource(value) {
26681
+ return isCanvas(value) || _instanceof1(value, HTMLImageElement);
26682
+ };
26683
+ SerializationHelper.deserializeProperty = function deserializeProperty(property, engine, level, type, overrideDataPath) {
26684
+ if (overrideDataPath === void 0) overrideDataPath = true;
26685
+ if (level > 14) {
26686
+ console.error("The nested object layers of the serialized data exceed the maximum limit.");
26687
+ return;
26688
+ }
26689
+ // 加载并链接 DataPath 字段表示的 EffectsObject 引用。Class 对象 copy [key, value] 会丢失对象信息,因此只递归数组对象和普通 js Object 结构对象。
26690
+ if (isArray(property)) {
26691
+ var res = [];
26692
+ for(var _iterator = _create_for_of_iterator_helper_loose(property), _step; !(_step = _iterator()).done;){
26693
+ var value = _step.value;
26694
+ res.push(SerializationHelper.deserializeProperty(value, engine, level + 1, type, overrideDataPath));
26695
+ }
26696
+ return res;
26697
+ // TODO json 数据避免传 typedArray
26698
+ } else if (SerializationHelper.checkDataPath(property)) {
26699
+ var referenceObject = engine.findObject(property);
26700
+ return overrideDataPath ? referenceObject : property;
26701
+ } else if (isObject(property) && property.constructor === Object) {
26702
+ var res1;
26703
+ if (type) {
26704
+ res1 = new type();
26705
+ } else {
26706
+ res1 = {};
26707
+ }
26708
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(Object.keys(property)), _step1; !(_step1 = _iterator1()).done;){
26709
+ var key = _step1.value;
26710
+ res1[key] = SerializationHelper.deserializeProperty(property[key], engine, level + 1, undefined, overrideDataPath);
26711
+ }
26712
+ return res1;
26713
+ } else {
26714
+ return property;
26715
+ }
26716
+ };
26717
+ SerializationHelper.serializeObjectProperty = function serializeObjectProperty(objectProperty, serializedData, level) {
26718
+ if (level > 14) {
26719
+ console.error("The nested object layers of the serialized data exceed the maximum limit.");
26720
+ return;
26721
+ }
26722
+ if (!serializedData) {
26723
+ serializedData = {};
26724
+ }
26725
+ for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(objectProperty)), _step; !(_step = _iterator()).done;){
26726
+ var key = _step.value;
26727
+ var value = objectProperty[key];
26728
+ if (typeof value === "number" || typeof value === "string" || typeof value === "boolean" || SerializationHelper.checkTypedArray(objectProperty)) {
26729
+ // TODO json 数据避免传 typedArray
26730
+ serializedData[key] = value;
26731
+ } else if (isArray(value)) {
26732
+ if (!serializedData[key]) {
26733
+ serializedData[key] = [];
26734
+ }
26735
+ SerializationHelper.serializeArrayProperty(value, serializedData[key], level + 1);
26736
+ } else if (EffectsObject.is(value)) {
26737
+ // TODO 处理 EffectsObject 递归序列化
26738
+ serializedData[key] = {
26739
+ id: value.getInstanceId()
26740
+ };
26741
+ } else if (isObject(value)) {
26742
+ if (!serializedData[key]) {
26743
+ serializedData[key] = {};
26744
+ }
26745
+ SerializationHelper.serializeObjectProperty(value, serializedData[key], level + 1);
26746
+ }
26747
+ }
26748
+ };
26749
+ SerializationHelper.serializeArrayProperty = function serializeArrayProperty(arrayProperty, serializedData, level) {
26750
+ if (level > 14) {
26751
+ console.error("The nested object layers of the serialized data exceed the maximum limit.");
26752
+ return;
26753
+ }
26754
+ if (!serializedData) {
26755
+ serializedData = [];
26756
+ }
26757
+ for(var i = 0; i < arrayProperty.length; i++){
26758
+ var value = arrayProperty[i];
26759
+ if (typeof value === "number" || typeof value === "string" || typeof value === "boolean" || SerializationHelper.checkTypedArray(arrayProperty)) {
26760
+ // TODO json 数据避免传 typedArray
26761
+ serializedData[i] = value;
26762
+ } else if (isArray(value)) {
26763
+ if (!serializedData[i]) {
26764
+ serializedData[i] = [];
26765
+ }
26766
+ SerializationHelper.serializeArrayProperty(value, serializedData[i], level + 1);
26767
+ } else if (EffectsObject.is(value)) {
26768
+ // TODO 处理 EffectsObject 递归序列化
26769
+ serializedData[i] = {
26770
+ id: value.getInstanceId()
26771
+ };
26772
+ } else if (isObject(value)) {
26773
+ if (!serializedData[i]) {
26774
+ serializedData[i] = {};
26775
+ }
26776
+ SerializationHelper.serializeObjectProperty(value, serializedData[i], level + 1);
26777
+ }
26778
+ }
26779
+ };
26780
+ return SerializationHelper;
26781
+ }();
26782
+
27025
26783
  /**
27026
26784
  * @since 2.0.0
27027
26785
  */ var AssetLoader = /*#__PURE__*/ function() {
@@ -27029,9 +26787,10 @@ BinaryAsset = __decorate([
27029
26787
  this.engine = engine;
27030
26788
  }
27031
26789
  var _proto = AssetLoader.prototype;
27032
- _proto.loadGUID = function loadGUID(guid) {
27033
- if (this.engine.objectInstance[guid]) {
27034
- return this.engine.objectInstance[guid];
26790
+ _proto.loadGUID = function loadGUID(dataPath) {
26791
+ var guid = dataPath.id;
26792
+ if (!dataPath) {
26793
+ return null;
27035
26794
  }
27036
26795
  var effectsObjectData = this.findData(guid);
27037
26796
  var effectsObject;
@@ -27066,92 +26825,6 @@ BinaryAsset = __decorate([
27066
26825
  SerializationHelper.deserialize(effectsObjectData, effectsObject);
27067
26826
  return effectsObject;
27068
26827
  };
27069
- // 加载本地文件资产
27070
- _proto.loadGUIDAsync = function loadGUIDAsync(guid) {
27071
- var _this = this;
27072
- return _async_to_generator(function() {
27073
- var effectsObjectData, effectsObject, classConstructor;
27074
- return __generator(this, function(_state) {
27075
- switch(_state.label){
27076
- case 0:
27077
- if (_this.engine.objectInstance[guid]) {
27078
- return [
27079
- 2,
27080
- _this.engine.objectInstance[guid]
27081
- ];
27082
- }
27083
- effectsObjectData = _this.findData(guid);
27084
- if (!!effectsObjectData) return [
27085
- 3,
27086
- 2
27087
- ];
27088
- if (!_this.engine.database) {
27089
- console.error("Object data with uuid: " + guid + " not found.");
27090
- return [
27091
- 2,
27092
- undefined
27093
- ];
27094
- }
27095
- return [
27096
- 4,
27097
- _this.engine.database.loadGUID(guid)
27098
- ];
27099
- case 1:
27100
- effectsObject = _state.sent();
27101
- if (!effectsObject) {
27102
- console.error("Disk data with uuid: " + guid + " not found.");
27103
- return [
27104
- 2,
27105
- undefined
27106
- ];
27107
- }
27108
- _this.engine.addInstance(effectsObject);
27109
- return [
27110
- 2,
27111
- effectsObject
27112
- ];
27113
- case 2:
27114
- switch(effectsObjectData.dataType){
27115
- case DataType.Material:
27116
- effectsObject = Material.create(_this.engine);
27117
- break;
27118
- case DataType.Geometry:
27119
- effectsObject = Geometry.create(_this.engine);
27120
- break;
27121
- case DataType.Texture:
27122
- effectsObject = Texture.create(_this.engine);
27123
- break;
27124
- default:
27125
- {
27126
- classConstructor = AssetLoader.getClass(effectsObjectData.dataType);
27127
- if (classConstructor) {
27128
- effectsObject = new classConstructor(_this.engine);
27129
- }
27130
- }
27131
- }
27132
- if (!effectsObject) {
27133
- console.error("Constructor for DataType: " + effectsObjectData.dataType + " not found.");
27134
- return [
27135
- 2,
27136
- undefined
27137
- ];
27138
- }
27139
- effectsObject.setInstanceId(effectsObjectData.id);
27140
- _this.engine.addInstance(effectsObject);
27141
- return [
27142
- 4,
27143
- SerializationHelper.deserializeAsync(effectsObjectData, effectsObject)
27144
- ];
27145
- case 3:
27146
- _state.sent();
27147
- return [
27148
- 2,
27149
- effectsObject
27150
- ];
27151
- }
27152
- });
27153
- })();
27154
- };
27155
26828
  _proto.findData = function findData(uuid) {
27156
26829
  return this.engine.jsonSceneData[uuid];
27157
26830
  };
@@ -27501,35 +27174,35 @@ function rotationZYXFromQuat(out, quat) {
27501
27174
  ];
27502
27175
  }
27503
27176
  }
27504
- var _obj$1;
27505
- var particleOriginTranslateMap = (_obj$1 = {}, _obj$1[ParticleOrigin.PARTICLE_ORIGIN_CENTER] = [
27177
+ var _obj$2;
27178
+ var particleOriginTranslateMap = (_obj$2 = {}, _obj$2[ParticleOrigin.PARTICLE_ORIGIN_CENTER] = [
27506
27179
  0,
27507
27180
  0
27508
- ], _obj$1[ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM] = [
27181
+ ], _obj$2[ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM] = [
27509
27182
  0,
27510
27183
  -0.5
27511
- ], _obj$1[ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP] = [
27184
+ ], _obj$2[ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP] = [
27512
27185
  0,
27513
27186
  0.5
27514
- ], _obj$1[ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP] = [
27187
+ ], _obj$2[ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP] = [
27515
27188
  -0.5,
27516
27189
  0.5
27517
- ], _obj$1[ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER] = [
27190
+ ], _obj$2[ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER] = [
27518
27191
  -0.5,
27519
27192
  0
27520
- ], _obj$1[ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM] = [
27193
+ ], _obj$2[ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM] = [
27521
27194
  -0.5,
27522
27195
  -0.5
27523
- ], _obj$1[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER] = [
27196
+ ], _obj$2[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER] = [
27524
27197
  0.5,
27525
27198
  0
27526
- ], _obj$1[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [
27199
+ ], _obj$2[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [
27527
27200
  0.5,
27528
27201
  -0.5
27529
- ], _obj$1[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP] = [
27202
+ ], _obj$2[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP] = [
27530
27203
  0.5,
27531
27204
  0.5
27532
- ], _obj$1);
27205
+ ], _obj$2);
27533
27206
  function getBezierCurveFromHermite(m0, m1, p0, p3) {
27534
27207
  var xStart = p0[0];
27535
27208
  var yStart = p0[1];
@@ -27768,28 +27441,6 @@ var refCompositions = new Map();
27768
27441
  }
27769
27442
  }
27770
27443
  }
27771
- // Composition id 转 guid
27772
- var compositionId = json.compositionId;
27773
- var compositionIdToGUIDMap = {};
27774
- for(var _iterator3 = _create_for_of_iterator_helper_loose(json.compositions), _step3; !(_step3 = _iterator3()).done;){
27775
- var composition = _step3.value;
27776
- var guid = generateGUID();
27777
- compositionIdToGUIDMap[composition.id] = guid;
27778
- if (composition.id === compositionId) {
27779
- json.compositionId = guid;
27780
- }
27781
- composition.id = guid;
27782
- }
27783
- // 预合成元素 refId 同步改为生成的合成 guid
27784
- for(var _iterator4 = _create_for_of_iterator_helper_loose(json.items), _step4; !(_step4 = _iterator4()).done;){
27785
- var item = _step4.value;
27786
- if (item.content) {
27787
- var compositionOptions = item.content.options;
27788
- if (compositionOptions && compositionOptions.refId !== undefined) {
27789
- compositionOptions.refId = compositionIdToGUIDMap[compositionOptions.refId];
27790
- }
27791
- }
27792
- }
27793
27444
  return json;
27794
27445
  }
27795
27446
  function version32Migration(json) {
@@ -27816,21 +27467,68 @@ function version32Migration(json) {
27816
27467
  itemMap.set(item.id, item);
27817
27468
  }
27818
27469
  processContent(mainComp);
27470
+ return json;
27471
+ }
27472
+ function version33Migration(json) {
27819
27473
  // 老 shape 数据兼容
27820
- for(var _iterator3 = _create_for_of_iterator_helper_loose(items), _step3; !(_step3 = _iterator3()).done;){
27821
- var item1 = _step3.value;
27822
- if (item1.type === ItemType.sprite) {
27823
- var spriteComponent = componentMap.get(item1.components[0].id);
27474
+ for(var _iterator = _create_for_of_iterator_helper_loose(json.items), _step; !(_step = _iterator()).done;){
27475
+ var item = _step.value;
27476
+ if (item.type === ItemType.sprite) {
27477
+ var spriteComponent = componentMap.get(item.components[0].id);
27824
27478
  if (spriteComponent) {
27825
27479
  var shape = spriteComponent.renderer.shape;
27826
27480
  var shapeData = void 0;
27827
27481
  if (Number.isInteger(shape)) {
27828
27482
  shapeData = json.shapes[shape];
27483
+ } else {
27484
+ shapeData = shape;
27829
27485
  }
27830
27486
  spriteComponent.renderer.shape = shapeData;
27831
27487
  }
27832
27488
  }
27833
27489
  }
27490
+ // Composition id 转 guid, Composition 分离 CompositionComponent
27491
+ var compositionId = json.compositionId;
27492
+ var compositionIdToGUIDMap = {};
27493
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(json.compositions), _step1; !(_step1 = _iterator1()).done;){
27494
+ var composition = _step1.value;
27495
+ var guid = generateGUID();
27496
+ compositionIdToGUIDMap[composition.id] = guid;
27497
+ if (composition.id === compositionId) {
27498
+ json.compositionId = guid;
27499
+ }
27500
+ composition.id = guid;
27501
+ var compositionComponent = {
27502
+ id: generateGUID(),
27503
+ dataType: "CompositionComponent",
27504
+ items: composition.items,
27505
+ timelineAsset: composition.timelineAsset,
27506
+ sceneBindings: composition.sceneBindings,
27507
+ startTime: composition.startTime
27508
+ };
27509
+ //@ts-expect-error
27510
+ composition.timelineAsset = undefined;
27511
+ //@ts-expect-error
27512
+ composition.sceneBindings = undefined;
27513
+ composition.startTime = undefined;
27514
+ //@ts-expect-error
27515
+ composition.components = [
27516
+ {
27517
+ id: compositionComponent.id
27518
+ }
27519
+ ];
27520
+ json.components.push(compositionComponent);
27521
+ }
27522
+ // 预合成元素 refId 同步改为生成的合成 guid
27523
+ for(var _iterator2 = _create_for_of_iterator_helper_loose(json.items), _step2; !(_step2 = _iterator2()).done;){
27524
+ var item1 = _step2.value;
27525
+ if (item1.content) {
27526
+ var compositionOptions = item1.content.options;
27527
+ if (compositionOptions && compositionOptions.refId !== undefined) {
27528
+ compositionOptions.refId = compositionIdToGUIDMap[compositionOptions.refId];
27529
+ }
27530
+ }
27531
+ }
27834
27532
  return json;
27835
27533
  }
27836
27534
  function processContent(composition) {
@@ -28704,7 +28402,7 @@ function getStandardJSON(json) {
28704
28402
  if (v0.test(json.version)) {
28705
28403
  var _exec;
28706
28404
  reverseParticle = ((_exec = /^(\d+)/.exec(json.version)) == null ? void 0 : _exec[0]) === "0";
28707
- return version32Migration(version31Migration(version30Migration(version21Migration(getStandardJSONFromV0(json)))));
28405
+ return version33Migration(version32Migration(version31Migration(version30Migration(version21Migration(getStandardJSONFromV0(json))))));
28708
28406
  }
28709
28407
  reverseParticle = false;
28710
28408
  var vs = standardVersion.exec(json.version) || [];
@@ -28729,6 +28427,9 @@ function getStandardJSON(json) {
28729
28427
  if (minorVersion < 3) {
28730
28428
  json = version32Migration(json);
28731
28429
  }
28430
+ if (minorVersion < 4) {
28431
+ json = version33Migration(json);
28432
+ }
28732
28433
  }
28733
28434
  return json;
28734
28435
  }
@@ -29012,6 +28713,40 @@ function getStandardItem(item, opt) {
29012
28713
  }
29013
28714
  }
29014
28715
 
28716
+ var _obj$1;
28717
+ /**
28718
+ * 机型和渲染等级对应表
28719
+ *
28720
+ * 机型:B-低端机、A-中端机、S-高端机
28721
+ * 渲染等级:B-低、A-中、S-高、A+-中高、B+-全部
28722
+ *
28723
+ * - S(高端机):高、全部、中高
28724
+ * - A(中端机):中、全部、中高
28725
+ * - B(低端机):低、全部
28726
+ * - undefined(全部机型)
28727
+ */ var renderLevelPassSet = (_obj$1 = {}, _obj$1[RenderLevel.S] = [
28728
+ RenderLevel.S,
28729
+ RenderLevel.BPlus,
28730
+ RenderLevel.APlus
28731
+ ], _obj$1[RenderLevel.A] = [
28732
+ RenderLevel.A,
28733
+ RenderLevel.BPlus,
28734
+ RenderLevel.APlus
28735
+ ], _obj$1[RenderLevel.B] = [
28736
+ RenderLevel.B,
28737
+ RenderLevel.BPlus
28738
+ ], _obj$1);
28739
+ function passRenderLevel(l, renderLevel) {
28740
+ if (!l || !renderLevel) {
28741
+ return true;
28742
+ }
28743
+ var arr = renderLevelPassSet[renderLevel];
28744
+ if (arr) {
28745
+ return arr.includes(l);
28746
+ }
28747
+ return false;
28748
+ }
28749
+
29015
28750
  var Scene;
29016
28751
  (function(Scene) {
29017
28752
  function isJSONObject(scene) {
@@ -29911,7 +29646,9 @@ function createTextureOptionsBySource(image, sourceFrom, id) {
29911
29646
  if (_instanceof1(textureOptions, Texture)) {
29912
29647
  this.engine.addInstance(textureOptions);
29913
29648
  } else {
29914
- textureOptions = this.engine.assetLoader.loadGUID(scene.textureOptions[i].id);
29649
+ textureOptions = this.engine.findObject({
29650
+ id: scene.textureOptions[i].id
29651
+ });
29915
29652
  scene.textureOptions[i] = textureOptions;
29916
29653
  }
29917
29654
  textureOptions.initialize();
@@ -31558,8 +31295,18 @@ var FBGeometryDataT = /*#__PURE__*/ function() {
31558
31295
  _proto.addInstance = function addInstance(effectsObject) {
31559
31296
  this.objectInstance[effectsObject.getInstanceId()] = effectsObject;
31560
31297
  };
31561
- _proto.getInstance = function getInstance(id) {
31562
- return this.objectInstance[id];
31298
+ /**
31299
+ * @ignore
31300
+ */ _proto.findObject = function findObject(guid) {
31301
+ // 编辑器可能传 Class 对象,这边判断处理一下直接返回原对象。
31302
+ if (!(isObject(guid) && guid.constructor === Object)) {
31303
+ return guid;
31304
+ }
31305
+ if (this.objectInstance[guid.id]) {
31306
+ return this.objectInstance[guid.id];
31307
+ }
31308
+ var result = this.assetLoader.loadGUID(guid);
31309
+ return result;
31563
31310
  };
31564
31311
  _proto.removeInstance = function removeInstance(id) {
31565
31312
  delete this.objectInstance[id];
@@ -31573,6 +31320,10 @@ var FBGeometryDataT = /*#__PURE__*/ function() {
31573
31320
  }
31574
31321
  for(var _iterator1 = _create_for_of_iterator_helper_loose(items), _step1; !(_step1 = _iterator1()).done;){
31575
31322
  var vfxItemData = _step1.value;
31323
+ if (!passRenderLevel(vfxItemData.renderLevel, scene.renderLevel)) {
31324
+ vfxItemData.components = [];
31325
+ vfxItemData.type = ItemType.null;
31326
+ }
31576
31327
  this.addEffectsObjectData(vfxItemData);
31577
31328
  }
31578
31329
  for(var _iterator2 = _create_for_of_iterator_helper_loose(materials), _step2; !(_step2 = _iterator2()).done;){
@@ -31627,45 +31378,20 @@ var FBGeometryDataT = /*#__PURE__*/ function() {
31627
31378
  return _async_to_generator(function() {
31628
31379
  var jsonScene, _iterator, _step, itemData, itemType;
31629
31380
  return __generator(this, function(_state) {
31630
- switch(_state.label){
31631
- case 0:
31632
- jsonScene = scene.jsonScene;
31633
- _iterator = _create_for_of_iterator_helper_loose(jsonScene.items);
31634
- _state.label = 1;
31635
- case 1:
31636
- if (!!(_step = _iterator()).done) return [
31637
- 3,
31638
- 4
31639
- ];
31640
- itemData = _step.value;
31641
- itemType = itemData.type;
31642
- if (!(itemType === "ECS" || itemType === "camera" || itemType === ItemType.sprite || itemType === ItemType.particle || itemType === ItemType.mesh || itemType === ItemType.skybox || itemType === ItemType.light || itemType === ItemType.tree || itemType === ItemType.interact || itemType === ItemType.camera)) {
31643
- return [
31644
- 3,
31645
- 3
31646
- ];
31647
- }
31648
- if (!_this.database) return [
31649
- 3,
31650
- 3
31651
- ];
31652
- return [
31653
- 4,
31654
- _this.assetLoader.loadGUIDAsync(itemData.id)
31655
- ];
31656
- case 2:
31657
- _state.sent();
31658
- _state.label = 3;
31659
- case 3:
31660
- return [
31661
- 3,
31662
- 1
31663
- ];
31664
- case 4:
31665
- return [
31666
- 2
31667
- ];
31381
+ jsonScene = scene.jsonScene;
31382
+ for(_iterator = _create_for_of_iterator_helper_loose(jsonScene.items); !(_step = _iterator()).done;){
31383
+ itemData = _step.value;
31384
+ itemType = itemData.type;
31385
+ if (!(itemType === "ECS" || itemType === "camera" || itemType === ItemType.sprite || itemType === ItemType.particle || itemType === ItemType.mesh || itemType === ItemType.skybox || itemType === ItemType.light || itemType === ItemType.tree || itemType === ItemType.interact || itemType === ItemType.camera)) {
31386
+ continue;
31387
+ }
31388
+ if (_this.database) {
31389
+ _this.assetLoader.loadGUID(itemData);
31390
+ }
31668
31391
  }
31392
+ return [
31393
+ 2
31394
+ ];
31669
31395
  });
31670
31396
  })();
31671
31397
  };
@@ -31913,7 +31639,7 @@ registerPlugin("sprite", SpriteLoader, VFXItem);
31913
31639
  registerPlugin("particle", ParticleLoader, VFXItem);
31914
31640
  registerPlugin("cal", CalculateLoader, VFXItem);
31915
31641
  registerPlugin("interact", InteractLoader, VFXItem);
31916
- var version$1 = "2.4.0-beta.0";
31642
+ var version$1 = "2.4.0-beta.2";
31917
31643
  logger.info("Core version: " + version$1 + ".");
31918
31644
 
31919
31645
  var _obj;
@@ -32506,6 +32232,17 @@ var _obj3;
32506
32232
  this.material.side = THREE.BackSide;
32507
32233
  }
32508
32234
  }
32235
+ },
32236
+ {
32237
+ key: "colorMask",
32238
+ get: function get() {
32239
+ return this.material.colorWrite;
32240
+ },
32241
+ set: /**
32242
+ * 获取颜色写入开关
32243
+ */ function set(value) {
32244
+ this.material.colorWrite = value;
32245
+ }
32509
32246
  }
32510
32247
  ]);
32511
32248
  return ThreeMaterial;
@@ -33504,8 +33241,8 @@ setMaxSpriteMeshItemCount(8);
33504
33241
  */ Mesh.create = function(engine, props) {
33505
33242
  return new ThreeMesh(engine, props);
33506
33243
  };
33507
- var version = "2.4.0-beta.0";
33244
+ var version = "2.4.0-beta.2";
33508
33245
  logger.info("THREEJS plugin version: " + version + ".");
33509
33246
 
33510
- export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, BaseRenderComponent, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, COMPRESSED_TEXTURE, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, CalculateLoader, Camera, CameraController, CameraVFXItemLoader, ColorCurve, ColorPropertyPlayableAsset, ColorPropertyTrack, Component, Composition, CompositionComponent, DEFAULT_FONTS, DEFAULT_FPS, Database, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectsObject, EffectsPackage, Ellipse, Engine, EventEmitter, EventSystem, Fake3DAnimationMode, Fake3DComponent, FilterMode, Float16ArrayWrapper, FloatPropertyPlayableAsset, FloatPropertyTrack, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, GraphicsPath, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, Item, KTXTexture, LineSegments, LinearValue, MaskMode, MaskProcessor, MaskRefManager, Material, MaterialDataBlock, MaterialRenderType, MaterialTrack, Mesh, MeshCollider, ObjectBindingTrack, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleSystem, ParticleSystemRenderer, ParticleTrack, PassTextureCache, PathSegments, PluginSystem, PolyStar, Polygon, PostProcessVolume, PropertyTrack, RENDER_PASS_NAME_PREFIX, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTextureFormat, Renderbuffer, Renderer, RendererComponent, RuntimeClip, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0, SEMANTIC_PRE_COLOR_ATTACHMENT_0, SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0, SPRITE_VERTEX_STRIDE, Scene, SemanticMap, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderFactory, ShaderType, ShaderVariant, ShapeComponent, ShapePath, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteLoader, StarType, StaticValue, SubCompositionPlayableAsset, SubCompositionTrack, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeEngine, ThreeMaterial, ThreeSpriteComponent, ThreeTextComponent, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelinePlayable, TrackAsset, TrackSortWrapper, TrackType, Transform, TransformAnimationPlayable, TransformPlayableAsset, TransformTrack, VFXItem, ValueGetter, Vector2Curve, Vector2PropertyPlayableAsset, Vector2PropertyTrack, Vector4Curve, Vector4PropertyPlayableAsset, Vector4PropertyTrack, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, blend, buildLine, calculateTranslation, canvasPool, closePointEps, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, createCopyShader, createGLContext, createKeyFrameMeta, createShape, createValueGetter, curveEps, decimalEqual, defaultPlugins, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, filterItemsByRenderLevel, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getKTXTextureOptions, getKeyFrameMetaByRawValue, getMergedStore, getParticleMeshShader, getPixelRatio, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, glType2VertexFormatType, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAlipayMiniApp, isAndroid, isArray, isCanvas, isFunction, isIOS, isIOSByUA, isMiniProgram, isObject, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, isWechatMiniApp, itemFrag, itemFrame_frag as itemFrameFrag, itemVert, loadAVIFOptional, loadBinary, loadBlob, loadImage, loadMedia, loadVideo, loadWebPOptional, logger, index as math, maxSpriteMeshItemCount, modifyMaxKeyframeShader, nearestPowerOfTwo, noop, normalizeColor, numberToFix, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap$1 as particleOriginTranslateMap, particleUniformTypeMap, particleVert, passRenderLevel, pluginLoaderMap, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };
33247
+ export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, BaseRenderComponent, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, COMPRESSED_TEXTURE, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, CalculateLoader, Camera, CameraController, CameraVFXItemLoader, ColorCurve, ColorPropertyPlayableAsset, ColorPropertyTrack, Component, Composition, CompositionComponent, DEFAULT_FONTS, DEFAULT_FPS, Database, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectsObject, EffectsPackage, Ellipse, Engine, EventEmitter, EventSystem, Fake3DAnimationMode, Fake3DComponent, FilterMode, Float16ArrayWrapper, FloatPropertyPlayableAsset, FloatPropertyTrack, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, GraphicsPath, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, Item, KTXTexture, LineSegments, LinearValue, MaskMode, MaskProcessor, MaskRefManager, Material, MaterialDataBlock, MaterialRenderType, MaterialTrack, Mesh, MeshCollider, ObjectBindingTrack, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleSystem, ParticleSystemRenderer, ParticleTrack, PassTextureCache, PathSegments, PluginSystem, PolyStar, Polygon, PostProcessVolume, PropertyTrack, RENDER_PASS_NAME_PREFIX, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTextureFormat, Renderbuffer, Renderer, RendererComponent, RuntimeClip, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0, SEMANTIC_PRE_COLOR_ATTACHMENT_0, SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0, SPRITE_VERTEX_STRIDE, Scene, SemanticMap, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderFactory, ShaderType, ShaderVariant, ShapeComponent, ShapePath, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteLoader, StarType, StaticValue, SubCompositionPlayableAsset, SubCompositionTrack, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeEngine, ThreeMaterial, ThreeSpriteComponent, ThreeTextComponent, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelinePlayable, TrackAsset, TrackSortWrapper, TrackType, Transform, TransformAnimationPlayable, TransformPlayableAsset, TransformTrack, VFXItem, ValueGetter, Vector2Curve, Vector2PropertyPlayableAsset, Vector2PropertyTrack, Vector4Curve, Vector4PropertyPlayableAsset, Vector4PropertyTrack, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, blend, buildLine, calculateTranslation, canvasPool, closePointEps, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, createCopyShader, createGLContext, createKeyFrameMeta, createShape, createValueGetter, curveEps, decimalEqual, defaultPlugins, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getKTXTextureOptions, getKeyFrameMetaByRawValue, getMergedStore, getParticleMeshShader, getPixelRatio, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, glType2VertexFormatType, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAlipayMiniApp, isAndroid, isArray, isCanvas, isFunction, isIOS, isIOSByUA, isMiniProgram, isObject, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, isWechatMiniApp, itemFrag, itemFrame_frag as itemFrameFrag, itemVert, loadAVIFOptional, loadBinary, loadBlob, loadImage, loadMedia, loadVideo, loadWebPOptional, logger, index as math, maxSpriteMeshItemCount, modifyMaxKeyframeShader, nearestPowerOfTwo, noop, normalizeColor, numberToFix, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap$1 as particleOriginTranslateMap, particleUniformTypeMap, particleVert, passRenderLevel, pluginLoaderMap, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };
33511
33248
  //# sourceMappingURL=index.mjs.map