@galacean/effects-threejs 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.
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.5.0-alpha.1
6
+ * Version: v2.5.0-alpha.3
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -12869,7 +12869,40 @@ var singleSplits = [
12869
12869
  };
12870
12870
  this.configureMaterial(this.renderer);
12871
12871
  if (baseRenderComponentData.geometry) {
12872
- this.geometry = this.engine.findObject(baseRenderComponentData.geometry);
12872
+ var baseGeometry = this.engine.findObject(baseRenderComponentData.geometry);
12873
+ var uvTransform = baseRenderComponentData.splits && !baseRenderComponentData.textureSheetAnimation ? baseRenderComponentData.splits[0] : singleSplits[0];
12874
+ var x = uvTransform[0];
12875
+ var y = uvTransform[1];
12876
+ var isRotate90 = uvTransform[4];
12877
+ var width = isRotate90 ? uvTransform[3] : uvTransform[2];
12878
+ var height = isRotate90 ? uvTransform[2] : uvTransform[3];
12879
+ var aUV = baseGeometry.getAttributeData("aUV");
12880
+ var aPos = baseGeometry.getAttributeData("aPos");
12881
+ var indices = baseGeometry.getIndexData();
12882
+ if (aUV && aPos && indices) {
12883
+ var vertexCount = aUV.length / 2;
12884
+ for(var i = 0; i < vertexCount; i++){
12885
+ var positionOffset = i * 3;
12886
+ var uvOffset = i * 2;
12887
+ var positionX = aPos[positionOffset];
12888
+ var positionY = aPos[positionOffset + 1];
12889
+ aUV[uvOffset] = (positionX + 0.5) * width + x;
12890
+ aUV[uvOffset + 1] = (positionY + 0.5) * height + y;
12891
+ }
12892
+ this.geometry.setAttributeData("aPos", aPos.slice());
12893
+ this.geometry.setAttributeData("aUV", aUV.slice());
12894
+ this.geometry.setIndexData(indices.slice());
12895
+ this.geometry.setDrawCount(indices.length);
12896
+ }
12897
+ this.geometry.subMeshes.length = 0;
12898
+ for(var _iterator = _create_for_of_iterator_helper_loose(baseGeometry.subMeshes), _step; !(_step = _iterator()).done;){
12899
+ var subMesh = _step.value;
12900
+ this.geometry.subMeshes.push({
12901
+ offset: subMesh.offset,
12902
+ indexCount: subMesh.indexCount,
12903
+ vertexCount: subMesh.vertexCount
12904
+ });
12905
+ }
12873
12906
  } else {
12874
12907
  this.geometry = this.defaultGeometry;
12875
12908
  this.configureDefaultGeometry(this.renderer);
@@ -20232,7 +20265,7 @@ var RuntimeClip = /*#__PURE__*/ function() {
20232
20265
  this.playable.play();
20233
20266
  }
20234
20267
  this.parentMixer.setClipWeight(this.playable, weight);
20235
- var clipTime = parseFloat(clip.toLocalTime(localTime).toFixed(3));
20268
+ var clipTime = clip.toLocalTime(localTime);
20236
20269
  this.playable.setTime(clipTime);
20237
20270
  // 判断动画是否结束
20238
20271
  if (ended) {
@@ -21227,7 +21260,6 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21227
21260
  /**
21228
21261
  * 合成暂停/播放 标识
21229
21262
  */ _this.paused = false;
21230
- _this.lastVideoUpdateTime = 0;
21231
21263
  _this.isEndCalled = false;
21232
21264
  _this._textures = [];
21233
21265
  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;
@@ -21421,11 +21453,12 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21421
21453
  * 前进合成到指定时间
21422
21454
  * @param time - 相对0时刻的时间
21423
21455
  */ _proto.forwardTime = function forwardTime(time) {
21424
- var deltaTime = time * 1000 - this.rootComposition.time * 1000;
21456
+ var deltaTime = time * 1000 - this.time * 1000;
21425
21457
  var reverse = deltaTime < 0;
21426
21458
  var step = 15;
21427
21459
  var t = Math.abs(deltaTime);
21428
21460
  var ss = reverse ? -step : step;
21461
+ // FIXME Update 中可能会修改合成时间,这边需要优化更新逻辑
21429
21462
  for(t; t > step; t -= step){
21430
21463
  this.update(ss);
21431
21464
  }
@@ -21465,13 +21498,13 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21465
21498
  this.callAwake(this.rootItem);
21466
21499
  this.rootItem.beginPlay();
21467
21500
  }
21468
- var dt = parseFloat(this.getUpdateTime(deltaTime * this.speed).toFixed(0));
21469
- this.updateRootComposition(dt / 1000);
21470
- this.updateVideo();
21501
+ var previousCompositionTime = this.time;
21502
+ this.updateCompositionTime(deltaTime * this.speed / 1000);
21503
+ var deltaTimeInMs = (this.time - previousCompositionTime) * 1000;
21471
21504
  // 更新 model-tree-plugin
21472
- this.updatePluginLoaders(deltaTime);
21473
- this.sceneTicking.update.tick(dt);
21474
- this.sceneTicking.lateUpdate.tick(dt);
21505
+ this.updatePluginLoaders(deltaTimeInMs);
21506
+ this.sceneTicking.update.tick(deltaTimeInMs);
21507
+ this.sceneTicking.lateUpdate.tick(deltaTimeInMs);
21475
21508
  this.updateCamera();
21476
21509
  this.prepareRender();
21477
21510
  if (this.isEnded && !this.isEndCalled) {
@@ -21487,14 +21520,6 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21487
21520
  _proto.shouldDispose = function shouldDispose() {
21488
21521
  return this.isEnded && this.rootItem.endBehavior === EndBehavior.destroy && !this.reusable;
21489
21522
  };
21490
- _proto.getUpdateTime = function getUpdateTime(t) {
21491
- var startTimeInMs = this.startTime * 1000;
21492
- var now = this.rootComposition.time * 1000;
21493
- if (t < 0 && now + t < startTimeInMs) {
21494
- return startTimeInMs - now;
21495
- }
21496
- return t;
21497
- };
21498
21523
  _proto.callAwake = function callAwake(item) {
21499
21524
  for(var _iterator = _create_for_of_iterator_helper_loose(item.components), _step; !(_step = _iterator()).done;){
21500
21525
  var component = _step.value;
@@ -21509,20 +21534,6 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21509
21534
  }
21510
21535
  };
21511
21536
  /**
21512
- * 更新视频数据到纹理
21513
- * @override
21514
- */ _proto.updateVideo = function updateVideo() {
21515
- var now = performance.now();
21516
- // 视频固定30帧更新
21517
- if (now - this.lastVideoUpdateTime > 33) {
21518
- var _this_textures;
21519
- ((_this_textures = this.textures) != null ? _this_textures : []).forEach(function(tex) {
21520
- return tex == null ? void 0 : tex.uploadCurrentVideoFrame();
21521
- });
21522
- this.lastVideoUpdateTime = now;
21523
- }
21524
- };
21525
- /**
21526
21537
  * 更新相机
21527
21538
  * @override
21528
21539
  */ _proto.updateCamera = function updateCamera() {
@@ -21539,14 +21550,18 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21539
21550
  };
21540
21551
  /**
21541
21552
  * 更新主合成组件
21542
- */ _proto.updateRootComposition = function updateRootComposition(deltaTime) {
21553
+ */ _proto.updateCompositionTime = function updateCompositionTime(deltaTime) {
21543
21554
  if (this.rootComposition.state === PlayState.Paused || !this.rootComposition.isActiveAndEnabled) {
21544
21555
  return;
21545
21556
  }
21546
- var localTime = parseFloat((this.time + deltaTime - this.rootItem.start).toFixed(3));
21547
- var isEnded = false;
21557
+ // 相对于合成开始时间的时间
21558
+ var localTime = this.time + deltaTime - this.startTime;
21559
+ if (deltaTime < 0 && localTime < 0) {
21560
+ localTime = 0;
21561
+ }
21548
21562
  var duration = this.rootItem.duration;
21549
21563
  var endBehavior = this.rootItem.endBehavior;
21564
+ var isEnded = false;
21550
21565
  if (localTime - duration > 0.001) {
21551
21566
  isEnded = true;
21552
21567
  switch(endBehavior){
@@ -21571,7 +21586,7 @@ var LateUpdateTickData = /*#__PURE__*/ function(TickData) {
21571
21586
  }
21572
21587
  }
21573
21588
  }
21574
- this.rootComposition.time = localTime;
21589
+ this.rootComposition.time = localTime + this.startTime;
21575
21590
  // end state changed, handle onEnd flags
21576
21591
  if (this.isEnded !== isEnded) {
21577
21592
  if (isEnded) {
@@ -22778,6 +22793,7 @@ var SpriteComponent = /*#__PURE__*/ function(BaseRenderComponent) {
22778
22793
  _this.engine.renderErrors.add(e);
22779
22794
  });
22780
22795
  }
22796
+ this.renderer.texture.uploadCurrentVideoFrame();
22781
22797
  }
22782
22798
  if (ta) {
22783
22799
  var _this_material_getVector4;
@@ -26791,10 +26807,10 @@ var SerializationHelper = /*#__PURE__*/ function() {
26791
26807
  }
26792
26808
  var _proto = AssetLoader.prototype;
26793
26809
  _proto.loadGUID = function loadGUID(dataPath) {
26794
- var guid = dataPath.id;
26795
26810
  if (!dataPath) {
26796
26811
  return null;
26797
26812
  }
26813
+ var guid = dataPath.id;
26798
26814
  var effectsObjectData = this.findData(guid);
26799
26815
  var effectsObject;
26800
26816
  if (!effectsObjectData) {
@@ -28374,7 +28390,7 @@ function getStandardSpriteContent(sprite, transform) {
28374
28390
  return ret;
28375
28391
  }
28376
28392
 
28377
- var version$2 = "2.5.0-alpha.1";
28393
+ var version$2 = "2.5.0-alpha.3";
28378
28394
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
28379
28395
  var standardVersion = /^(\d+)\.(\d+)$/;
28380
28396
  var reverseParticle = false;
@@ -31624,7 +31640,7 @@ registerPlugin("sprite", SpriteLoader, VFXItem);
31624
31640
  registerPlugin("particle", ParticleLoader, VFXItem);
31625
31641
  registerPlugin("cal", CalculateLoader, VFXItem);
31626
31642
  registerPlugin("interact", InteractLoader, VFXItem);
31627
- var version$1 = "2.5.0-alpha.1";
31643
+ var version$1 = "2.5.0-alpha.3";
31628
31644
  logger.info("Core version: " + version$1 + ".");
31629
31645
 
31630
31646
  var _obj;
@@ -33226,7 +33242,7 @@ setMaxSpriteMeshItemCount(8);
33226
33242
  */ Mesh.create = function(engine, props) {
33227
33243
  return new ThreeMesh(engine, props);
33228
33244
  };
33229
- var version = "2.5.0-alpha.1";
33245
+ var version = "2.5.0-alpha.3";
33230
33246
  logger.info("THREEJS plugin version: " + version + ".");
33231
33247
 
33232
33248
  export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, BaseRenderComponent, 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, 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, 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, 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, setUniformValue, sortByOrder, index$1 as spec, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };