@galacean/effects-core 2.5.0-alpha.0 → 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.
@@ -2,7 +2,7 @@ import { Color } from '@galacean/effects-math/es/core/color';
2
2
  import * as spec from '@galacean/effects-specification';
3
3
  import type { Engine } from '../engine';
4
4
  import type { Maskable } from '../material';
5
- import { MaskMode, MaskProcessor } from '../material';
5
+ import { MaskProcessor } from '../material';
6
6
  import type { BoundingBoxTriangle, HitTestTriangleParams, splitsDataType } from '../plugins';
7
7
  import { MeshCollider } from '../plugins';
8
8
  import type { Renderer } from '../render';
@@ -16,9 +16,7 @@ import { RendererComponent } from './renderer-component';
16
16
  export interface ItemRenderer extends Required<Omit<spec.RendererOptions, 'texture' | 'shape' | 'anchor' | 'particleOrigin' | 'mask'>> {
17
17
  texture: Texture;
18
18
  mask: number;
19
- maskMode: MaskMode;
20
19
  shape?: GeometryFromShape;
21
- alphaMask: boolean;
22
20
  }
23
21
  /**
24
22
  * @since 2.1.0
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Description: Galacean Effects runtime core for the web
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
6
- * Version: v2.5.0-alpha.0
6
+ * Version: v2.5.0-alpha.1
7
7
  */
8
8
 
9
9
  'use strict';
@@ -680,6 +680,17 @@ function asserts(condition, msg) {
680
680
  return /^[^\d.][\w-]*$/.test(fontFamily);
681
681
  }
682
682
 
683
+ /**
684
+ * Simple implementation of the deferred pattern.
685
+ * An object that exposes a promise and functions to resolve and reject it.
686
+ */ var Deferred = function Deferred() {
687
+ var _this = this;
688
+ this.promise = new Promise(function(resolve, reject) {
689
+ _this.resolve = resolve;
690
+ _this.reject = reject;
691
+ });
692
+ };
693
+
683
694
  var prefix = "[Galacean Effects]";
684
695
  var localLogger;
685
696
  function format(message) {
@@ -7625,6 +7636,8 @@ exports.MaterialRenderType = void 0;
7625
7636
  var MaskProcessor = /*#__PURE__*/ function() {
7626
7637
  function MaskProcessor(engine) {
7627
7638
  this.engine = engine;
7639
+ this.alphaMaskEnabled = false;
7640
+ this.maskMode = exports.MaskMode.NONE;
7628
7641
  this.maskable = null;
7629
7642
  this.stencilClearAction = {
7630
7643
  stencilAction: exports.TextureLoadAction.clear
@@ -7635,19 +7648,17 @@ var MaskProcessor = /*#__PURE__*/ function() {
7635
7648
  return 1;
7636
7649
  };
7637
7650
  _proto.getMaskMode = function getMaskMode(data) {
7638
- var maskMode = exports.MaskMode.NONE;
7639
- if (data.mask) {
7640
- 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 ? exports.MaskMode.NONE : _data_mask_mode, ref = _data_mask.ref;
7641
- if (mask) {
7642
- maskMode = exports.MaskMode.MASK;
7643
- } else if (mode === ObscuredMode.OBSCURED || mode === ObscuredMode.REVERSE_OBSCURED) {
7644
- maskMode = mode === ObscuredMode.OBSCURED ? exports.MaskMode.OBSCURED : exports.MaskMode.REVERSE_OBSCURED;
7645
- if (ref) {
7646
- this.maskable = ref;
7647
- }
7651
+ 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;
7652
+ this.alphaMaskEnabled = alphaMaskEnabled;
7653
+ if (isMask) {
7654
+ this.maskMode = exports.MaskMode.MASK;
7655
+ } else {
7656
+ this.maskMode = inverted ? exports.MaskMode.REVERSE_OBSCURED : exports.MaskMode.OBSCURED;
7657
+ if (reference) {
7658
+ this.maskable = this.engine.findObject(reference);
7648
7659
  }
7649
7660
  }
7650
- return maskMode;
7661
+ return this.maskMode;
7651
7662
  };
7652
7663
  _proto.drawStencilMask = function drawStencilMask(renderer) {
7653
7664
  if (this.maskable) {
@@ -12491,9 +12502,7 @@ var singleSplits = [
12491
12502
  occlusion: false,
12492
12503
  transparentOcclusion: false,
12493
12504
  side: SideMode.DOUBLE,
12494
- maskMode: exports.MaskMode.NONE,
12495
- mask: 0,
12496
- alphaMask: false
12505
+ mask: 0
12497
12506
  };
12498
12507
  _this.defaultGeometry = Geometry.create(_this.engine, {
12499
12508
  attributes: {
@@ -12783,7 +12792,8 @@ var singleSplits = [
12783
12792
  return geometry;
12784
12793
  };
12785
12794
  _proto.configureMaterial = function configureMaterial(renderer) {
12786
- var side = renderer.side, occlusion = renderer.occlusion, blendMode = renderer.blending, maskMode = renderer.maskMode, mask = renderer.mask, texture = renderer.texture;
12795
+ var side = renderer.side, occlusion = renderer.occlusion, blendMode = renderer.blending, mask = renderer.mask, texture = renderer.texture;
12796
+ var maskMode = this.maskManager.maskMode;
12787
12797
  var material = this.material;
12788
12798
  material.blending = true;
12789
12799
  material.depthTest = true;
@@ -12804,9 +12814,9 @@ var singleSplits = [
12804
12814
  texParams.x = renderer.occlusion ? +renderer.transparentOcclusion : 1;
12805
12815
  texParams.y = preMultiAlpha;
12806
12816
  texParams.z = renderer.renderMode;
12807
- texParams.w = renderer.maskMode;
12817
+ texParams.w = maskMode;
12808
12818
  material.setVector4("_TexParams", texParams);
12809
- if (texParams.x === 0 || renderer.alphaMask) {
12819
+ if (texParams.x === 0 || this.maskManager.alphaMaskEnabled) {
12810
12820
  material.enableMacro("ALPHA_CLIP");
12811
12821
  } else {
12812
12822
  material.disableMacro("ALPHA_CLIP");
@@ -12833,11 +12843,10 @@ var singleSplits = [
12833
12843
  var renderer = (_baseRenderComponentData_renderer = baseRenderComponentData.renderer) != null ? _baseRenderComponentData_renderer : {};
12834
12844
  var splits = baseRenderComponentData.splits;
12835
12845
  var textureSheetAnimation = baseRenderComponentData.textureSheetAnimation;
12836
- var maskProps = data.mask;
12837
- if (maskProps && maskProps.ref) {
12838
- maskProps.ref = this.engine.findObject(maskProps.ref);
12846
+ var maskOptions = baseRenderComponentData.mask;
12847
+ if (maskOptions) {
12848
+ this.maskManager.getMaskMode(maskOptions);
12839
12849
  }
12840
- var maskMode = this.maskManager.getMaskMode(data);
12841
12850
  // TODO 新蒙板上线后移除
12842
12851
  //-------------------------------------------------------------------------
12843
12852
  var shapeData = renderer.shape;
@@ -12849,19 +12858,16 @@ var singleSplits = [
12849
12858
  //-------------------------------------------------------------------------
12850
12859
  this.splits = splits || singleSplits;
12851
12860
  this.textureSheetAnimation = textureSheetAnimation;
12852
- var _renderer_renderMode, _renderer_blending, _renderer_side, _renderer_alphaMask;
12861
+ var _renderer_renderMode, _renderer_blending, _renderer_side;
12853
12862
  this.renderer = {
12854
12863
  renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.MESH,
12855
12864
  blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending : BlendingMode.ALPHA,
12856
12865
  texture: renderer.texture ? this.engine.findObject(renderer.texture) : this.engine.emptyTexture,
12857
12866
  occlusion: !!renderer.occlusion,
12858
- transparentOcclusion: !!renderer.transparentOcclusion || maskMode === exports.MaskMode.MASK,
12867
+ transparentOcclusion: !!renderer.transparentOcclusion || this.maskManager.maskMode === exports.MaskMode.MASK,
12859
12868
  side: (_renderer_side = renderer.side) != null ? _renderer_side : SideMode.DOUBLE,
12860
12869
  mask: this.maskManager.getRefValue(),
12861
- shape: shapeGeometry,
12862
- maskMode: maskMode,
12863
- //@ts-expect-error TODO 新蒙版兼容老数据需要增加纹理透明度蒙版是否开启参数
12864
- alphaMask: (_renderer_alphaMask = renderer.alphaMask) != null ? _renderer_alphaMask : false
12870
+ shape: shapeGeometry
12865
12871
  };
12866
12872
  this.configureMaterial(this.renderer);
12867
12873
  if (baseRenderComponentData.geometry) {
@@ -13204,17 +13210,15 @@ exports.ShapeComponent = /*#__PURE__*/ function(BaseRenderComponent) {
13204
13210
  break;
13205
13211
  }
13206
13212
  }
13207
- var maskProps = data.mask;
13208
- if (maskProps && maskProps.ref) {
13209
- maskProps.ref = this.engine.findObject(maskProps.ref);
13213
+ if (data.mask) {
13214
+ this.maskManager.getMaskMode(data.mask);
13210
13215
  }
13211
- var maskMode = this.maskManager.getMaskMode(data);
13212
13216
  var maskRef = this.maskManager.getRefValue();
13213
13217
  this.material.stencilRef = maskRef !== undefined ? [
13214
13218
  maskRef,
13215
13219
  maskRef
13216
13220
  ] : undefined;
13217
- setMaskMode(this.material, maskMode);
13221
+ setMaskMode(this.material, this.maskManager.maskMode);
13218
13222
  };
13219
13223
  _create_class(ShapeComponent, [
13220
13224
  {
@@ -19689,11 +19693,7 @@ exports.ParticleSystem = /*#__PURE__*/ function(Component) {
19689
19693
  var maskMode = exports.MaskMode.NONE;
19690
19694
  var maskRef = 0;
19691
19695
  if (data.mask) {
19692
- var maskProps = data.mask;
19693
- if (maskProps && maskProps.ref) {
19694
- maskProps.ref = this.engine.findObject(maskProps.ref);
19695
- }
19696
- maskMode = this.maskManager.getMaskMode(data);
19696
+ maskMode = this.maskManager.getMaskMode(data.mask);
19697
19697
  maskRef = this.maskManager.getRefValue();
19698
19698
  }
19699
19699
  return {
@@ -27546,13 +27546,13 @@ function processMask(renderContent) {
27546
27546
  }
27547
27547
  if (maskMode === exports.MaskMode.MASK) {
27548
27548
  renderContent.mask = {
27549
- mask: true
27549
+ isMask: true
27550
27550
  };
27551
27551
  currentMaskComponent = renderContent.id;
27552
27552
  } else if (maskMode === ObscuredMode.OBSCURED || maskMode === ObscuredMode.REVERSE_OBSCURED) {
27553
27553
  renderContent.mask = {
27554
- mode: maskMode,
27555
- ref: {
27554
+ inverted: maskMode === ObscuredMode.REVERSE_OBSCURED ? true : false,
27555
+ reference: {
27556
27556
  "id": currentMaskComponent
27557
27557
  }
27558
27558
  };
@@ -28376,6 +28376,7 @@ function getStandardSpriteContent(sprite, transform) {
28376
28376
  return ret;
28377
28377
  }
28378
28378
 
28379
+ var version$1 = "2.5.0-alpha.1";
28379
28380
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
28380
28381
  var standardVersion = /^(\d+)\.(\d+)$/;
28381
28382
  var reverseParticle = false;
@@ -28383,6 +28384,11 @@ function getStandardJSON(json) {
28383
28384
  if (!json || typeof json !== "object") {
28384
28385
  throw new Error("Invalid input: Expected a JSON object.");
28385
28386
  }
28387
+ // 如果 JSON 中的 runtime 版本高于当前运行时版本,则发出警告
28388
+ if (checkRuntimeVersion(json)) {
28389
+ var _json_playerVersion;
28390
+ 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.");
28391
+ }
28386
28392
  // 修正老版本数据中,meshItem 以及 lightItem 结束行为错误问题
28387
28393
  version22Migration(json);
28388
28394
  if (v0.test(json.version)) {
@@ -28698,6 +28704,21 @@ function getStandardItem(item, opt) {
28698
28704
  return {};
28699
28705
  }
28700
28706
  }
28707
+ /**
28708
+ * 检查 json.playerVersion.web 的版本号是否低于当前 runtime 的版本
28709
+ */ function checkRuntimeVersion(json) {
28710
+ var _ref = json.playerVersion || {}, _ref_web = _ref.web, web = _ref_web === void 0 ? "" : _ref_web;
28711
+ if (web) {
28712
+ var _v0_exec;
28713
+ var jsonVersionMatch = (_v0_exec = v0.exec(web)) != null ? _v0_exec : [];
28714
+ var _v0_exec1;
28715
+ var runtimeVersionMatch = (_v0_exec1 = v0.exec(version$1)) != null ? _v0_exec1 : [];
28716
+ var major = jsonVersionMatch[1], minor = jsonVersionMatch[2];
28717
+ var currentMajor = runtimeVersionMatch[1], currentMinor = runtimeVersionMatch[2];
28718
+ return Number(currentMajor) < Number(major) || Number(currentMajor) === Number(major) && Number(currentMinor) < Number(minor);
28719
+ }
28720
+ return false;
28721
+ }
28701
28722
 
28702
28723
  var _obj;
28703
28724
  /**
@@ -31605,7 +31626,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem);
31605
31626
  registerPlugin("particle", ParticleLoader, exports.VFXItem);
31606
31627
  registerPlugin("cal", CalculateLoader, exports.VFXItem);
31607
31628
  registerPlugin("interact", InteractLoader, exports.VFXItem);
31608
- var version = "2.5.0-alpha.0";
31629
+ var version = "2.5.0-alpha.1";
31609
31630
  logger.info("Core version: " + version + ".");
31610
31631
 
31611
31632
  exports.AbstractPlugin = AbstractPlugin;
@@ -31633,6 +31654,7 @@ exports.Composition = Composition;
31633
31654
  exports.DEFAULT_FONTS = DEFAULT_FONTS;
31634
31655
  exports.DEFAULT_FPS = DEFAULT_FPS;
31635
31656
  exports.Database = Database;
31657
+ exports.Deferred = Deferred;
31636
31658
  exports.Downloader = Downloader;
31637
31659
  exports.EFFECTS_COPY_MESH_NAME = EFFECTS_COPY_MESH_NAME;
31638
31660
  exports.EVENT_TYPE_CLICK = EVENT_TYPE_CLICK;