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

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.
@@ -27,10 +27,10 @@ export declare class BaseRenderComponent extends RendererComponent implements Ma
27
27
  };
28
28
  renderer: ItemRenderer;
29
29
  geometry: Geometry;
30
- readonly maskManager: MaskProcessor;
31
30
  protected visible: boolean;
32
- protected textureSheetAnimation?: spec.TextureSheetAnimation;
33
31
  protected splits: splitsDataType;
32
+ protected textureSheetAnimation?: spec.TextureSheetAnimation;
33
+ protected readonly maskManager: MaskProcessor;
34
34
  /**
35
35
  * 用于点击测试的碰撞器
36
36
  */
@@ -231,7 +231,6 @@ export declare class Composition extends EventEmitter<CompositionEvent<Compositi
231
231
  * 合成暂停/播放 标识
232
232
  */
233
233
  private paused;
234
- private lastVideoUpdateTime;
235
234
  private isEndCalled;
236
235
  private _textures;
237
236
  /**
@@ -357,13 +356,7 @@ export declare class Composition extends EventEmitter<CompositionEvent<Compositi
357
356
  */
358
357
  update(deltaTime: number): void;
359
358
  private shouldDispose;
360
- private getUpdateTime;
361
359
  private callAwake;
362
- /**
363
- * 更新视频数据到纹理
364
- * @override
365
- */
366
- updateVideo(): void;
367
360
  /**
368
361
  * 更新相机
369
362
  * @override
@@ -377,7 +370,7 @@ export declare class Composition extends EventEmitter<CompositionEvent<Compositi
377
370
  /**
378
371
  * 更新主合成组件
379
372
  */
380
- private updateRootComposition;
373
+ private updateCompositionTime;
381
374
  /**
382
375
  * 通过名称获取元素
383
376
  * @param name - 元素名称
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.1
6
+ * Version: v2.5.0-alpha.3
7
7
  */
8
8
 
9
9
  'use strict';
@@ -12871,7 +12871,40 @@ var singleSplits = [
12871
12871
  };
12872
12872
  this.configureMaterial(this.renderer);
12873
12873
  if (baseRenderComponentData.geometry) {
12874
- this.geometry = this.engine.findObject(baseRenderComponentData.geometry);
12874
+ var baseGeometry = this.engine.findObject(baseRenderComponentData.geometry);
12875
+ var uvTransform = baseRenderComponentData.splits && !baseRenderComponentData.textureSheetAnimation ? baseRenderComponentData.splits[0] : singleSplits[0];
12876
+ var x = uvTransform[0];
12877
+ var y = uvTransform[1];
12878
+ var isRotate90 = uvTransform[4];
12879
+ var width = isRotate90 ? uvTransform[3] : uvTransform[2];
12880
+ var height = isRotate90 ? uvTransform[2] : uvTransform[3];
12881
+ var aUV = baseGeometry.getAttributeData("aUV");
12882
+ var aPos = baseGeometry.getAttributeData("aPos");
12883
+ var indices = baseGeometry.getIndexData();
12884
+ if (aUV && aPos && indices) {
12885
+ var vertexCount = aUV.length / 2;
12886
+ for(var i = 0; i < vertexCount; i++){
12887
+ var positionOffset = i * 3;
12888
+ var uvOffset = i * 2;
12889
+ var positionX = aPos[positionOffset];
12890
+ var positionY = aPos[positionOffset + 1];
12891
+ aUV[uvOffset] = (positionX + 0.5) * width + x;
12892
+ aUV[uvOffset + 1] = (positionY + 0.5) * height + y;
12893
+ }
12894
+ this.geometry.setAttributeData("aPos", aPos.slice());
12895
+ this.geometry.setAttributeData("aUV", aUV.slice());
12896
+ this.geometry.setIndexData(indices.slice());
12897
+ this.geometry.setDrawCount(indices.length);
12898
+ }
12899
+ this.geometry.subMeshes.length = 0;
12900
+ for(var _iterator = _create_for_of_iterator_helper_loose(baseGeometry.subMeshes), _step; !(_step = _iterator()).done;){
12901
+ var subMesh = _step.value;
12902
+ this.geometry.subMeshes.push({
12903
+ offset: subMesh.offset,
12904
+ indexCount: subMesh.indexCount,
12905
+ vertexCount: subMesh.vertexCount
12906
+ });
12907
+ }
12875
12908
  } else {
12876
12909
  this.geometry = this.defaultGeometry;
12877
12910
  this.configureDefaultGeometry(this.renderer);
@@ -20234,7 +20267,7 @@ var RuntimeClip = /*#__PURE__*/ function() {
20234
20267
  this.playable.play();
20235
20268
  }
20236
20269
  this.parentMixer.setClipWeight(this.playable, weight);
20237
- var clipTime = parseFloat(clip.toLocalTime(localTime).toFixed(3));
20270
+ var clipTime = clip.toLocalTime(localTime);
20238
20271
  this.playable.setTime(clipTime);
20239
20272
  // 判断动画是否结束
20240
20273
  if (ended) {
@@ -21229,7 +21262,6 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21229
21262
  /**
21230
21263
  * 合成暂停/播放 标识
21231
21264
  */ _this.paused = false;
21232
- _this.lastVideoUpdateTime = 0;
21233
21265
  _this.isEndCalled = false;
21234
21266
  _this._textures = [];
21235
21267
  var _props_reusable = props.reusable, reusable = _props_reusable === void 0 ? false : _props_reusable, _props_speed = props.speed, speed = _props_speed === void 0 ? 1 : _props_speed, _props_baseRenderOrder = props.baseRenderOrder, baseRenderOrder = _props_baseRenderOrder === void 0 ? 0 : _props_baseRenderOrder, renderer = props.renderer, event = props.event, width = props.width, height = props.height, handleItemMessage = props.handleItemMessage;
@@ -21423,11 +21455,12 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21423
21455
  * 前进合成到指定时间
21424
21456
  * @param time - 相对0时刻的时间
21425
21457
  */ _proto.forwardTime = function forwardTime(time) {
21426
- var deltaTime = time * 1000 - this.rootComposition.time * 1000;
21458
+ var deltaTime = time * 1000 - this.time * 1000;
21427
21459
  var reverse = deltaTime < 0;
21428
21460
  var step = 15;
21429
21461
  var t = Math.abs(deltaTime);
21430
21462
  var ss = reverse ? -step : step;
21463
+ // FIXME Update 中可能会修改合成时间,这边需要优化更新逻辑
21431
21464
  for(t; t > step; t -= step){
21432
21465
  this.update(ss);
21433
21466
  }
@@ -21467,13 +21500,13 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21467
21500
  this.callAwake(this.rootItem);
21468
21501
  this.rootItem.beginPlay();
21469
21502
  }
21470
- var dt = parseFloat(this.getUpdateTime(deltaTime * this.speed).toFixed(0));
21471
- this.updateRootComposition(dt / 1000);
21472
- this.updateVideo();
21503
+ var previousCompositionTime = this.time;
21504
+ this.updateCompositionTime(deltaTime * this.speed / 1000);
21505
+ var deltaTimeInMs = (this.time - previousCompositionTime) * 1000;
21473
21506
  // 更新 model-tree-plugin
21474
- this.updatePluginLoaders(deltaTime);
21475
- this.sceneTicking.update.tick(dt);
21476
- this.sceneTicking.lateUpdate.tick(dt);
21507
+ this.updatePluginLoaders(deltaTimeInMs);
21508
+ this.sceneTicking.update.tick(deltaTimeInMs);
21509
+ this.sceneTicking.lateUpdate.tick(deltaTimeInMs);
21477
21510
  this.updateCamera();
21478
21511
  this.prepareRender();
21479
21512
  if (this.isEnded && !this.isEndCalled) {
@@ -21489,14 +21522,6 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21489
21522
  _proto.shouldDispose = function shouldDispose() {
21490
21523
  return this.isEnded && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
21491
21524
  };
21492
- _proto.getUpdateTime = function getUpdateTime(t) {
21493
- var startTimeInMs = this.startTime * 1000;
21494
- var now = this.rootComposition.time * 1000;
21495
- if (t < 0 && now + t < startTimeInMs) {
21496
- return startTimeInMs - now;
21497
- }
21498
- return t;
21499
- };
21500
21525
  _proto.callAwake = function callAwake(item) {
21501
21526
  for(var _iterator = _create_for_of_iterator_helper_loose(item.components), _step; !(_step = _iterator()).done;){
21502
21527
  var component = _step.value;
@@ -21511,20 +21536,6 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21511
21536
  }
21512
21537
  };
21513
21538
  /**
21514
- * 更新视频数据到纹理
21515
- * @override
21516
- */ _proto.updateVideo = function updateVideo() {
21517
- var now = performance.now();
21518
- // 视频固定30帧更新
21519
- if (now - this.lastVideoUpdateTime > 33) {
21520
- var _this_textures;
21521
- ((_this_textures = this.textures) != null ? _this_textures : []).forEach(function(tex) {
21522
- return tex == null ? void 0 : tex.uploadCurrentVideoFrame();
21523
- });
21524
- this.lastVideoUpdateTime = now;
21525
- }
21526
- };
21527
- /**
21528
21539
  * 更新相机
21529
21540
  * @override
21530
21541
  */ _proto.updateCamera = function updateCamera() {
@@ -21541,14 +21552,18 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21541
21552
  };
21542
21553
  /**
21543
21554
  * 更新主合成组件
21544
- */ _proto.updateRootComposition = function updateRootComposition(deltaTime) {
21555
+ */ _proto.updateCompositionTime = function updateCompositionTime(deltaTime) {
21545
21556
  if (this.rootComposition.state === PlayState.Paused || !this.rootComposition.isActiveAndEnabled) {
21546
21557
  return;
21547
21558
  }
21548
- var localTime = parseFloat((this.time + deltaTime - this.rootItem.start).toFixed(3));
21549
- var isEnded = false;
21559
+ // 相对于合成开始时间的时间
21560
+ var localTime = this.time + deltaTime - this.startTime;
21561
+ if (deltaTime < 0 && localTime < 0) {
21562
+ localTime = 0;
21563
+ }
21550
21564
  var duration = this.rootItem.duration;
21551
21565
  var endBehavior = this.rootItem.endBehavior;
21566
+ var isEnded = false;
21552
21567
  if (localTime - duration > 0.001) {
21553
21568
  isEnded = true;
21554
21569
  switch(endBehavior){
@@ -21573,7 +21588,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21573
21588
  }
21574
21589
  }
21575
21590
  }
21576
- this.rootComposition.time = localTime;
21591
+ this.rootComposition.time = localTime + this.startTime;
21577
21592
  // end state changed, handle onEnd flags
21578
21593
  if (this.isEnded !== isEnded) {
21579
21594
  if (isEnded) {
@@ -22780,6 +22795,7 @@ exports.SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
22780
22795
  _this.engine.renderErrors.add(e);
22781
22796
  });
22782
22797
  }
22798
+ this.renderer.texture.uploadCurrentVideoFrame();
22783
22799
  }
22784
22800
  if (ta) {
22785
22801
  var _this_material_getVector4;
@@ -26793,10 +26809,10 @@ var SerializationHelper = /*#__PURE__*/ function() {
26793
26809
  }
26794
26810
  var _proto = AssetLoader.prototype;
26795
26811
  _proto.loadGUID = function loadGUID(dataPath) {
26796
- var guid = dataPath.id;
26797
26812
  if (!dataPath) {
26798
26813
  return null;
26799
26814
  }
26815
+ var guid = dataPath.id;
26800
26816
  var effectsObjectData = this.findData(guid);
26801
26817
  var effectsObject;
26802
26818
  if (!effectsObjectData) {
@@ -28376,7 +28392,7 @@ function getStandardSpriteContent(sprite, transform) {
28376
28392
  return ret;
28377
28393
  }
28378
28394
 
28379
- var version$1 = "2.5.0-alpha.1";
28395
+ var version$1 = "2.5.0-alpha.3";
28380
28396
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
28381
28397
  var standardVersion = /^(\d+)\.(\d+)$/;
28382
28398
  var reverseParticle = false;
@@ -31626,7 +31642,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem);
31626
31642
  registerPlugin("particle", ParticleLoader, exports.VFXItem);
31627
31643
  registerPlugin("cal", CalculateLoader, exports.VFXItem);
31628
31644
  registerPlugin("interact", InteractLoader, exports.VFXItem);
31629
- var version = "2.5.0-alpha.1";
31645
+ var version = "2.5.0-alpha.3";
31630
31646
  logger.info("Core version: " + version + ".");
31631
31647
 
31632
31648
  exports.AbstractPlugin = AbstractPlugin;