@galacean/effects-threejs 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.
package/dist/index.js 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.5.0-alpha.0
6
+ * Version: v2.5.0-alpha.1
7
7
  */
8
8
 
9
9
  'use strict';
@@ -702,6 +702,17 @@ function asserts(condition, msg) {
702
702
  return /^[^\d.][\w-]*$/.test(fontFamily);
703
703
  }
704
704
 
705
+ /**
706
+ * Simple implementation of the deferred pattern.
707
+ * An object that exposes a promise and functions to resolve and reject it.
708
+ */ var Deferred = function Deferred() {
709
+ var _this = this;
710
+ this.promise = new Promise(function(resolve, reject) {
711
+ _this.resolve = resolve;
712
+ _this.reject = reject;
713
+ });
714
+ };
715
+
705
716
  var prefix = "[Galacean Effects]";
706
717
  var localLogger;
707
718
  function format(message) {
@@ -7647,6 +7658,8 @@ exports.MaterialRenderType = void 0;
7647
7658
  var MaskProcessor = /*#__PURE__*/ function() {
7648
7659
  function MaskProcessor(engine) {
7649
7660
  this.engine = engine;
7661
+ this.alphaMaskEnabled = false;
7662
+ this.maskMode = exports.MaskMode.NONE;
7650
7663
  this.maskable = null;
7651
7664
  this.stencilClearAction = {
7652
7665
  stencilAction: exports.TextureLoadAction.clear
@@ -7657,19 +7670,17 @@ var MaskProcessor = /*#__PURE__*/ function() {
7657
7670
  return 1;
7658
7671
  };
7659
7672
  _proto.getMaskMode = function getMaskMode(data) {
7660
- var maskMode = exports.MaskMode.NONE;
7661
- if (data.mask) {
7662
- 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;
7663
- if (mask) {
7664
- maskMode = exports.MaskMode.MASK;
7665
- } else if (mode === ObscuredMode.OBSCURED || mode === ObscuredMode.REVERSE_OBSCURED) {
7666
- maskMode = mode === ObscuredMode.OBSCURED ? exports.MaskMode.OBSCURED : exports.MaskMode.REVERSE_OBSCURED;
7667
- if (ref) {
7668
- this.maskable = ref;
7669
- }
7673
+ 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;
7674
+ this.alphaMaskEnabled = alphaMaskEnabled;
7675
+ if (isMask) {
7676
+ this.maskMode = exports.MaskMode.MASK;
7677
+ } else {
7678
+ this.maskMode = inverted ? exports.MaskMode.REVERSE_OBSCURED : exports.MaskMode.OBSCURED;
7679
+ if (reference) {
7680
+ this.maskable = this.engine.findObject(reference);
7670
7681
  }
7671
7682
  }
7672
- return maskMode;
7683
+ return this.maskMode;
7673
7684
  };
7674
7685
  _proto.drawStencilMask = function drawStencilMask(renderer) {
7675
7686
  if (this.maskable) {
@@ -12513,9 +12524,7 @@ var singleSplits = [
12513
12524
  occlusion: false,
12514
12525
  transparentOcclusion: false,
12515
12526
  side: SideMode.DOUBLE,
12516
- maskMode: exports.MaskMode.NONE,
12517
- mask: 0,
12518
- alphaMask: false
12527
+ mask: 0
12519
12528
  };
12520
12529
  _this.defaultGeometry = Geometry.create(_this.engine, {
12521
12530
  attributes: {
@@ -12805,7 +12814,8 @@ var singleSplits = [
12805
12814
  return geometry;
12806
12815
  };
12807
12816
  _proto.configureMaterial = function configureMaterial(renderer) {
12808
- var side = renderer.side, occlusion = renderer.occlusion, blendMode = renderer.blending, maskMode = renderer.maskMode, mask = renderer.mask, texture = renderer.texture;
12817
+ var side = renderer.side, occlusion = renderer.occlusion, blendMode = renderer.blending, mask = renderer.mask, texture = renderer.texture;
12818
+ var maskMode = this.maskManager.maskMode;
12809
12819
  var material = this.material;
12810
12820
  material.blending = true;
12811
12821
  material.depthTest = true;
@@ -12826,9 +12836,9 @@ var singleSplits = [
12826
12836
  texParams.x = renderer.occlusion ? +renderer.transparentOcclusion : 1;
12827
12837
  texParams.y = preMultiAlpha;
12828
12838
  texParams.z = renderer.renderMode;
12829
- texParams.w = renderer.maskMode;
12839
+ texParams.w = maskMode;
12830
12840
  material.setVector4("_TexParams", texParams);
12831
- if (texParams.x === 0 || renderer.alphaMask) {
12841
+ if (texParams.x === 0 || this.maskManager.alphaMaskEnabled) {
12832
12842
  material.enableMacro("ALPHA_CLIP");
12833
12843
  } else {
12834
12844
  material.disableMacro("ALPHA_CLIP");
@@ -12855,11 +12865,10 @@ var singleSplits = [
12855
12865
  var renderer = (_baseRenderComponentData_renderer = baseRenderComponentData.renderer) != null ? _baseRenderComponentData_renderer : {};
12856
12866
  var splits = baseRenderComponentData.splits;
12857
12867
  var textureSheetAnimation = baseRenderComponentData.textureSheetAnimation;
12858
- var maskProps = data.mask;
12859
- if (maskProps && maskProps.ref) {
12860
- maskProps.ref = this.engine.findObject(maskProps.ref);
12868
+ var maskOptions = baseRenderComponentData.mask;
12869
+ if (maskOptions) {
12870
+ this.maskManager.getMaskMode(maskOptions);
12861
12871
  }
12862
- var maskMode = this.maskManager.getMaskMode(data);
12863
12872
  // TODO 新蒙板上线后移除
12864
12873
  //-------------------------------------------------------------------------
12865
12874
  var shapeData = renderer.shape;
@@ -12871,19 +12880,16 @@ var singleSplits = [
12871
12880
  //-------------------------------------------------------------------------
12872
12881
  this.splits = splits || singleSplits;
12873
12882
  this.textureSheetAnimation = textureSheetAnimation;
12874
- var _renderer_renderMode, _renderer_blending, _renderer_side, _renderer_alphaMask;
12883
+ var _renderer_renderMode, _renderer_blending, _renderer_side;
12875
12884
  this.renderer = {
12876
12885
  renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : RenderMode.MESH,
12877
12886
  blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending : BlendingMode.ALPHA,
12878
12887
  texture: renderer.texture ? this.engine.findObject(renderer.texture) : this.engine.emptyTexture,
12879
12888
  occlusion: !!renderer.occlusion,
12880
- transparentOcclusion: !!renderer.transparentOcclusion || maskMode === exports.MaskMode.MASK,
12889
+ transparentOcclusion: !!renderer.transparentOcclusion || this.maskManager.maskMode === exports.MaskMode.MASK,
12881
12890
  side: (_renderer_side = renderer.side) != null ? _renderer_side : SideMode.DOUBLE,
12882
12891
  mask: this.maskManager.getRefValue(),
12883
- shape: shapeGeometry,
12884
- maskMode: maskMode,
12885
- //@ts-expect-error TODO 新蒙版兼容老数据需要增加纹理透明度蒙版是否开启参数
12886
- alphaMask: (_renderer_alphaMask = renderer.alphaMask) != null ? _renderer_alphaMask : false
12892
+ shape: shapeGeometry
12887
12893
  };
12888
12894
  this.configureMaterial(this.renderer);
12889
12895
  if (baseRenderComponentData.geometry) {
@@ -13226,17 +13232,15 @@ exports.ShapeComponent = /*#__PURE__*/ function(BaseRenderComponent) {
13226
13232
  break;
13227
13233
  }
13228
13234
  }
13229
- var maskProps = data.mask;
13230
- if (maskProps && maskProps.ref) {
13231
- maskProps.ref = this.engine.findObject(maskProps.ref);
13235
+ if (data.mask) {
13236
+ this.maskManager.getMaskMode(data.mask);
13232
13237
  }
13233
- var maskMode = this.maskManager.getMaskMode(data);
13234
13238
  var maskRef = this.maskManager.getRefValue();
13235
13239
  this.material.stencilRef = maskRef !== undefined ? [
13236
13240
  maskRef,
13237
13241
  maskRef
13238
13242
  ] : undefined;
13239
- setMaskMode(this.material, maskMode);
13243
+ setMaskMode(this.material, this.maskManager.maskMode);
13240
13244
  };
13241
13245
  _create_class(ShapeComponent, [
13242
13246
  {
@@ -19711,11 +19715,7 @@ exports.ParticleSystem = /*#__PURE__*/ function(Component) {
19711
19715
  var maskMode = exports.MaskMode.NONE;
19712
19716
  var maskRef = 0;
19713
19717
  if (data.mask) {
19714
- var maskProps = data.mask;
19715
- if (maskProps && maskProps.ref) {
19716
- maskProps.ref = this.engine.findObject(maskProps.ref);
19717
- }
19718
- maskMode = this.maskManager.getMaskMode(data);
19718
+ maskMode = this.maskManager.getMaskMode(data.mask);
19719
19719
  maskRef = this.maskManager.getRefValue();
19720
19720
  }
19721
19721
  return {
@@ -27568,13 +27568,13 @@ function processMask(renderContent) {
27568
27568
  }
27569
27569
  if (maskMode === exports.MaskMode.MASK) {
27570
27570
  renderContent.mask = {
27571
- mask: true
27571
+ isMask: true
27572
27572
  };
27573
27573
  currentMaskComponent = renderContent.id;
27574
27574
  } else if (maskMode === ObscuredMode.OBSCURED || maskMode === ObscuredMode.REVERSE_OBSCURED) {
27575
27575
  renderContent.mask = {
27576
- mode: maskMode,
27577
- ref: {
27576
+ inverted: maskMode === ObscuredMode.REVERSE_OBSCURED ? true : false,
27577
+ reference: {
27578
27578
  "id": currentMaskComponent
27579
27579
  }
27580
27580
  };
@@ -28398,6 +28398,7 @@ function getStandardSpriteContent(sprite, transform) {
28398
28398
  return ret;
28399
28399
  }
28400
28400
 
28401
+ var version$2 = "2.5.0-alpha.1";
28401
28402
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
28402
28403
  var standardVersion = /^(\d+)\.(\d+)$/;
28403
28404
  var reverseParticle = false;
@@ -28405,6 +28406,11 @@ function getStandardJSON(json) {
28405
28406
  if (!json || typeof json !== "object") {
28406
28407
  throw new Error("Invalid input: Expected a JSON object.");
28407
28408
  }
28409
+ // 如果 JSON 中的 runtime 版本高于当前运行时版本,则发出警告
28410
+ if (checkRuntimeVersion(json)) {
28411
+ var _json_playerVersion;
28412
+ console.warn("The JSON need higher than " + ((_json_playerVersion = json.playerVersion) == null ? void 0 : _json_playerVersion.web) + " runtime version(current: " + version$2 + "). Some features may not work as expected.");
28413
+ }
28408
28414
  // 修正老版本数据中,meshItem 以及 lightItem 结束行为错误问题
28409
28415
  version22Migration(json);
28410
28416
  if (v0.test(json.version)) {
@@ -28720,6 +28726,21 @@ function getStandardItem(item, opt) {
28720
28726
  return {};
28721
28727
  }
28722
28728
  }
28729
+ /**
28730
+ * 检查 json.playerVersion.web 的版本号是否低于当前 runtime 的版本
28731
+ */ function checkRuntimeVersion(json) {
28732
+ var _ref = json.playerVersion || {}, _ref_web = _ref.web, web = _ref_web === void 0 ? "" : _ref_web;
28733
+ if (web) {
28734
+ var _v0_exec;
28735
+ var jsonVersionMatch = (_v0_exec = v0.exec(web)) != null ? _v0_exec : [];
28736
+ var _v0_exec1;
28737
+ var runtimeVersionMatch = (_v0_exec1 = v0.exec(version$2)) != null ? _v0_exec1 : [];
28738
+ var major = jsonVersionMatch[1], minor = jsonVersionMatch[2];
28739
+ var currentMajor = runtimeVersionMatch[1], currentMinor = runtimeVersionMatch[2];
28740
+ return Number(currentMajor) < Number(major) || Number(currentMajor) === Number(major) && Number(currentMinor) < Number(minor);
28741
+ }
28742
+ return false;
28743
+ }
28723
28744
 
28724
28745
  var _obj$1;
28725
28746
  /**
@@ -31627,7 +31648,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem);
31627
31648
  registerPlugin("particle", ParticleLoader, exports.VFXItem);
31628
31649
  registerPlugin("cal", CalculateLoader, exports.VFXItem);
31629
31650
  registerPlugin("interact", InteractLoader, exports.VFXItem);
31630
- var version$1 = "2.5.0-alpha.0";
31651
+ var version$1 = "2.5.0-alpha.1";
31631
31652
  logger.info("Core version: " + version$1 + ".");
31632
31653
 
31633
31654
  var _obj;
@@ -33229,7 +33250,7 @@ setMaxSpriteMeshItemCount(8);
33229
33250
  */ Mesh.create = function(engine, props) {
33230
33251
  return new ThreeMesh(engine, props);
33231
33252
  };
33232
- var version = "2.5.0-alpha.0";
33253
+ var version = "2.5.0-alpha.1";
33233
33254
  logger.info("THREEJS plugin version: " + version + ".");
33234
33255
 
33235
33256
  exports.AbstractPlugin = AbstractPlugin;
@@ -33261,6 +33282,7 @@ exports.Composition = Composition;
33261
33282
  exports.DEFAULT_FONTS = DEFAULT_FONTS;
33262
33283
  exports.DEFAULT_FPS = DEFAULT_FPS;
33263
33284
  exports.Database = Database;
33285
+ exports.Deferred = Deferred;
33264
33286
  exports.Downloader = Downloader;
33265
33287
  exports.EFFECTS_COPY_MESH_NAME = EFFECTS_COPY_MESH_NAME;
33266
33288
  exports.EVENT_TYPE_CLICK = EVENT_TYPE_CLICK;