@galacean/effects-threejs 2.0.0-alpha.20 → 2.0.0-alpha.22

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.0.0-alpha.20
6
+ * Version: v2.0.0-alpha.22
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -4322,11 +4322,19 @@ var DataType;
4322
4322
  DataType["Texture"] = "Texture";
4323
4323
  DataType["AnimationClip"] = "AnimationClip";
4324
4324
  DataType["TextComponent"] = "TextComponent";
4325
+ DataType["BinaryAsset"] = "BinaryAsset";
4326
+ // Timeline
4325
4327
  DataType["TrackAsset"] = "TrackAsset";
4326
4328
  DataType["TimelineAsset"] = "TimelineAsset";
4329
+ DataType["ObjectBindingTrack"] = "ObjectBindingTrack";
4330
+ DataType["TransformTrack"] = "TransformTrack";
4331
+ DataType["SpriteColorTrack"] = "SpriteColorTrack";
4332
+ DataType["ActivationTrack"] = "ActivationTrack";
4333
+ DataType["SubCompositionTrack"] = "SubCompositionTrack";
4327
4334
  DataType["TransformPlayableAsset"] = "TransformPlayableAsset";
4328
4335
  DataType["SpriteColorPlayableAsset"] = "SpriteColorPlayableAsset";
4329
- DataType["BinaryAsset"] = "BinaryAsset";
4336
+ DataType["ActivationPlayableAsset"] = "ActivationPlayableAsset";
4337
+ DataType["SubCompositionPlayableAsset"] = "SubCompositionPlayableAsset";
4330
4338
  // FIXME: 先完成ECS的场景转换,后面移到spec中
4331
4339
  DataType["MeshComponent"] = "MeshComponent";
4332
4340
  DataType["SkyboxComponent"] = "SkyboxComponent";
@@ -4915,10 +4923,25 @@ var EventSystem = /*#__PURE__*/ function() {
4915
4923
  var getTouchEventValue = function(event, x, y, dx, dy) {
4916
4924
  if (dx === void 0) dx = 0;
4917
4925
  if (dy === void 0) dy = 0;
4918
- var _this_target = _this.target, width = _this_target.width, height = _this_target.height;
4919
- var ts = performance.now();
4920
4926
  var vx = 0;
4921
4927
  var vy = 0;
4928
+ var ts = performance.now();
4929
+ if (!_this.target) {
4930
+ logger.error("Trigger TouchEvent after EventSystem is disposed.");
4931
+ return {
4932
+ x: x,
4933
+ y: y,
4934
+ vx: 0,
4935
+ vy: vy,
4936
+ dx: dx,
4937
+ dy: dy,
4938
+ ts: ts,
4939
+ width: 0,
4940
+ height: 0,
4941
+ origin: event
4942
+ };
4943
+ }
4944
+ var _this_target = _this.target, width = _this_target.width, height = _this_target.height;
4922
4945
  if (lastTouch) {
4923
4946
  var dt = ts - lastTouch.ts;
4924
4947
  vx = (dx - lastTouch.dx) / dt || 0;
@@ -13043,6 +13066,16 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
13043
13066
  function InteractComponent() {
13044
13067
  var _this;
13045
13068
  _this = RendererComponent.apply(this, arguments) || this;
13069
+ /**
13070
+ * 拖拽的惯性衰减系数,范围[0, 1], 越大惯性越强
13071
+ */ _this.downgrade = 0.95;
13072
+ /**
13073
+ * 拖拽的距离映射系数,越大越容易拖动
13074
+ */ _this.dragRatio = [
13075
+ 1,
13076
+ 1
13077
+ ];
13078
+ /** 是否响应点击和拖拽交互事件 */ _this._interactive = true;
13046
13079
  _this.getHitTestParams = function(force) {
13047
13080
  if (!_this.clickable) {
13048
13081
  return;
@@ -13094,9 +13127,8 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
13094
13127
  if (!this.dragEvent || !this.bouncingArg) {
13095
13128
  return;
13096
13129
  }
13097
- var downgrade = 0.95;
13098
- this.bouncingArg.vx *= downgrade;
13099
- this.bouncingArg.vy *= downgrade;
13130
+ this.bouncingArg.vx *= this.downgrade;
13131
+ this.bouncingArg.vy *= this.downgrade;
13100
13132
  this.bouncingArg.dy += this.bouncingArg.vy;
13101
13133
  this.bouncingArg.dx += this.bouncingArg.vx;
13102
13134
  if (shouldIgnoreBouncing(this.bouncingArg)) {
@@ -13124,7 +13156,7 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
13124
13156
  // OVERRIDE
13125
13157
  };
13126
13158
  _proto.handleDragMove = function handleDragMove(evt, event) {
13127
- if (!(evt && evt.cameraParam) || !this.item.composition) {
13159
+ if (!(evt == null ? void 0 : evt.cameraParam) || !this.canInteract() || !this.item.composition) {
13128
13160
  return;
13129
13161
  }
13130
13162
  var options = this.item.props.content.options;
@@ -13135,8 +13167,8 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
13135
13167
  var sp = Math.tan(fov * Math.PI / 180 / 2) * Math.abs(depth);
13136
13168
  var height = dy * sp;
13137
13169
  var width = dx * sp;
13138
- var nx = position[0] - width;
13139
- var ny = position[1] - height;
13170
+ var nx = position[0] - this.dragRatio[0] * width;
13171
+ var ny = position[1] - this.dragRatio[1] * height;
13140
13172
  if (options.dxRange) {
13141
13173
  var _options_dxRange = options.dxRange, min = _options_dxRange[0], max = _options_dxRange[1];
13142
13174
  nx = clamp$1(nx, min, max);
@@ -13164,6 +13196,9 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
13164
13196
  var handlerMap = {
13165
13197
  touchstart: function(event) {
13166
13198
  var _this_item_composition;
13199
+ if (!_this.canInteract()) {
13200
+ return;
13201
+ }
13167
13202
  _this.dragEvent = null;
13168
13203
  _this.bouncingArg = null;
13169
13204
  var camera = (_this_item_composition = _this.item.composition) == null ? void 0 : _this_item_composition.camera;
@@ -13185,6 +13220,9 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
13185
13220
  _this.bouncingArg = event;
13186
13221
  },
13187
13222
  touchend: function(event) {
13223
+ if (!_this.canInteract()) {
13224
+ return;
13225
+ }
13188
13226
  var bouncingArg = _this.bouncingArg;
13189
13227
  if (!shouldIgnoreBouncing(bouncingArg, 3) && bouncingArg) {
13190
13228
  var speed = 5;
@@ -13227,6 +13265,25 @@ var InteractComponent = /*#__PURE__*/ function(RendererComponent) {
13227
13265
  RendererComponent.prototype.fromData.call(this, data);
13228
13266
  this.interactData = data;
13229
13267
  };
13268
+ _proto.canInteract = function canInteract() {
13269
+ var _this_item_composition;
13270
+ return Boolean((_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.interactive) && this._interactive;
13271
+ };
13272
+ _create_class(InteractComponent, [
13273
+ {
13274
+ key: "interactive",
13275
+ get: function get() {
13276
+ return this._interactive;
13277
+ },
13278
+ set: function set(enable) {
13279
+ this._interactive = enable;
13280
+ if (!enable) {
13281
+ // 立刻停止惯性滑动
13282
+ this.bouncingArg = null;
13283
+ }
13284
+ }
13285
+ }
13286
+ ]);
13230
13287
  return InteractComponent;
13231
13288
  }(RendererComponent);
13232
13289
  InteractComponent = __decorate([
@@ -16743,17 +16800,12 @@ var ParticleSystem = /*#__PURE__*/ function(Component) {
16743
16800
  _proto.onEnd = function onEnd(particle) {};
16744
16801
  _proto.onIterate = function onIterate(particle) {};
16745
16802
  _proto.initPoint = function initPoint(data) {
16746
- var _this_item_composition, _this_item_composition1;
16747
16803
  var options = this.options;
16748
16804
  var lifetime = this.lifetime;
16749
16805
  var shape = this.shape;
16750
16806
  var speed = options.startSpeed.getValue(lifetime);
16751
16807
  var matrix4 = options.particleFollowParent ? this.transform.getMatrix() : this.transform.getWorldMatrix();
16752
16808
  var pointPosition = data.position;
16753
- if (((_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.renderer.env) === PLAYER_OPTIONS_ENV_EDITOR) {
16754
- pointPosition.x /= this.item.composition.editorScaleRatio;
16755
- pointPosition.y /= this.item.composition.editorScaleRatio;
16756
- }
16757
16809
  // 粒子的位置受发射器的位置影响,自身的旋转和缩放不受影响
16758
16810
  var position = matrix4.transformPoint(pointPosition, new Vector3());
16759
16811
  var transform = new Transform({
@@ -16834,10 +16886,6 @@ var ParticleSystem = /*#__PURE__*/ function(Component) {
16834
16886
  size.x *= tempScale.x;
16835
16887
  size.y *= tempScale.y;
16836
16888
  }
16837
- if (((_this_item_composition1 = this.item.composition) == null ? void 0 : _this_item_composition1.renderer.env) === PLAYER_OPTIONS_ENV_EDITOR) {
16838
- size.x /= this.item.composition.editorScaleRatio;
16839
- size.y /= this.item.composition.editorScaleRatio;
16840
- }
16841
16889
  transform.setScale(size.x, size.y, 1);
16842
16890
  return {
16843
16891
  size: size,
@@ -19393,21 +19441,33 @@ var TextLayout = /*#__PURE__*/ function() {
19393
19441
  this.lineHeight = lineHeight;
19394
19442
  }
19395
19443
  var _proto = TextLayout.prototype;
19396
- _proto.getOffsetY = function getOffsetY(style) {
19397
- var offsetY = 0;
19398
- var offset = (style.fontSize + style.outlineWidth) * style.fontScale;
19444
+ /**
19445
+ * 获取初始的行高偏移值
19446
+ * @param style - 字体基础数据
19447
+ * @param lineCount - 渲染行数
19448
+ * @param lineHeight - 渲染时的字体行高
19449
+ * @param fontSize - 渲染时的字体大小
19450
+ * @returns - 行高偏移值
19451
+ */ _proto.getOffsetY = function getOffsetY(style, lineCount, lineHeight, fontSize) {
19452
+ var outlineWidth = style.outlineWidth, fontScale = style.fontScale;
19453
+ // /3 计算Y轴偏移量,以匹配编辑器行为
19454
+ var offsetY = (lineHeight - fontSize) / 3;
19455
+ // 计算基础偏移量
19456
+ var baseOffset = fontSize + outlineWidth * fontScale;
19457
+ var commonCalculation = lineHeight * (lineCount - 1);
19458
+ var offsetResult = 0;
19399
19459
  switch(this.textBaseline){
19400
19460
  case TextBaseline.top:
19401
- offsetY = offset;
19461
+ offsetResult = baseOffset + offsetY;
19402
19462
  break;
19403
19463
  case TextBaseline.middle:
19404
- offsetY = (this.height + offset) / 2; // fonSize;
19464
+ offsetResult = (this.height * fontScale - commonCalculation + baseOffset) / 2;
19405
19465
  break;
19406
19466
  case TextBaseline.bottom:
19407
- offsetY = this.height - offset / 2;
19467
+ offsetResult = this.height * fontScale - commonCalculation - offsetY;
19408
19468
  break;
19409
19469
  }
19410
- return offsetY;
19470
+ return offsetResult;
19411
19471
  };
19412
19472
  _proto.getOffsetX = function getOffsetX(style, maxWidth) {
19413
19473
  var offsetX = 0;
@@ -19565,6 +19625,9 @@ var TextComponent = /*#__PURE__*/ function(SpriteComponent) {
19565
19625
  var _this;
19566
19626
  _this = SpriteComponent.call(this, engine, props) || this;
19567
19627
  _this.isDirty = true;
19628
+ /**
19629
+ * 文本行数
19630
+ */ _this.lineCount = 0;
19568
19631
  _this.canvas = canvasPool.getCanvas();
19569
19632
  canvasPool.saveCanvas(_this.canvas);
19570
19633
  _this.context = _this.canvas.getContext("2d", {
@@ -19608,6 +19671,31 @@ var TextComponentBase = /*#__PURE__*/ function() {
19608
19671
  this.textStyle = new TextStyle(options);
19609
19672
  this.textLayout = new TextLayout(options);
19610
19673
  this.text = options.text;
19674
+ this.lineCount = this.getLineCount(options.text, true);
19675
+ };
19676
+ _proto.getLineCount = function getLineCount(text, init) {
19677
+ var context = this.context;
19678
+ var letterSpace = this.textLayout.letterSpace;
19679
+ var fontScale = init ? this.textStyle.fontSize / 10 : 1 / this.textStyle.fontScale;
19680
+ var width = this.textLayout.width + this.textStyle.fontOffset;
19681
+ var lineCount = 1;
19682
+ var x = 0;
19683
+ for(var i = 0; i < text.length; i++){
19684
+ var _context_measureText;
19685
+ var str = text[i];
19686
+ var _context_measureText_width;
19687
+ var textMetrics = ((_context_measureText_width = context == null ? void 0 : (_context_measureText = context.measureText(str)) == null ? void 0 : _context_measureText.width) != null ? _context_measureText_width : 0) * fontScale;
19688
+ // 和浏览器行为保持一致
19689
+ x += letterSpace;
19690
+ if (x + textMetrics > width && i > 0 || str === "\n") {
19691
+ lineCount++;
19692
+ x = 0;
19693
+ }
19694
+ if (str !== "\n") {
19695
+ x += textMetrics;
19696
+ }
19697
+ }
19698
+ return lineCount;
19611
19699
  };
19612
19700
  /**
19613
19701
  * 设置字号大小
@@ -19654,6 +19742,7 @@ var TextComponentBase = /*#__PURE__*/ function() {
19654
19742
  return;
19655
19743
  }
19656
19744
  this.text = value;
19745
+ this.lineCount = this.getLineCount(value, false);
19657
19746
  this.isDirty = true;
19658
19747
  };
19659
19748
  /**
@@ -19816,10 +19905,8 @@ var TextComponentBase = /*#__PURE__*/ function() {
19816
19905
  // 文本颜色
19817
19906
  context.fillStyle = "rgba(" + style.textColor[0] + ", " + style.textColor[1] + ", " + style.textColor[2] + ", " + style.textColor[3] + ")";
19818
19907
  var charsInfo = [];
19819
- // /3 是为了和编辑器行为保持一致
19820
- var offsetY = (lineHeight - fontSize) / 3;
19821
19908
  var x = 0;
19822
- var y = layout.getOffsetY(style) + offsetY;
19909
+ var y = layout.getOffsetY(style, this.lineCount, lineHeight, fontSize);
19823
19910
  var charsArray = [];
19824
19911
  var charOffsetX = [];
19825
19912
  for(var i = 0; i < this.char.length; i++){
@@ -22382,10 +22469,6 @@ function getStandardCameraContent(model) {
22382
22469
  ]
22383
22470
  });
22384
22471
  }
22385
- // gizmo 的 target id 转换为新的 item guid
22386
- if (item.content.options.target) {
22387
- item.content.options.target = itemOldIdToGuidMap[item.content.options.target];
22388
- }
22389
22472
  // 修正老 json 的 item.pluginName
22390
22473
  if (item.pn !== undefined) {
22391
22474
  var pn = item.pn;
@@ -22403,6 +22486,10 @@ function getStandardCameraContent(model) {
22403
22486
  //@ts-expect-error
22404
22487
  item.type = "orientation-transformer";
22405
22488
  }
22489
+ // gizmo 的 target id 转换为新的 item guid
22490
+ if (item.content.options.target && item.pluginName === "editor-gizmo") {
22491
+ item.content.options.target = itemOldIdToGuidMap[item.content.options.target];
22492
+ }
22406
22493
  // Spine 元素转为 guid 索引
22407
22494
  if (item.type === ItemType.spine && json.spines && json.spines.length !== 0) {
22408
22495
  convertSpineData(json.spines[item.content.options.spine], item.content, result);
@@ -23209,26 +23296,27 @@ var seed$1 = 1;
23209
23296
  */ _proto.loadScene = function loadScene(url, renderer, options) {
23210
23297
  var _this = this;
23211
23298
  return _async_to_generator(function() {
23212
- var _gpuInstance_detail, rawJSON, assetUrl, startTime, timeInfos, gpuInstance, _gpuInstance_detail_asyncShaderCompile, asyncShaderCompile, _gpuInstance_detail_compressedTexture, compressedTexture, loadTimer, cancelLoading, waitPromise, hookTimeInfo, loadResourcePromise;
23299
+ var _gpuInstance_detail, rawJSON, assetUrl, startTime, timeInfoMessages, gpuInstance, _gpuInstance_detail_asyncShaderCompile, asyncShaderCompile, _gpuInstance_detail_compressedTexture, compressedTexture, timeInfos, loadTimer, cancelLoading, waitPromise, hookTimeInfo, loadResourcePromise;
23213
23300
  return __generator(this, function(_state) {
23214
23301
  assetUrl = isString(url) ? url : _this.id;
23215
23302
  startTime = performance.now();
23216
- timeInfos = [];
23303
+ timeInfoMessages = [];
23217
23304
  gpuInstance = renderer == null ? void 0 : renderer.engine.gpuCapability;
23218
23305
  asyncShaderCompile = (_gpuInstance_detail_asyncShaderCompile = gpuInstance == null ? void 0 : (_gpuInstance_detail = gpuInstance.detail) == null ? void 0 : _gpuInstance_detail.asyncShaderCompile) != null ? _gpuInstance_detail_asyncShaderCompile : false;
23219
23306
  compressedTexture = (_gpuInstance_detail_compressedTexture = gpuInstance == null ? void 0 : gpuInstance.detail.compressedTexture) != null ? _gpuInstance_detail_compressedTexture : COMPRESSED_TEXTURE.NONE;
23307
+ timeInfos = {};
23220
23308
  cancelLoading = false;
23221
23309
  waitPromise = new Promise(function(resolve, reject) {
23222
23310
  loadTimer = window.setTimeout(function() {
23223
23311
  cancelLoading = true;
23224
23312
  _this.removeTimer(loadTimer);
23225
23313
  var totalTime = performance.now() - startTime;
23226
- reject(new Error("Load time out: totalTime: " + totalTime.toFixed(4) + "ms " + timeInfos.join(" ") + ", url: " + assetUrl + "."));
23314
+ reject(new Error("Load time out: totalTime: " + totalTime.toFixed(4) + "ms " + timeInfoMessages.join(" ") + ", url: " + assetUrl + "."));
23227
23315
  }, _this.timeout * 1000);
23228
23316
  _this.timers.push(loadTimer);
23229
23317
  });
23230
23318
  hookTimeInfo = /*#__PURE__*/ _async_to_generator(function(label, func) {
23231
- var st, result, e;
23319
+ var st, result, time, e;
23232
23320
  return __generator(this, function(_state) {
23233
23321
  switch(_state.label){
23234
23322
  case 0:
@@ -23251,7 +23339,9 @@ var seed$1 = 1;
23251
23339
  ];
23252
23340
  case 2:
23253
23341
  result = _state.sent();
23254
- timeInfos.push("[" + label + ": " + (performance.now() - st).toFixed(2) + "]");
23342
+ time = performance.now() - st;
23343
+ timeInfoMessages.push("[" + label + ": " + time.toFixed(2) + "]");
23344
+ timeInfos[label] = time;
23255
23345
  return [
23256
23346
  2,
23257
23347
  result
@@ -23350,7 +23440,7 @@ var seed$1 = 1;
23350
23440
  hookTimeInfo("processImages", function() {
23351
23441
  return _this.processImages(images1, compressedTexture);
23352
23442
  }),
23353
- hookTimeInfo("" + (asyncShaderCompile ? "async" : "sync") + " compile", function() {
23443
+ hookTimeInfo("" + (asyncShaderCompile ? "async" : "sync") + "Compile", function() {
23354
23444
  return _this.precompile(compositions, pluginSystem, renderer, options);
23355
23445
  })
23356
23446
  ])
@@ -23383,6 +23473,7 @@ var seed$1 = 1;
23383
23473
  loadedTextures = _state.sent();
23384
23474
  _this.updateSceneData(jsonScene.items);
23385
23475
  scene = {
23476
+ timeInfos: timeInfos,
23386
23477
  url: url,
23387
23478
  renderLevel: _this.options.renderLevel,
23388
23479
  storage: {},
@@ -23405,11 +23496,13 @@ var seed$1 = 1;
23405
23496
  _state.label = 12;
23406
23497
  case 12:
23407
23498
  totalTime = performance.now() - startTime;
23408
- logger.info("Load asset: totalTime: " + totalTime.toFixed(4) + "ms " + timeInfos.join(" ") + ", url: " + assetUrl + ".");
23499
+ logger.info("Load asset: totalTime: " + totalTime.toFixed(4) + "ms " + timeInfoMessages.join(" ") + ", url: " + assetUrl + ".");
23409
23500
  window.clearTimeout(loadTimer);
23410
23501
  _this.removeTimer(loadTimer);
23411
23502
  scene.totalTime = totalTime;
23412
23503
  scene.startTime = startTime;
23504
+ // 各部分分段时长
23505
+ scene.timeInfos = timeInfos;
23413
23506
  return [
23414
23507
  2,
23415
23508
  scene
@@ -23948,6 +24041,7 @@ var tmpScale = new Vector3(1, 1, 1);
23948
24041
  function Camera(name, options) {
23949
24042
  if (options === void 0) options = {};
23950
24043
  this.name = name;
24044
+ this.fovScaleRatio = 1.0;
23951
24045
  this.viewMatrix = Matrix4.fromIdentity();
23952
24046
  this.projectionMatrix = Matrix4.fromIdentity();
23953
24047
  this.viewProjectionMatrix = Matrix4.fromIdentity();
@@ -23975,6 +24069,13 @@ var tmpScale = new Vector3(1, 1, 1);
23975
24069
  this.updateMatrix();
23976
24070
  }
23977
24071
  var _proto = Camera.prototype;
24072
+ _proto.setFovScaleRatio = function setFovScaleRatio(value) {
24073
+ this.fovScaleRatio = value;
24074
+ this.dirty = true;
24075
+ };
24076
+ _proto.getFovScaleRatio = function getFovScaleRatio() {
24077
+ return this.fovScaleRatio;
24078
+ };
23978
24079
  /**
23979
24080
  * 获取相机的视图变换矩阵
23980
24081
  * @return
@@ -24095,7 +24196,7 @@ var tmpScale = new Vector3(1, 1, 1);
24095
24196
  */ _proto.updateMatrix = function updateMatrix() {
24096
24197
  if (this.dirty) {
24097
24198
  var _this_options = this.options, fov = _this_options.fov, aspect = _this_options.aspect, near = _this_options.near, far = _this_options.far, clipMode = _this_options.clipMode, position = _this_options.position;
24098
- this.projectionMatrix.perspective(fov * DEG2RAD, aspect, near, far, clipMode === CameraClipMode.portrait);
24199
+ this.projectionMatrix.perspective(fov * DEG2RAD * this.fovScaleRatio, aspect, near, far, clipMode === CameraClipMode.portrait);
24099
24200
  this.inverseViewMatrix.compose(position, this.getQuat(), tmpScale);
24100
24201
  this.viewMatrix.copyFrom(this.inverseViewMatrix).invert();
24101
24202
  this.viewProjectionMatrix.multiplyMatrices(this.projectionMatrix, this.viewMatrix);
@@ -24402,7 +24503,6 @@ var listOrder = 0;
24402
24503
  /**
24403
24504
  * 预合成的合成属性,在 content 中会被其元素属性覆盖
24404
24505
  */ this.refCompositionProps = new Map();
24405
- this.editorScaleRatio = 1.0;
24406
24506
  // TODO: 待优化
24407
24507
  this.assigned = false;
24408
24508
  /**
@@ -24439,11 +24539,12 @@ var listOrder = 0;
24439
24539
  this.renderer = renderer;
24440
24540
  this.texInfo = imageUsage != null ? imageUsage : {};
24441
24541
  this.event = event;
24442
- var _scene_startTime;
24542
+ var _scene_startTime, _scene_timeInfos_asyncCompile;
24443
24543
  this.statistic = {
24444
24544
  loadTime: totalTime != null ? totalTime : 0,
24445
24545
  loadStart: (_scene_startTime = scene.startTime) != null ? _scene_startTime : 0,
24446
- firstFrameTime: 0
24546
+ firstFrameTime: 0,
24547
+ precompileTime: (_scene_timeInfos_asyncCompile = scene.timeInfos["asyncCompile"]) != null ? _scene_timeInfos_asyncCompile : scene.timeInfos["syncCompile"]
24447
24548
  };
24448
24549
  this.reusable = reusable;
24449
24550
  this.speed = speed;
@@ -24457,6 +24558,7 @@ var listOrder = 0;
24457
24558
  this.url = scene.url;
24458
24559
  this.assigned = true;
24459
24560
  this.globalTime = 0;
24561
+ this.interactive = true;
24460
24562
  this.onPlayerPause = onPlayerPause;
24461
24563
  this.onMessageItem = onMessageItem;
24462
24564
  this.onEnd = onEnd;
@@ -24886,7 +24988,7 @@ var listOrder = 0;
24886
24988
  * @param options - 最大求交数和求交时的回调
24887
24989
  */ _proto.hitTest = function hitTest(x, y, force, options) {
24888
24990
  var _this_rootItem_getComponent;
24889
- if (this.isDestroyed) {
24991
+ if (this.isDestroyed || !this.interactive) {
24890
24992
  return [];
24891
24993
  }
24892
24994
  var regions = [];
@@ -25207,6 +25309,15 @@ var listOrder = 0;
25207
25309
  */ function get() {
25208
25310
  return this.destroyed;
25209
25311
  }
25312
+ },
25313
+ {
25314
+ key: "editorScaleRatio",
25315
+ get: function get() {
25316
+ return this.camera.getFovScaleRatio();
25317
+ },
25318
+ set: function set(value) {
25319
+ this.camera.setFovScaleRatio(value);
25320
+ }
25210
25321
  }
25211
25322
  ]);
25212
25323
  return Composition;
@@ -25604,7 +25715,7 @@ registerPlugin("sprite", SpriteLoader, VFXItem, true);
25604
25715
  registerPlugin("particle", ParticleLoader, VFXItem, true);
25605
25716
  registerPlugin("cal", CalculateLoader, VFXItem, true);
25606
25717
  registerPlugin("interact", InteractLoader, VFXItem, true);
25607
- var version$1 = "2.0.0-alpha.20";
25718
+ var version$1 = "2.0.0-alpha.22";
25608
25719
  logger.info("Core version: " + version$1 + ".");
25609
25720
 
25610
25721
  var _obj;
@@ -26648,11 +26759,10 @@ var seed = 1;
26648
26759
  }
26649
26760
  }
26650
26761
  // @ts-expect-error
26651
- return _extends({
26762
+ return _extends({}, options, {
26652
26763
  target: target,
26653
26764
  format: THREE.RGBAFormat,
26654
- type: THREE.UnsignedByteType
26655
- }, options, {
26765
+ type: THREE.UnsignedByteType,
26656
26766
  minFilter: ThreeTexture.toThreeJsTextureFilter(options.minFilter),
26657
26767
  magFilter: ThreeTexture.toThreeJsTextureFilter(options.magFilter),
26658
26768
  wrapS: ThreeTexture.toThreeJsTextureWrap(options.wrapS),
@@ -27150,6 +27260,52 @@ ThreeSpriteComponent = __decorate([
27150
27260
  effectsClass(DataType.SpriteComponent)
27151
27261
  ], ThreeSpriteComponent);
27152
27262
 
27263
+ var ThreeTextComponent = /*#__PURE__*/ function(ThreeSpriteComponent) {
27264
+ _inherits(ThreeTextComponent, ThreeSpriteComponent);
27265
+ function ThreeTextComponent(engine, props) {
27266
+ var _this;
27267
+ _this = ThreeSpriteComponent.call(this, engine, props) || this;
27268
+ _this.isDirty = true;
27269
+ _this.canvas = canvasPool.getCanvas();
27270
+ canvasPool.saveCanvas(_this.canvas);
27271
+ _this.context = _this.canvas.getContext("2d", {
27272
+ willReadFrequently: true
27273
+ });
27274
+ if (!props) {
27275
+ return _possible_constructor_return(_this);
27276
+ }
27277
+ var options = props.options;
27278
+ _this.updateWithOptions(options);
27279
+ _this.updateTexture(false);
27280
+ return _this;
27281
+ }
27282
+ var _proto = ThreeTextComponent.prototype;
27283
+ _proto.update = function update(dt) {
27284
+ ThreeSpriteComponent.prototype.update.call(this, dt);
27285
+ this.updateTexture(false);
27286
+ };
27287
+ _proto.fromData = function fromData(data) {
27288
+ ThreeSpriteComponent.prototype.fromData.call(this, data);
27289
+ var options = data.options;
27290
+ this.updateWithOptions(options);
27291
+ // Text
27292
+ this.updateTexture(false);
27293
+ };
27294
+ _proto.updateWithOptions = function updateWithOptions(options) {
27295
+ // OVERRIDE by mixins
27296
+ };
27297
+ _proto.updateTexture = function updateTexture(flipY) {
27298
+ // OVERRIDE by mixins
27299
+ };
27300
+ return ThreeTextComponent;
27301
+ }(ThreeSpriteComponent);
27302
+ ThreeTextComponent = __decorate([
27303
+ effectsClass(DataType.TextComponent)
27304
+ ], ThreeTextComponent);
27305
+ applyMixins(ThreeTextComponent, [
27306
+ TextComponentBase
27307
+ ]);
27308
+
27153
27309
  setMaxSpriteMeshItemCount(8);
27154
27310
  /**
27155
27311
  * 图片的创建方法
@@ -27192,8 +27348,8 @@ setMaxSpriteMeshItemCount(8);
27192
27348
  */ Mesh.create = function(engine, props) {
27193
27349
  return new ThreeMesh(engine, props);
27194
27350
  };
27195
- var version = "2.0.0-alpha.20";
27351
+ var version = "2.0.0-alpha.22";
27196
27352
  logger.info("THREEJS plugin version: " + version + ".");
27197
27353
 
27198
- export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, AssetLoader, AssetManager, BYTES_TYPE_MAP, 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, Component, Composition, CompositionComponent, CompositionSourceManager, DEFAULT_FONTS, Database, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectsObject, Engine, EventSystem, FilterMode, Float16ArrayWrapper, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, Item, ItemBehaviour, KTXTexture, LineSegments, LinearValue, Material, MaterialDataBlock, MaterialRenderType, Mesh, ObjectBindingTrack, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleSystem, ParticleSystemRenderer, PassTextureCache, PathSegments, PluginSystem, 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, SemanticMap, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderType, ShaderVariant, SpriteColorPlayable, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteLoader, 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, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelinePlayable, TrackAsset, TrackSortWrapper, TrackType, Transform, TransformAnimationPlayable, TransformPlayableAsset, TransformTrack, VFXItem, ValueGetter, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, blend, calculateTranslation, canvasPool, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, compatible_frag as compatibleFrag, compatible_vert as compatibleVert, createCopyShader, createGLContext, createKeyFrameMeta, createShaderWithMacros, createShape, createVFXItem, createValueGetter, decimalEqual, defaultGlobalVolume, defaultPlugins, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTemplateCanvasPool, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getImageItemRenderInfo, 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, isObject, isSceneJSON, isSceneURL, isSceneWithOptions, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, itemFrag, itemFrameFrag, itemVert, 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, pluginLoaderMap, pointOnLine, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, spriteMeshShaderFromFilter, spriteMeshShaderFromRenderInfo, spriteMeshShaderIdFromRenderInfo, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecAssign, vecFill, vecMulCombine, vecNormalize, version, vertexFormatType2GLType };
27354
+ export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, AssetLoader, AssetManager, BYTES_TYPE_MAP, 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, Component, Composition, CompositionComponent, CompositionSourceManager, DEFAULT_FONTS, Database, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectsObject, Engine, EventSystem, FilterMode, Float16ArrayWrapper, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, Item, ItemBehaviour, KTXTexture, LineSegments, LinearValue, Material, MaterialDataBlock, MaterialRenderType, Mesh, ObjectBindingTrack, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleSystem, ParticleSystemRenderer, PassTextureCache, PathSegments, PluginSystem, 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, SemanticMap, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderType, ShaderVariant, SpriteColorPlayable, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteLoader, 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, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, blend, calculateTranslation, canvasPool, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, compatible_frag as compatibleFrag, compatible_vert as compatibleVert, createCopyShader, createGLContext, createKeyFrameMeta, createShaderWithMacros, createShape, createVFXItem, createValueGetter, decimalEqual, defaultGlobalVolume, defaultPlugins, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTemplateCanvasPool, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getImageItemRenderInfo, 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, isObject, isSceneJSON, isSceneURL, isSceneWithOptions, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, itemFrag, itemFrameFrag, itemVert, 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, pluginLoaderMap, pointOnLine, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, spriteMeshShaderFromFilter, spriteMeshShaderFromRenderInfo, spriteMeshShaderIdFromRenderInfo, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecAssign, vecFill, vecMulCombine, vecNormalize, version, vertexFormatType2GLType };
27199
27355
  //# sourceMappingURL=index.mjs.map