@galacean/effects-core 2.4.8 → 2.5.0-alpha.1

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 core for the web
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
6
- * Version: v2.4.8
6
+ * Version: v2.5.0-alpha.1
7
7
  */
8
8
 
9
9
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
@@ -341,11 +341,6 @@ function colorToArr$1(hex, normalized) {
341
341
  parseInt(m[2], 16),
342
342
  parseInt(m[3], 16),
343
343
  255
344
- ] || [
345
- 0,
346
- 0,
347
- 0,
348
- 255
349
344
  ];
350
345
  }
351
346
  } else if (_instanceof1(hex, Array)) {
@@ -681,6 +676,17 @@ function asserts(condition, msg) {
681
676
  return /^[^\d.][\w-]*$/.test(fontFamily);
682
677
  }
683
678
 
679
+ /**
680
+ * Simple implementation of the deferred pattern.
681
+ * An object that exposes a promise and functions to resolve and reject it.
682
+ */ var Deferred = function Deferred() {
683
+ var _this = this;
684
+ this.promise = new Promise(function(resolve, reject) {
685
+ _this.resolve = resolve;
686
+ _this.reject = reject;
687
+ });
688
+ };
689
+
684
690
  var prefix = "[Galacean Effects]";
685
691
  var localLogger;
686
692
  function format(message) {
@@ -7626,6 +7632,8 @@ var MaterialRenderType;
7626
7632
  var MaskProcessor = /*#__PURE__*/ function() {
7627
7633
  function MaskProcessor(engine) {
7628
7634
  this.engine = engine;
7635
+ this.alphaMaskEnabled = false;
7636
+ this.maskMode = MaskMode.NONE;
7629
7637
  this.maskable = null;
7630
7638
  this.stencilClearAction = {
7631
7639
  stencilAction: TextureLoadAction.clear
@@ -7636,19 +7644,17 @@ var MaskProcessor = /*#__PURE__*/ function() {
7636
7644
  return 1;
7637
7645
  };
7638
7646
  _proto.getMaskMode = function getMaskMode(data) {
7639
- var maskMode = MaskMode.NONE;
7640
- if (data.mask) {
7641
- var _data_mask = data.mask, _data_mask_mask = _data_mask.mask, mask = _data_mask_mask === void 0 ? false : _data_mask_mask, _data_mask_mode = _data_mask.mode, mode = _data_mask_mode === void 0 ? MaskMode.NONE : _data_mask_mode, ref = _data_mask.ref;
7642
- if (mask) {
7643
- maskMode = MaskMode.MASK;
7644
- } else if (mode === ObscuredMode.OBSCURED || mode === ObscuredMode.REVERSE_OBSCURED) {
7645
- maskMode = mode === ObscuredMode.OBSCURED ? MaskMode.OBSCURED : MaskMode.REVERSE_OBSCURED;
7646
- if (ref) {
7647
- this.maskable = ref;
7648
- }
7647
+ var _data_isMask = data.isMask, isMask = _data_isMask === void 0 ? false : _data_isMask, _data_inverted = data.inverted, inverted = _data_inverted === void 0 ? false : _data_inverted, reference = data.reference, _data_alphaMaskEnabled = data.alphaMaskEnabled, alphaMaskEnabled = _data_alphaMaskEnabled === void 0 ? false : _data_alphaMaskEnabled;
7648
+ this.alphaMaskEnabled = alphaMaskEnabled;
7649
+ if (isMask) {
7650
+ this.maskMode = MaskMode.MASK;
7651
+ } else {
7652
+ this.maskMode = inverted ? MaskMode.REVERSE_OBSCURED : MaskMode.OBSCURED;
7653
+ if (reference) {
7654
+ this.maskable = this.engine.findObject(reference);
7649
7655
  }
7650
7656
  }
7651
- return maskMode;
7657
+ return this.maskMode;
7652
7658
  };
7653
7659
  _proto.drawStencilMask = function drawStencilMask(renderer) {
7654
7660
  if (this.maskable) {
@@ -10208,7 +10214,7 @@ var itemFrame_frag = "#version 100\nprecision highp float;vec4 blendColor(vec4 c
10208
10214
 
10209
10215
  var integrate = "float calculateMovement(float t,vec2 p1,vec2 p2,vec2 p3,vec2 p4){float movement=0.0;float h=(t-p1.x)*0.05;for(int i=0;i<=20;i++){float t=float(i)*h;float nt=binarySearchT(t,p1.x,p2.x,p3.x,p4.x);float y=cubicBezier(nt,p1.y,p2.y,p3.y,p4.y);float weight=(i==0||i==20)? 1.0 :(mod(float(i),2.)!=0.)? 4.0 : 2.0;movement+=weight*y;}movement*=h/3.;return movement;}float integrateFromBezierCurveFrames(float time,float frameStart,float frameCount){int start=int(frameStart);int count=int(frameCount-1.);float ret=0.;for(int i=0;i<ITR_END;i+=2){vec4 k0=lookup_curve(i+start);vec4 k1=lookup_curve(i+1+start);if(i==0&&time<k0.x){return ret;}vec2 p1=vec2(k0.x,k0.y);vec2 p2=vec2(k0.z,k0.w);vec2 p3=vec2(k1.z,k1.w);vec2 p4=vec2(k1.x,k1.y);if(time>=k1.x){ret+=calculateMovement(k1.x,p1,p2,p3,p4);}if(time>=k0.x&&time<k1.x){return ret+calculateMovement(time,p1,p2,p3,p4);}}return ret;}float integrateByTimeLineSeg(float t,vec2 p0,vec2 p1){float t0=p0.x;float t1=p1.x;float y0=p0.y;float y1=p1.y;vec4 tSqr=vec4(t,t,t0,t0);tSqr=tSqr*tSqr;vec4 a=vec4(2.*t,3.,-t0,3.)*tSqr;float t1y0=t1*y0;vec4 b=vec4(y0-y1,t0*y1-t1y0,2.*y0+y1,t1y0);float r=dot(a,b);return r/(t0-t1)*0.16666667;}float integrateLineSeg(float time,vec2 p0,vec2 p1){float h=time-p0.x;float y0=p0.y;return(y0+y0+(p1.y-y0)*h/(p1.x-p0.x))*h/2.;}float integrateFromLineSeg(float time,float frameStart,float frameCount){if(time==0.){return 0.;}int start=int(frameStart);int count=int(frameCount-1.);float ret=0.;for(int i=0;i<ITR_END;i++){if(i>count){return ret;}vec4 ks=lookup_curve(i+start);vec2 k0=ks.xy;vec2 k1=ks.zw;if(time>k0.x&&time<=k1.x){return ret+integrateLineSeg(time,k0,k1);}ret+=integrateLineSeg(k1.x,k0,k1);vec2 k2=lookup_curve(i+start+1).xy;if(time>k1.x&&time<=k2.x){return ret+integrateLineSeg(time,k1,k2);}ret+=integrateLineSeg(k2.x,k1,k2);}return ret;}float integrateByTimeFromLineSeg(float time,float frameStart,float frameCount){if(time==0.){return 0.;}int start=int(frameStart);int count=int(frameCount-1.);float ret=0.;for(int i=0;i<ITR_END;i++){if(i>count){return ret;}vec4 ks=lookup_curve(i+start);vec2 k0=ks.xy;vec2 k1=ks.zw;if(time>k0.x&&time<=k1.x){return ret+integrateByTimeLineSeg(time,k0,k1);}ret+=integrateByTimeLineSeg(k1.x,k0,k1);vec2 k2=lookup_curve(i+start+1).xy;if(time>k1.x&&time<=k2.x){return ret+integrateByTimeLineSeg(time,k1,k2);}ret+=integrateByTimeLineSeg(k2.x,k1,k2);}return ret;}float getIntegrateFromTime0(float t1,vec4 value){float type=value.x;if(type==0.){return value.y*t1;}if(type==1.){vec2 p0=vec2(0.,value.y);vec2 p1=vec2(value.w,value.z);return integrateLineSeg(t1,p0,p1);}if(type==3.){return integrateFromLineSeg(t1,value.y,value.z);}if(type==4.){return mix(value.y,value.z,aSeed)*t1;}if(type==5.){return integrateFromBezierCurveFrames(t1,value.z,value.w);}return 0.;}float getIntegrateByTimeFromTime(float t0,float t1,vec4 value){float type=value.x;if(type==0.){return value.y*(t1*t1-t0*t0)/2.;}else if(type==1.){vec2 p0=vec2(0.,value.y);vec2 p1=vec2(value.w,value.z);return integrateByTimeLineSeg(t1,p0,p1)-integrateByTimeLineSeg(t0,p0,p1);}if(type==3.){return integrateByTimeFromLineSeg(t1,value.y,value.z)-integrateByTimeFromLineSeg(t0,value.y,value.z);}if(type==4.){return mix(value.y,value.z,aSeed)*(t1*t1-t0*t0)/2.;}if(type==5.){return integrateFromBezierCurveFrames(t1,value.z,value.w)-integrateFromBezierCurveFrames(t0,value.z,value.w);}return 0.;}";
10210
10216
 
10211
- var itemVert = "precision highp float;attribute vec2 atlasOffset;attribute vec3 aPos;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform mat4 effects_MatrixVP;uniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nvoid main(){vec4 texParams=_TexParams;vTexCoord=vec2(atlasOffset.xy*_TexOffset.zw+_TexOffset.xy);vColor=_Color;vParams=vec3(texParams.w,texParams.y,texParams.x);if(texParams.z==1.0){vec4 pos=vec4(aPos.xy*_Size,aPos.z,1.0);gl_Position=effects_MatrixVP*effects_ObjectToWorld*pos;}else{mat4 view=effects_MatrixV;vec3 camRight=vec3(view[0][0],view[1][0],view[2][0]);vec3 camUp=vec3(view[0][1],view[1][1],view[2][1]);vec3 worldPosition=vec3(effects_ObjectToWorld*vec4(0.0,0.0,0.0,1.0));vec3 vertexPosition=worldPosition+camRight*aPos.x*_Size.x*_Scale.x+camUp*aPos.y*_Size.y*_Scale.y;gl_Position=effects_MatrixVP*vec4(vertexPosition,1.0);}\n#ifdef ENV_EDITOR\ngl_Position=vec4(gl_Position.xy*uEditorTransform.xy+uEditorTransform.zw*gl_Position.w,gl_Position.zw);\n#endif\n}";
10217
+ var itemVert = "precision highp float;attribute vec2 aUV;attribute vec3 aPos;varying vec2 vTexCoord;varying vec3 vParams;varying vec4 vColor;uniform vec2 _Size;uniform vec3 _Scale;uniform vec4 _Color;uniform vec4 _TexParams;uniform vec4 _TexOffset;uniform mat4 effects_MatrixVP;uniform mat4 effects_ObjectToWorld;uniform mat4 effects_MatrixV;\n#ifdef ENV_EDITOR\nuniform vec4 uEditorTransform;\n#endif\nvoid main(){vec4 texParams=_TexParams;vTexCoord=vec2(aUV.xy*_TexOffset.zw+_TexOffset.xy);vColor=_Color;vParams=vec3(texParams.w,texParams.y,texParams.x);if(texParams.z==1.0){vec4 pos=vec4(aPos.xy*_Size,aPos.z,1.0);gl_Position=effects_MatrixVP*effects_ObjectToWorld*pos;}else{mat4 view=effects_MatrixV;vec3 camRight=vec3(view[0][0],view[1][0],view[2][0]);vec3 camUp=vec3(view[0][1],view[1][1],view[2][1]);vec3 worldPosition=vec3(effects_ObjectToWorld*vec4(0.0,0.0,0.0,1.0));vec3 vertexPosition=worldPosition+camRight*aPos.x*_Size.x*_Scale.x+camUp*aPos.y*_Size.y*_Scale.y;gl_Position=effects_MatrixVP*vec4(vertexPosition,1.0);}\n#ifdef ENV_EDITOR\ngl_Position=vec4(gl_Position.xy*uEditorTransform.xy+uEditorTransform.zw*gl_Position.w,gl_Position.zw);\n#endif\n}";
10212
10218
 
10213
10219
  var itemFrag = "precision highp float;varying vec4 vColor;varying vec2 vTexCoord;varying vec3 vParams;uniform sampler2D _MainTex;vec4 blendColor(vec4 color,vec4 vc,float mode){vec4 ret=color*vc;float alpha=ret.a;if(mode==1.){ret.rgb*=alpha;}else if(mode==2.){ret.rgb*=alpha;ret.a=dot(ret.rgb,vec3(0.33333333));}else if(mode==3.){alpha=color.r*alpha;ret=vec4(vc.rgb*alpha,alpha);}return ret;}void main(){vec4 color=vec4(0.);\n#ifdef TRANSPARENT_VIDEO\nfloat halfX=vTexCoord.x*0.5;vec2 uv_rgb=vec2(halfX,vTexCoord.y);vec2 uv_alpha=vec2(halfX+0.5,vTexCoord.y);vec3 rgb=texture2D(_MainTex,uv_rgb).rgb;float alpha=max(texture2D(_MainTex,uv_alpha).r,1e-5);vec4 texColor=vec4(rgb/alpha,alpha);\n#else\nvec4 texColor=texture2D(_MainTex,vTexCoord.xy);\n#endif\ncolor=blendColor(texColor,vColor,floor(0.5+vParams.y));\n#ifdef ALPHA_CLIP\nif(color.a<0.04){discard;}\n#endif\ncolor.a=clamp(color.a,0.0,1.0);gl_FragColor=color;}";
10214
10220
 
@@ -12444,6 +12450,15 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12444
12450
  return out;
12445
12451
  }
12446
12452
 
12453
+ var singleSplits = [
12454
+ [
12455
+ 0,
12456
+ 0,
12457
+ 1,
12458
+ 1,
12459
+ undefined
12460
+ ]
12461
+ ];
12447
12462
  /**
12448
12463
  * @since 2.1.0
12449
12464
  */ var BaseRenderComponent = /*#__PURE__*/ function(RendererComponent) {
@@ -12451,11 +12466,12 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12451
12466
  function BaseRenderComponent(engine) {
12452
12467
  var _this;
12453
12468
  _this = RendererComponent.call(this, engine) || this;
12454
- _this.color = new Color(1, 1, 1, 1);
12455
12469
  _this.visible = true;
12470
+ _this.splits = singleSplits;
12456
12471
  /**
12457
12472
  * 用于点击测试的碰撞器
12458
12473
  */ _this.meshCollider = new MeshCollider();
12474
+ _this._color = new Color(1, 1, 1, 1);
12459
12475
  // TODO 点击测试后续抽象一个 Collider 组件
12460
12476
  _this.getHitTestParams = function(force) {
12461
12477
  var sizeMatrix = Matrix4.fromScale(_this.transform.size.x, _this.transform.size.y, 1);
@@ -12482,10 +12498,60 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12482
12498
  occlusion: false,
12483
12499
  transparentOcclusion: false,
12484
12500
  side: SideMode.DOUBLE,
12485
- maskMode: MaskMode.NONE,
12486
- mask: 0,
12487
- alphaMask: false
12501
+ mask: 0
12488
12502
  };
12503
+ _this.defaultGeometry = Geometry.create(_this.engine, {
12504
+ attributes: {
12505
+ aPos: {
12506
+ type: glContext.FLOAT,
12507
+ size: 3,
12508
+ data: new Float32Array([
12509
+ -0.5,
12510
+ 0.5,
12511
+ 0,
12512
+ -0.5,
12513
+ -0.5,
12514
+ 0,
12515
+ 0.5,
12516
+ 0.5,
12517
+ 0,
12518
+ 0.5,
12519
+ -0.5,
12520
+ 0
12521
+ ])
12522
+ },
12523
+ aUV: {
12524
+ size: 2,
12525
+ offset: 0,
12526
+ releasable: true,
12527
+ type: glContext.FLOAT,
12528
+ data: new Float32Array([
12529
+ 0,
12530
+ 1,
12531
+ 0,
12532
+ 0,
12533
+ 1,
12534
+ 1,
12535
+ 1,
12536
+ 0
12537
+ ])
12538
+ }
12539
+ },
12540
+ indices: {
12541
+ data: new Uint16Array([
12542
+ 0,
12543
+ 1,
12544
+ 2,
12545
+ 2,
12546
+ 1,
12547
+ 3
12548
+ ]),
12549
+ releasable: true
12550
+ },
12551
+ mode: glContext.TRIANGLES,
12552
+ drawCount: 6
12553
+ });
12554
+ _this.geometry = _this.defaultGeometry;
12489
12555
  var material = Material.create(_this.engine, {
12490
12556
  shader: {
12491
12557
  fragment: itemFrag,
@@ -12494,12 +12560,7 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12494
12560
  }
12495
12561
  });
12496
12562
  _this.material = material;
12497
- _this.material.setColor("_Color", new Color().setFromArray([
12498
- 1,
12499
- 1,
12500
- 1,
12501
- 1
12502
- ]));
12563
+ _this.material.setColor("_Color", new Color(1, 1, 1, 1));
12503
12564
  _this.maskManager = new MaskProcessor(engine);
12504
12565
  return _this;
12505
12566
  }
@@ -12519,11 +12580,11 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12519
12580
  };
12520
12581
  _proto.setColor = function setColor(color) {
12521
12582
  if (_instanceof1(color, Color)) {
12522
- this.color.copyFrom(color);
12583
+ this._color.copyFrom(color);
12523
12584
  } else {
12524
- this.color.setFromArray(color);
12585
+ this._color.setFromArray(color);
12525
12586
  }
12526
- this.material.setColor("_Color", this.color);
12587
+ this.material.setColor("_Color", this._color);
12527
12588
  };
12528
12589
  _proto.setTexture = function setTexture(input) {
12529
12590
  var _this = this;
@@ -12586,103 +12647,149 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12586
12647
  var boundingBox = this.meshCollider.getBoundingBox();
12587
12648
  return boundingBox;
12588
12649
  };
12589
- _proto.getItemGeometryData = function getItemGeometryData(geometry) {
12590
- var renderer = this.renderer;
12650
+ _proto.getItemGeometryData = function getItemGeometryData(renderer) {
12651
+ var _this = this, splits = _this.splits, textureSheetAnimation = _this.textureSheetAnimation;
12652
+ var sx = 1, sy = 1;
12653
+ var geometry = this.defaultGeometry;
12591
12654
  if (renderer.shape) {
12592
12655
  var _renderer_shape = renderer.shape, _renderer_shape_index = _renderer_shape.index, index = _renderer_shape_index === void 0 ? [] : _renderer_shape_index, _renderer_shape_aPoint = _renderer_shape.aPoint, aPoint = _renderer_shape_aPoint === void 0 ? [] : _renderer_shape_aPoint;
12593
12656
  var point = new Float32Array(aPoint);
12594
12657
  var position = [];
12595
- var atlasOffset = [];
12658
+ var aUV = [];
12596
12659
  for(var i = 0; i < point.length; i += 6){
12597
- atlasOffset.push(aPoint[i + 2], aPoint[i + 3]);
12660
+ point[i] *= sx;
12661
+ point[i + 1] *= sy;
12662
+ aUV.push(aPoint[i + 2], aPoint[i + 3]);
12598
12663
  position.push(point[i], point[i + 1], 0.0);
12599
12664
  }
12600
12665
  geometry.setAttributeData("aPos", new Float32Array(position));
12601
12666
  return {
12602
12667
  index: index,
12603
- atlasOffset: atlasOffset
12668
+ aUV: aUV
12604
12669
  };
12605
- } else {
12606
- geometry.setAttributeData("aPos", new Float32Array([
12607
- -0.5,
12608
- 0.5,
12670
+ }
12671
+ var originData = [
12672
+ -.5,
12673
+ .5,
12674
+ -.5,
12675
+ -.5,
12676
+ .5,
12677
+ .5,
12678
+ .5,
12679
+ -.5
12680
+ ];
12681
+ var aUV1 = [];
12682
+ var index1 = [];
12683
+ var position1 = [];
12684
+ if (splits.length === 1) {
12685
+ var split = textureSheetAnimation ? [
12609
12686
  0,
12610
- -0.5,
12611
- -0.5,
12612
12687
  0,
12613
- 0.5,
12614
- 0.5,
12688
+ 1,
12689
+ 1,
12690
+ splits[0][4]
12691
+ ] : splits[0];
12692
+ var texOffset = split[4] ? [
12615
12693
  0,
12616
- 0.5,
12617
- -0.5,
12694
+ 0,
12695
+ 1,
12696
+ 0,
12697
+ 0,
12698
+ 1,
12699
+ 1,
12700
+ 1
12701
+ ] : [
12702
+ 0,
12703
+ 1,
12704
+ 0,
12705
+ 0,
12706
+ 1,
12707
+ 1,
12708
+ 1,
12618
12709
  0
12619
- ]));
12620
- return {
12621
- index: [
12622
- 0,
12623
- 1,
12624
- 2,
12625
- 2,
12626
- 1,
12627
- 3
12628
- ],
12629
- atlasOffset: [
12630
- 0,
12631
- 1,
12632
- 0,
12633
- 0,
12634
- 1,
12635
- 1,
12636
- 1,
12637
- 0
12638
- ]
12639
- };
12640
- }
12641
- };
12642
- _proto.createGeometry = function createGeometry() {
12643
- var geometry = Geometry.create(this.engine, {
12644
- attributes: {
12645
- aPos: {
12646
- type: glContext.FLOAT,
12647
- size: 3,
12648
- data: new Float32Array([
12649
- -0.5,
12650
- 0.5,
12710
+ ];
12711
+ var tox = split[0];
12712
+ var toy = split[1];
12713
+ var tsx = split[4] ? split[3] : split[2];
12714
+ var tsy = split[4] ? split[2] : split[3];
12715
+ aUV1.push(texOffset[0] * tsx + tox, texOffset[1] * tsy + toy, texOffset[2] * tsx + tox, texOffset[3] * tsy + toy, texOffset[4] * tsx + tox, texOffset[5] * tsy + toy, texOffset[6] * tsx + tox, texOffset[7] * tsy + toy);
12716
+ position1.push(originData[0], originData[1], 0.0, originData[2], originData[3], 0.0, originData[4], originData[5], 0.0, originData[6], originData[7], 0.0);
12717
+ index1.push(0, 1, 2, 2, 1, 3);
12718
+ } else {
12719
+ // TODO: 原有打包纹理拆分逻辑,待移除
12720
+ //-------------------------------------------------------------------------
12721
+ var col = 2;
12722
+ var row = 2;
12723
+ for(var x = 0; x < col; x++){
12724
+ for(var y = 0; y < row; y++){
12725
+ var base = (y * 2 + x) * 4;
12726
+ // @ts-expect-error
12727
+ var split1 = textureSheetAnimation ? [
12651
12728
  0,
12652
- -0.5,
12653
- -0.5,
12654
12729
  0,
12655
- 0.5,
12656
- 0.5,
12730
+ 1,
12731
+ 1,
12732
+ splits[0][4]
12733
+ ] : splits[y * 2 + x];
12734
+ var texOffset1 = split1[4] ? [
12657
12735
  0,
12658
- 0.5,
12659
- -0.5,
12736
+ 0,
12737
+ 1,
12738
+ 0,
12739
+ 0,
12740
+ 1,
12741
+ 1,
12742
+ 1
12743
+ ] : [
12744
+ 0,
12745
+ 1,
12746
+ 0,
12747
+ 0,
12748
+ 1,
12749
+ 1,
12750
+ 1,
12660
12751
  0
12661
- ])
12662
- },
12663
- atlasOffset: {
12664
- size: 2,
12665
- offset: 0,
12666
- releasable: true,
12667
- type: glContext.FLOAT,
12668
- data: new Float32Array(0)
12752
+ ];
12753
+ var dw = ((x + x + 1) / col - 1) / 2;
12754
+ var dh = ((y + y + 1) / row - 1) / 2;
12755
+ var tox1 = split1[0];
12756
+ var toy1 = split1[1];
12757
+ var tsx1 = split1[4] ? split1[3] : split1[2];
12758
+ var tsy1 = split1[4] ? split1[2] : split1[3];
12759
+ var origin = [
12760
+ originData[0] / col + dw,
12761
+ originData[1] / row + dh,
12762
+ originData[2] / col + dw,
12763
+ originData[3] / row + dh,
12764
+ originData[4] / col + dw,
12765
+ originData[5] / row + dh,
12766
+ originData[6] / col + dw,
12767
+ originData[7] / row + dh
12768
+ ];
12769
+ aUV1.push(texOffset1[0] * tsx1 + tox1, texOffset1[1] * tsy1 + toy1, texOffset1[2] * tsx1 + tox1, texOffset1[3] * tsy1 + toy1, texOffset1[4] * tsx1 + tox1, texOffset1[5] * tsy1 + toy1, texOffset1[6] * tsx1 + tox1, texOffset1[7] * tsy1 + toy1);
12770
+ position1.push(origin[0] * sx, origin[1] * sy, 0.0, origin[2] * sx, origin[3] * sy, 0.0, origin[4] * sx, origin[5] * sy, 0.0, origin[6] * sx, origin[7] * sy, 0.0);
12771
+ index1.push(base, 1 + base, 2 + base, 2 + base, 1 + base, 3 + base);
12669
12772
  }
12670
- },
12671
- indices: {
12672
- data: new Uint16Array(0),
12673
- releasable: true
12674
- },
12675
- mode: glContext.TRIANGLES
12676
- });
12677
- var geoData = this.getItemGeometryData(geometry);
12678
- var index = geoData.index, atlasOffset = geoData.atlasOffset;
12773
+ }
12774
+ }
12775
+ geometry.setAttributeData("aPos", new Float32Array(position1));
12776
+ return {
12777
+ index: index1,
12778
+ aUV: aUV1
12779
+ };
12780
+ };
12781
+ _proto.configureDefaultGeometry = function configureDefaultGeometry(renderer) {
12782
+ var geoData = this.getItemGeometryData(renderer);
12783
+ var index = geoData.index, aUV = geoData.aUV;
12784
+ var geometry = this.defaultGeometry;
12679
12785
  geometry.setIndexData(new Uint16Array(index));
12680
- geometry.setAttributeData("atlasOffset", new Float32Array(atlasOffset));
12786
+ geometry.setAttributeData("aUV", new Float32Array(aUV));
12681
12787
  geometry.setDrawCount(index.length);
12682
12788
  return geometry;
12683
12789
  };
12684
12790
  _proto.configureMaterial = function configureMaterial(renderer) {
12685
- var side = renderer.side, occlusion = renderer.occlusion, blendMode = renderer.blending, maskMode = renderer.maskMode, mask = renderer.mask, texture = renderer.texture;
12791
+ var side = renderer.side, occlusion = renderer.occlusion, blendMode = renderer.blending, mask = renderer.mask, texture = renderer.texture;
12792
+ var maskMode = this.maskManager.maskMode;
12686
12793
  var material = this.material;
12687
12794
  material.blending = true;
12688
12795
  material.depthTest = true;
@@ -12696,17 +12803,16 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12696
12803
  setMaskMode(material, maskMode);
12697
12804
  setSideMode(material, side);
12698
12805
  material.shader.shaderData.properties = '_MainTex("_MainTex",2D) = "white" {}';
12699
- material.setColor("_Color", new Color(0, 0, 0, 1));
12700
12806
  material.setVector4("_TexOffset", new Vector4(0, 0, 1, 1));
12701
12807
  material.setTexture("_MainTex", texture);
12702
- this.preMultiAlpha = getPreMultiAlpha(blendMode);
12808
+ var preMultiAlpha = getPreMultiAlpha(blendMode);
12703
12809
  var texParams = new Vector4();
12704
12810
  texParams.x = renderer.occlusion ? +renderer.transparentOcclusion : 1;
12705
- texParams.y = +this.preMultiAlpha;
12811
+ texParams.y = preMultiAlpha;
12706
12812
  texParams.z = renderer.renderMode;
12707
- texParams.w = renderer.maskMode;
12813
+ texParams.w = maskMode;
12708
12814
  material.setVector4("_TexParams", texParams);
12709
- if (texParams.x === 0 || renderer.alphaMask) {
12815
+ if (texParams.x === 0 || this.maskManager.alphaMaskEnabled) {
12710
12816
  material.enableMacro("ALPHA_CLIP");
12711
12817
  } else {
12712
12818
  material.disableMacro("ALPHA_CLIP");
@@ -12728,39 +12834,63 @@ function getBezier2DValue(out, t, p0, p1, cpx0, cpy0, cpx1, cpy1) {
12728
12834
  };
12729
12835
  _proto.fromData = function fromData(data) {
12730
12836
  RendererComponent.prototype.fromData.call(this, data);
12731
- var _data_renderer;
12732
- var renderer = (_data_renderer = data.renderer) != null ? _data_renderer : {};
12733
- var maskProps = data.mask;
12734
- if (maskProps && maskProps.ref) {
12735
- maskProps.ref = this.engine.findObject(maskProps.ref);
12837
+ var baseRenderComponentData = data;
12838
+ var _baseRenderComponentData_renderer;
12839
+ var renderer = (_baseRenderComponentData_renderer = baseRenderComponentData.renderer) != null ? _baseRenderComponentData_renderer : {};
12840
+ var splits = baseRenderComponentData.splits;
12841
+ var textureSheetAnimation = baseRenderComponentData.textureSheetAnimation;
12842
+ var maskOptions = baseRenderComponentData.mask;
12843
+ if (maskOptions) {
12844
+ this.maskManager.getMaskMode(maskOptions);
12736
12845
  }
12737
- var maskMode = this.maskManager.getMaskMode(data);
12738
12846
  // TODO 新蒙板上线后移除
12739
12847
  //-------------------------------------------------------------------------
12740
12848
  var shapeData = renderer.shape;
12741
- //@ts-expect-error
12742
- var split = data.splits && !data.textureSheetAnimation ? data.splits[0] : undefined;
12849
+ var split = splits && !textureSheetAnimation ? splits[0] : undefined;
12743
12850
  var shapeGeometry = undefined;
12744
12851
  if (shapeData !== undefined && shapeData !== null && !("aPoint" in shapeData && "index" in shapeData)) {
12745
12852
  shapeGeometry = getGeometryByShape(shapeData, split);
12746
12853
  }
12747
- var _renderer_renderMode, _renderer_blending, _renderer_side, _renderer_alphaMask;
12748
12854
  //-------------------------------------------------------------------------
12855
+ this.splits = splits || singleSplits;
12856
+ this.textureSheetAnimation = textureSheetAnimation;
12857
+ var _renderer_renderMode, _renderer_blending, _renderer_side;
12749
12858
  this.renderer = {
12750
12859
  renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.MESH,
12751
12860
  blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending : BlendingMode.ALPHA,
12752
12861
  texture: renderer.texture ? this.engine.findObject(renderer.texture) : this.engine.emptyTexture,
12753
12862
  occlusion: !!renderer.occlusion,
12754
- transparentOcclusion: !!renderer.transparentOcclusion || maskMode === MaskMode.MASK,
12863
+ transparentOcclusion: !!renderer.transparentOcclusion || this.maskManager.maskMode === MaskMode.MASK,
12755
12864
  side: (_renderer_side = renderer.side) != null ? _renderer_side : SideMode.DOUBLE,
12756
12865
  mask: this.maskManager.getRefValue(),
12757
- shape: shapeGeometry,
12758
- maskMode: maskMode,
12759
- //@ts-expect-error TODO 新蒙版兼容老数据需要增加纹理透明度蒙版是否开启参数
12760
- alphaMask: (_renderer_alphaMask = renderer.alphaMask) != null ? _renderer_alphaMask : false
12866
+ shape: shapeGeometry
12761
12867
  };
12762
12868
  this.configureMaterial(this.renderer);
12869
+ if (baseRenderComponentData.geometry) {
12870
+ this.geometry = this.engine.findObject(baseRenderComponentData.geometry);
12871
+ } else {
12872
+ this.geometry = this.defaultGeometry;
12873
+ this.configureDefaultGeometry(this.renderer);
12874
+ }
12763
12875
  };
12876
+ _create_class(BaseRenderComponent, [
12877
+ {
12878
+ key: "color",
12879
+ get: /**
12880
+ * 获取当前图层的颜色
12881
+ * @since 2.5.0
12882
+ */ function get() {
12883
+ return this._color;
12884
+ },
12885
+ set: /**
12886
+ * 设置当前图层的颜色
12887
+ * @since 2.5.0
12888
+ */ function set(value) {
12889
+ this._color = value;
12890
+ this.material.setColor("_Color", this._color);
12891
+ }
12892
+ }
12893
+ ]);
12764
12894
  return BaseRenderComponent;
12765
12895
  }(RendererComponent);
12766
12896
 
@@ -12775,37 +12905,8 @@ var ShapeComponent = /*#__PURE__*/ function(BaseRenderComponent) {
12775
12905
  _this.graphicsPath = new GraphicsPath();
12776
12906
  _this.vert = "\nprecision highp float;\n\nattribute vec3 aPos;//x y\n\nuniform mat4 effects_MatrixVP;\nuniform mat4 effects_MatrixInvV;\nuniform mat4 effects_ObjectToWorld;\n\nvoid main() {\n vec4 pos = vec4(aPos.xyz, 1.0);\n gl_Position = effects_MatrixVP * effects_ObjectToWorld * pos;\n}\n";
12777
12907
  _this.frag = "\nprecision highp float;\n\nuniform vec4 _Color;\n\nvoid main() {\n vec4 color = _Color;\n color.rgb *= color.a;\n gl_FragColor = color;\n}\n";
12778
- // Create Geometry
12908
+ // Add Geometry SubMesh
12779
12909
  //-------------------------------------------------------------------------
12780
- _this.geometry = Geometry.create(engine, {
12781
- attributes: {
12782
- aPos: {
12783
- type: glContext.FLOAT,
12784
- size: 3,
12785
- data: new Float32Array([
12786
- -0.5,
12787
- 0.5,
12788
- 0,
12789
- -0.5,
12790
- -0.5,
12791
- 0,
12792
- 0.5,
12793
- 0.5,
12794
- 0,
12795
- 0.5,
12796
- -0.5,
12797
- 0
12798
- ])
12799
- },
12800
- aUV: {
12801
- type: glContext.FLOAT,
12802
- size: 2,
12803
- data: new Float32Array()
12804
- }
12805
- },
12806
- mode: glContext.TRIANGLES,
12807
- drawCount: 4
12808
- });
12809
12910
  _this.geometry.subMeshes.push({
12810
12911
  offset: 0,
12811
12912
  indexCount: 0,
@@ -13105,17 +13206,15 @@ var ShapeComponent = /*#__PURE__*/ function(BaseRenderComponent) {
13105
13206
  break;
13106
13207
  }
13107
13208
  }
13108
- var maskProps = data.mask;
13109
- if (maskProps && maskProps.ref) {
13110
- maskProps.ref = this.engine.findObject(maskProps.ref);
13209
+ if (data.mask) {
13210
+ this.maskManager.getMaskMode(data.mask);
13111
13211
  }
13112
- var maskMode = this.maskManager.getMaskMode(data);
13113
13212
  var maskRef = this.maskManager.getRefValue();
13114
13213
  this.material.stencilRef = maskRef !== undefined ? [
13115
13214
  maskRef,
13116
13215
  maskRef
13117
13216
  ] : undefined;
13118
- setMaskMode(this.material, maskMode);
13217
+ setMaskMode(this.material, this.maskManager.maskMode);
13119
13218
  };
13120
13219
  _create_class(ShapeComponent, [
13121
13220
  {
@@ -19590,11 +19689,7 @@ var ParticleSystem = /*#__PURE__*/ function(Component) {
19590
19689
  var maskMode = MaskMode.NONE;
19591
19690
  var maskRef = 0;
19592
19691
  if (data.mask) {
19593
- var maskProps = data.mask;
19594
- if (maskProps && maskProps.ref) {
19595
- maskProps.ref = this.engine.findObject(maskProps.ref);
19596
- }
19597
- maskMode = this.maskManager.getMaskMode(data);
19692
+ maskMode = this.maskManager.getMaskMode(data.mask);
19598
19693
  maskRef = this.maskManager.getRefValue();
19599
19694
  }
19600
19695
  return {
@@ -20135,7 +20230,7 @@ var RuntimeClip = /*#__PURE__*/ function() {
20135
20230
  this.playable.play();
20136
20231
  }
20137
20232
  this.parentMixer.setClipWeight(this.playable, weight);
20138
- var clipTime = clip.toLocalTime(localTime);
20233
+ var clipTime = parseFloat(clip.toLocalTime(localTime).toFixed(3));
20139
20234
  this.playable.setTime(clipTime);
20140
20235
  // 判断动画是否结束
20141
20236
  if (ended) {
@@ -21324,12 +21419,11 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21324
21419
  * 前进合成到指定时间
21325
21420
  * @param time - 相对0时刻的时间
21326
21421
  */ _proto.forwardTime = function forwardTime(time) {
21327
- var deltaTime = time * 1000 - this.time * 1000;
21422
+ var deltaTime = time * 1000 - this.rootComposition.time * 1000;
21328
21423
  var reverse = deltaTime < 0;
21329
21424
  var step = 15;
21330
21425
  var t = Math.abs(deltaTime);
21331
21426
  var ss = reverse ? -step : step;
21332
- // FIXME Update 中可能会修改合成时间,这边需要优化更新逻辑
21333
21427
  for(t; t > step; t -= step){
21334
21428
  this.update(ss);
21335
21429
  }
@@ -21369,14 +21463,13 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21369
21463
  this.callAwake(this.rootItem);
21370
21464
  this.rootItem.beginPlay();
21371
21465
  }
21372
- var previousCompositionTime = this.time;
21373
- this.updateCompositionTime(deltaTime * this.speed / 1000);
21374
- var deltaTimeInMs = (this.time - previousCompositionTime) * 1000;
21466
+ var dt = parseFloat(this.getUpdateTime(deltaTime * this.speed).toFixed(0));
21467
+ this.updateRootComposition(dt / 1000);
21375
21468
  this.updateVideo();
21376
21469
  // 更新 model-tree-plugin
21377
- this.updatePluginLoaders(deltaTimeInMs);
21378
- this.sceneTicking.update.tick(deltaTimeInMs);
21379
- this.sceneTicking.lateUpdate.tick(deltaTimeInMs);
21470
+ this.updatePluginLoaders(deltaTime);
21471
+ this.sceneTicking.update.tick(dt);
21472
+ this.sceneTicking.lateUpdate.tick(dt);
21380
21473
  this.updateCamera();
21381
21474
  this.prepareRender();
21382
21475
  if (this.isEnded && !this.isEndCalled) {
@@ -21392,6 +21485,14 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21392
21485
  _proto.shouldDispose = function shouldDispose() {
21393
21486
  return this.isEnded && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
21394
21487
  };
21488
+ _proto.getUpdateTime = function getUpdateTime(t) {
21489
+ var startTimeInMs = this.startTime * 1000;
21490
+ var now = this.rootComposition.time * 1000;
21491
+ if (t < 0 && now + t < startTimeInMs) {
21492
+ return startTimeInMs - now;
21493
+ }
21494
+ return t;
21495
+ };
21395
21496
  _proto.callAwake = function callAwake(item) {
21396
21497
  for(var _iterator = _create_for_of_iterator_helper_loose(item.components), _step; !(_step = _iterator()).done;){
21397
21498
  var component = _step.value;
@@ -21436,18 +21537,14 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21436
21537
  };
21437
21538
  /**
21438
21539
  * 更新主合成组件
21439
- */ _proto.updateCompositionTime = function updateCompositionTime(deltaTime) {
21540
+ */ _proto.updateRootComposition = function updateRootComposition(deltaTime) {
21440
21541
  if (this.rootComposition.state === PlayState.Paused || !this.rootComposition.isActiveAndEnabled) {
21441
21542
  return;
21442
21543
  }
21443
- // 相对于合成开始时间的时间
21444
- var localTime = this.time + deltaTime - this.startTime;
21445
- if (deltaTime < 0 && localTime < 0) {
21446
- localTime = 0;
21447
- }
21544
+ var localTime = parseFloat((this.time + deltaTime - this.rootItem.start).toFixed(3));
21545
+ var isEnded = false;
21448
21546
  var duration = this.rootItem.duration;
21449
21547
  var endBehavior = this.rootItem.endBehavior;
21450
- var isEnded = false;
21451
21548
  if (localTime - duration > 0.001) {
21452
21549
  isEnded = true;
21453
21550
  switch(endBehavior){
@@ -21472,7 +21569,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21472
21569
  }
21473
21570
  }
21474
21571
  }
21475
- this.rootComposition.time = localTime + this.startTime;
21572
+ this.rootComposition.time = localTime;
21476
21573
  // end state changed, handle onEnd flags
21477
21574
  if (this.isEnded !== isEnded) {
21478
21575
  if (isEnded) {
@@ -22628,15 +22725,6 @@ var ColorPlayable = /*#__PURE__*/ function(Playable) {
22628
22725
  return ColorPlayable;
22629
22726
  }(Playable);
22630
22727
 
22631
- var singleSplits = [
22632
- [
22633
- 0,
22634
- 0,
22635
- 1,
22636
- 1,
22637
- undefined
22638
- ]
22639
- ];
22640
22728
  var seed$2 = 0;
22641
22729
  var SpriteColorPlayableAsset = /*#__PURE__*/ function(PlayableAsset) {
22642
22730
  _inherits(SpriteColorPlayableAsset, PlayableAsset);
@@ -22662,10 +22750,8 @@ var SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
22662
22750
  function SpriteComponent(engine, props) {
22663
22751
  var _this;
22664
22752
  _this = BaseRenderComponent.call(this, engine) || this;
22665
- _this.splits = singleSplits;
22666
22753
  _this.frameAnimationLoop = false;
22667
22754
  _this.name = "MSprite" + seed$2++;
22668
- _this.geometry = _this.createGeometry();
22669
22755
  if (props) {
22670
22756
  _this.fromData(props);
22671
22757
  }
@@ -22755,111 +22841,10 @@ var SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
22755
22841
  source.video.load();
22756
22842
  }
22757
22843
  };
22758
- _proto.getItemGeometryData = function getItemGeometryData(geometry) {
22759
- var _this = this, splits = _this.splits, textureSheetAnimation = _this.textureSheetAnimation;
22760
- var sx = 1, sy = 1;
22761
- var renderer = this.renderer;
22762
- if (renderer.shape) {
22763
- var _renderer_shape = renderer.shape, _renderer_shape_index = _renderer_shape.index, index = _renderer_shape_index === void 0 ? [] : _renderer_shape_index, _renderer_shape_aPoint = _renderer_shape.aPoint, aPoint = _renderer_shape_aPoint === void 0 ? [] : _renderer_shape_aPoint;
22764
- var point = new Float32Array(aPoint);
22765
- var position = [];
22766
- var atlasOffset = [];
22767
- for(var i = 0; i < point.length; i += 6){
22768
- point[i] *= sx;
22769
- point[i + 1] *= sy;
22770
- atlasOffset.push(aPoint[i + 2], aPoint[i + 3]);
22771
- position.push(point[i], point[i + 1], 0.0);
22772
- }
22773
- geometry.setAttributeData("aPos", new Float32Array(position));
22774
- return {
22775
- index: index,
22776
- atlasOffset: atlasOffset
22777
- };
22778
- }
22779
- var originData = [
22780
- -.5,
22781
- .5,
22782
- -.5,
22783
- -.5,
22784
- .5,
22785
- .5,
22786
- .5,
22787
- -.5
22788
- ];
22789
- var atlasOffset1 = [];
22790
- var index1 = [];
22791
- var col = 2;
22792
- var row = 2;
22793
- if (splits.length === 1) {
22794
- col = 1;
22795
- row = 1;
22796
- }
22797
- var position1 = [];
22798
- for(var x = 0; x < col; x++){
22799
- for(var y = 0; y < row; y++){
22800
- var base = (y * 2 + x) * 4;
22801
- // @ts-expect-error
22802
- var split = textureSheetAnimation ? [
22803
- 0,
22804
- 0,
22805
- 1,
22806
- 1,
22807
- splits[0][4]
22808
- ] : splits[y * 2 + x];
22809
- var texOffset = split[4] ? [
22810
- 0,
22811
- 0,
22812
- 1,
22813
- 0,
22814
- 0,
22815
- 1,
22816
- 1,
22817
- 1
22818
- ] : [
22819
- 0,
22820
- 1,
22821
- 0,
22822
- 0,
22823
- 1,
22824
- 1,
22825
- 1,
22826
- 0
22827
- ];
22828
- var dw = ((x + x + 1) / col - 1) / 2;
22829
- var dh = ((y + y + 1) / row - 1) / 2;
22830
- var tox = split[0];
22831
- var toy = split[1];
22832
- var tsx = split[4] ? split[3] : split[2];
22833
- var tsy = split[4] ? split[2] : split[3];
22834
- var origin = [
22835
- originData[0] / col + dw,
22836
- originData[1] / row + dh,
22837
- originData[2] / col + dw,
22838
- originData[3] / row + dh,
22839
- originData[4] / col + dw,
22840
- originData[5] / row + dh,
22841
- originData[6] / col + dw,
22842
- originData[7] / row + dh
22843
- ];
22844
- atlasOffset1.push(texOffset[0] * tsx + tox, texOffset[1] * tsy + toy, texOffset[2] * tsx + tox, texOffset[3] * tsy + toy, texOffset[4] * tsx + tox, texOffset[5] * tsy + toy, texOffset[6] * tsx + tox, texOffset[7] * tsy + toy);
22845
- position1.push(origin[0] * sx, origin[1] * sy, 0.0, origin[2] * sx, origin[3] * sy, 0.0, origin[4] * sx, origin[5] * sy, 0.0, origin[6] * sx, origin[7] * sy, 0.0);
22846
- index1.push(base, 1 + base, 2 + base, 2 + base, 1 + base, 3 + base);
22847
- }
22848
- }
22849
- geometry.setAttributeData("aPos", new Float32Array(position1));
22850
- return {
22851
- index: index1,
22852
- atlasOffset: atlasOffset1
22853
- };
22854
- };
22855
22844
  _proto.fromData = function fromData(data) {
22856
22845
  BaseRenderComponent.prototype.fromData.call(this, data);
22857
22846
  var interaction = data.interaction, options = data.options;
22858
22847
  this.interaction = interaction;
22859
- this.splits = data.splits || singleSplits;
22860
- this.textureSheetAnimation = data.textureSheetAnimation;
22861
- var geometry = this.createGeometry();
22862
- this.geometry = geometry;
22863
22848
  var startColor = options.startColor || [
22864
22849
  1,
22865
22850
  1,
@@ -26138,7 +26123,6 @@ var TextComponent = /*#__PURE__*/ function(BaseRenderComponent) {
26138
26123
  _this.SCALE_FACTOR = 0.1;
26139
26124
  _this.ALPHA_FIX_VALUE = 1 / 255;
26140
26125
  _this.name = "MText" + seed$1++;
26141
- _this.geometry = _this.createGeometry();
26142
26126
  if (props) {
26143
26127
  _this.fromData(props);
26144
26128
  }
@@ -27019,11 +27003,6 @@ function colorToArr(hex, normalized) {
27019
27003
  parseInt(m[2], 16),
27020
27004
  parseInt(m[3], 16),
27021
27005
  255
27022
- ] || [
27023
- 0,
27024
- 0,
27025
- 0,
27026
- 255
27027
27006
  ];
27028
27007
  }
27029
27008
  } else if (_instanceof1(hex, Array)) {
@@ -27563,13 +27542,13 @@ function processMask(renderContent) {
27563
27542
  }
27564
27543
  if (maskMode === MaskMode.MASK) {
27565
27544
  renderContent.mask = {
27566
- mask: true
27545
+ isMask: true
27567
27546
  };
27568
27547
  currentMaskComponent = renderContent.id;
27569
27548
  } else if (maskMode === ObscuredMode.OBSCURED || maskMode === ObscuredMode.REVERSE_OBSCURED) {
27570
27549
  renderContent.mask = {
27571
- mode: maskMode,
27572
- ref: {
27550
+ inverted: maskMode === ObscuredMode.REVERSE_OBSCURED ? true : false,
27551
+ reference: {
27573
27552
  "id": currentMaskComponent
27574
27553
  }
27575
27554
  };
@@ -28393,6 +28372,7 @@ function getStandardSpriteContent(sprite, transform) {
28393
28372
  return ret;
28394
28373
  }
28395
28374
 
28375
+ var version$1 = "2.5.0-alpha.1";
28396
28376
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
28397
28377
  var standardVersion = /^(\d+)\.(\d+)$/;
28398
28378
  var reverseParticle = false;
@@ -28400,6 +28380,11 @@ function getStandardJSON(json) {
28400
28380
  if (!json || typeof json !== "object") {
28401
28381
  throw new Error("Invalid input: Expected a JSON object.");
28402
28382
  }
28383
+ // 如果 JSON 中的 runtime 版本高于当前运行时版本,则发出警告
28384
+ if (checkRuntimeVersion(json)) {
28385
+ var _json_playerVersion;
28386
+ console.warn("The JSON need higher than " + ((_json_playerVersion = json.playerVersion) == null ? void 0 : _json_playerVersion.web) + " runtime version(current: " + version$1 + "). Some features may not work as expected.");
28387
+ }
28403
28388
  // 修正老版本数据中,meshItem 以及 lightItem 结束行为错误问题
28404
28389
  version22Migration(json);
28405
28390
  if (v0.test(json.version)) {
@@ -28715,6 +28700,21 @@ function getStandardItem(item, opt) {
28715
28700
  return {};
28716
28701
  }
28717
28702
  }
28703
+ /**
28704
+ * 检查 json.playerVersion.web 的版本号是否低于当前 runtime 的版本
28705
+ */ function checkRuntimeVersion(json) {
28706
+ var _ref = json.playerVersion || {}, _ref_web = _ref.web, web = _ref_web === void 0 ? "" : _ref_web;
28707
+ if (web) {
28708
+ var _v0_exec;
28709
+ var jsonVersionMatch = (_v0_exec = v0.exec(web)) != null ? _v0_exec : [];
28710
+ var _v0_exec1;
28711
+ var runtimeVersionMatch = (_v0_exec1 = v0.exec(version$1)) != null ? _v0_exec1 : [];
28712
+ var major = jsonVersionMatch[1], minor = jsonVersionMatch[2];
28713
+ var currentMajor = runtimeVersionMatch[1], currentMinor = runtimeVersionMatch[2];
28714
+ return Number(currentMajor) < Number(major) || Number(currentMajor) === Number(major) && Number(currentMinor) < Number(minor);
28715
+ }
28716
+ return false;
28717
+ }
28718
28718
 
28719
28719
  var _obj;
28720
28720
  /**
@@ -31622,8 +31622,8 @@ registerPlugin("sprite", SpriteLoader, VFXItem);
31622
31622
  registerPlugin("particle", ParticleLoader, VFXItem);
31623
31623
  registerPlugin("cal", CalculateLoader, VFXItem);
31624
31624
  registerPlugin("interact", InteractLoader, VFXItem);
31625
- var version = "2.4.8";
31625
+ var version = "2.5.0-alpha.1";
31626
31626
  logger.info("Core version: " + version + ".");
31627
31627
 
31628
- export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, BaseRenderComponent, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, COMPRESSED_TEXTURE, 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, 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, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, 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, isOpenHarmony, 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, sortByOrder, index$1 as spec, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };
31628
+ export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, BaseRenderComponent, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, COMPRESSED_TEXTURE, 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, Deferred, 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, 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, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, 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, isOpenHarmony, 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, sortByOrder, index$1 as spec, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };
31629
31629
  //# sourceMappingURL=index.mjs.map