@galacean/engine-core 1.3.0-alpha.3 → 1.3.0-beta.6

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.
Files changed (48) hide show
  1. package/dist/main.js +180 -70
  2. package/dist/main.js.map +1 -1
  3. package/dist/miniprogram.js +180 -70
  4. package/dist/module.js +177 -71
  5. package/dist/module.js.map +1 -1
  6. package/package.json +3 -3
  7. package/types/Entity.d.ts +4 -1
  8. package/types/Renderer.d.ts +4 -1
  9. package/types/animation/index.d.ts +3 -0
  10. package/types/asset/ResourceManager.d.ts +3 -1
  11. package/types/mesh/SkinnedMeshRenderer.d.ts +1 -1
  12. package/types/particle/ParticleRenderer.d.ts +1 -1
  13. package/types/utils/SafeLoopArray.d.ts +5 -0
  14. package/types/utils/index.d.ts +1 -0
  15. package/types/2d/assembler/IAssembler.d.ts +0 -1
  16. package/types/2d/data/VertexData2D.d.ts +0 -1
  17. package/types/2d/text/CharRenderData.d.ts +0 -1
  18. package/types/2d/text/CharRenderDataPool.d.ts +0 -1
  19. package/types/RenderPipeline/Basic2DBatcher.d.ts +0 -19
  20. package/types/RenderPipeline/ClassPool.d.ts +0 -19
  21. package/types/RenderPipeline/DynamicGeometryData.d.ts +0 -1
  22. package/types/RenderPipeline/DynamicGeometryDataManager.d.ts +0 -1
  23. package/types/RenderPipeline/IPoolElement.d.ts +0 -3
  24. package/types/RenderPipeline/RenderData.d.ts +0 -14
  25. package/types/RenderPipeline/RenderData2D.d.ts +0 -14
  26. package/types/RenderPipeline/RenderPass.d.ts +0 -55
  27. package/types/RenderPipeline/SpriteBatcher.d.ts +0 -1
  28. package/types/RenderPipeline/SpriteMaskBatcher.d.ts +0 -11
  29. package/types/RenderPipeline/SpriteMaskManager.d.ts +0 -1
  30. package/types/RenderPipeline/SpriteMaskRenderData.d.ts +0 -12
  31. package/types/RenderPipeline/SpriteRenderData.d.ts +0 -14
  32. package/types/RenderPipeline/TextRenderData.d.ts +0 -8
  33. package/types/RenderPipeline/enums/ForceUploadShaderDataFlag.d.ts +0 -15
  34. package/types/RenderPipeline/enums/RenderDataUsage.d.ts +0 -13
  35. package/types/animation/AnimatorTransition.d.ts +0 -14
  36. package/types/input/pointer/PointerEvent.d.ts +0 -4
  37. package/types/input/pointer/PointerEventType.d.ts +0 -7
  38. package/types/renderingHardwareInterface/IHardwareRenderer.d.ts +0 -6
  39. package/types/ui/Image.d.ts +0 -38
  40. package/types/ui/RedBlackTree.d.ts +0 -2
  41. package/types/ui/UICanvas.d.ts +0 -55
  42. package/types/ui/UIRenderer.d.ts +0 -14
  43. package/types/ui/UITransform.d.ts +0 -20
  44. package/types/ui/enums/BlockingObjects.d.ts +0 -6
  45. package/types/ui/enums/CanvasRenderMode.d.ts +0 -8
  46. package/types/ui/enums/ResolutionAdaptationStrategy.d.ts +0 -10
  47. package/types/ui/index.d.ts +0 -6
  48. package/types/utils/Pool.d.ts +0 -12
package/dist/main.js CHANGED
@@ -3413,7 +3413,7 @@ var rotation_over_lifetime_module = "#define GLSLIFY 1\n#if defined(RENDERER_ROL
3413
3413
 
3414
3414
  var size_over_lifetime_module = "#define GLSLIFY 1\n#ifdef RENDERER_SOL_CURVE_MODE\nuniform vec2 renderer_SOLMaxCurveX[4];\n#ifdef RENDERER_SOL_IS_SEPARATE\nuniform vec2 renderer_SOLMaxCurveY[4];uniform vec2 renderer_SOLMaxCurveZ[4];\n#endif\n#ifdef RENDERER_SOL_IS_RANDOM_TWO\nuniform vec2 renderer_SOLMinCurveX[4];\n#ifdef RENDERER_SOL_IS_SEPARATE\nuniform vec2 renderer_SOLMinCurveY[4];uniform vec2 renderer_SOLMinCurveZ[4];\n#endif\n#endif\n#endif\nvec2 computeParticleSizeBillboard(in vec2 size,in float normalizedAge){\n#ifdef RENDERER_SOL_CURVE_MODE\nfloat lifeSizeX=evaluateParticleCurve(renderer_SOLMaxCurveX,normalizedAge);\n#ifdef RENDERER_SOL_IS_RANDOM_TWO\nlifeSizeX=mix(evaluateParticleCurve(renderer_SOLMinCurveX,normalizedAge),lifeSizeX,a_Random0.z);\n#endif\n#ifdef RENDERER_SOL_IS_SEPARATE\nfloat lifeSizeY=evaluateParticleCurve(renderer_SOLMaxCurveY,normalizedAge);\n#ifdef RENDERER_SOL_IS_RANDOM_TWO\nlifeSizeY=mix(evaluateParticleCurve(renderer_SOLMinCurveY,normalizedAge),lifeSizeY,a_Random0.z);\n#endif\nsize*=vec2(lifeSizeX,lifeSizeY);\n#else\nsize*=lifeSizeX;\n#endif\n#endif\nreturn size;}\n#ifdef RENDERER_MODE_MESH\nvec3 computeParticleSizeMesh(in vec3 size,in float normalizedAge){\n#ifdef RENDERER_SOL_CURVE\nsize*=evaluateParticleCurve(renderer_SOLMaxCurveX,normalizedAge);\n#endif\n#ifdef RENDERER_SOL_RANDOM_CURVES\nsize*=mix(evaluateParticleCurve(renderer_SOLMaxCurveX,normalizedAge),evaluateParticleCurve(u_SOLSizeGradientMax,normalizedAge),a_Random0.z);\n#endif\n#ifdef RENDERER_SOL_CURVE_SEPARATE\nsize*=vec3(evaluateParticleCurve(renderer_SOLMinCurveX,normalizedAge),evaluateParticleCurve(renderer_SOLMinCurveY,normalizedAge),evaluateParticleCurve(renderer_SOLMinCurveZ,normalizedAge));\n#endif\n#ifdef RENDERER_SOL_RANDOM_CURVES_SEPARATE\nsize*=vec3(mix(evaluateParticleCurve(renderer_SOLMinCurveX,normalizedAge),evaluateParticleCurve(renderer_SOLMaxCurveX,normalizedAge),a_Random0.z),mix(evaluateParticleCurve(renderer_SOLMinCurveY,normalizedAge),evaluateParticleCurve(renderer_SOLMaxCurveY,normalizedAge),a_Random0.z),mix(evaluateParticleCurve(renderer_SOLMinCurveZ,normalizedAge),evaluateParticleCurve(renderer_SOLMaxCurveZ,normalizedAge),a_Random0.z));\n#endif\nreturn size;}\n#endif\n"; // eslint-disable-line
3415
3415
 
3416
- var color_over_lifetime_module = "#define GLSLIFY 1\n#if defined(RENDERER_COL_GRADIENT) || defined(RENDERER_COL_RANDOM_GRADIENTS)\nuniform vec4 renderer_COLMaxGradientColor[4];uniform vec2 renderer_COLMaxGradientAlpha[4];\n#ifdef RENDERER_COL_RANDOM_GRADIENTS\nuniform vec4 renderer_COLMinGradientColor[4];uniform vec2 renderer_COLMinGradientAlpha[4];\n#endif\nuniform vec4 renderer_COLGradientKeysMaxTime;\n#endif\n#if defined(RENDERER_COL_GRADIENT) || defined(RENDERER_COL_RANDOM_GRADIENTS)\nvec4 evaluateParticleGradient(in vec4 colorKeys[4],in float colorKeysMaxTime,in vec2 alphaKeys[4],in float alphaKeysMaxTime,in float normalizedAge){vec4 value;float alphaAge=min(normalizedAge,alphaKeysMaxTime);for(int i=0;i<4;i++){vec2 key=alphaKeys[i];float time=key.x;if(alphaAge<=time){if(i==0){value.a=colorKeys[0].y;}else{vec2 lastKey=alphaKeys[i-1];float lastTime=lastKey.x;float age=(alphaAge-lastTime)/(time-lastTime);value.a=mix(lastKey.y,key.y,age);}break;}}float colorAge=min(normalizedAge,colorKeysMaxTime);for(int i=0;i<4;i++){vec4 key=colorKeys[i];float time=key.x;if(colorAge<=time){if(i==0){value.rgb=colorKeys[0].yzw;}else{vec4 lastKey=colorKeys[i-1];float lastTime=lastKey.x;float age=(colorAge-lastTime)/(time-lastTime);value.rgb=mix(lastKey.yzw,key.yzw,age);}break;}}return value;}\n#endif\nvec4 computeParticleColor(in vec4 color,in float normalizedAge){\n#if defined(RENDERER_COL_GRADIENT) || defined(RENDERER_COL_RANDOM_GRADIENTS)\nvec4 gradientColor=evaluateParticleGradient(renderer_COLMaxGradientColor,renderer_COLGradientKeysMaxTime.z,renderer_COLMaxGradientAlpha,renderer_COLGradientKeysMaxTime.w,normalizedAge);\n#endif\n#ifdef RENDERER_COL_RANDOM_GRADIENTS\ngradientColor=mix(evaluateParticleGradient(renderer_COLMinGradientColor,renderer_COLGradientKeysMaxTime.x,renderer_COLMinGradientAlpha,renderer_COLGradientKeysMaxTime.y,normalizedAge),gradientColor,a_Random0.y);\n#endif\n#if defined(RENDERER_COL_GRADIENT) || defined(RENDERER_COL_RANDOM_GRADIENTS)\ncolor*=gradientColor;\n#endif\nreturn color;}"; // eslint-disable-line
3416
+ var color_over_lifetime_module = "#define GLSLIFY 1\n#if defined(RENDERER_COL_GRADIENT) || defined(RENDERER_COL_RANDOM_GRADIENTS)\nuniform vec4 renderer_COLMaxGradientColor[4];uniform vec2 renderer_COLMaxGradientAlpha[4];\n#ifdef RENDERER_COL_RANDOM_GRADIENTS\nuniform vec4 renderer_COLMinGradientColor[4];uniform vec2 renderer_COLMinGradientAlpha[4];\n#endif\nuniform vec4 renderer_COLGradientKeysMaxTime;\n#endif\n#if defined(RENDERER_COL_GRADIENT) || defined(RENDERER_COL_RANDOM_GRADIENTS)\nvec4 evaluateParticleGradient(in vec4 colorKeys[4],in float colorKeysMaxTime,in vec2 alphaKeys[4],in float alphaKeysMaxTime,in float normalizedAge){vec4 value;float alphaAge=min(normalizedAge,alphaKeysMaxTime);for(int i=0;i<4;i++){vec2 key=alphaKeys[i];float time=key.x;if(alphaAge<=time){if(i==0){value.a=alphaKeys[0].y;}else{vec2 lastKey=alphaKeys[i-1];float lastTime=lastKey.x;float age=(alphaAge-lastTime)/(time-lastTime);value.a=mix(lastKey.y,key.y,age);}break;}}float colorAge=min(normalizedAge,colorKeysMaxTime);for(int i=0;i<4;i++){vec4 key=colorKeys[i];float time=key.x;if(colorAge<=time){if(i==0){value.rgb=colorKeys[0].yzw;}else{vec4 lastKey=colorKeys[i-1];float lastTime=lastKey.x;float age=(colorAge-lastTime)/(time-lastTime);value.rgb=mix(lastKey.yzw,key.yzw,age);}break;}}return value;}\n#endif\nvec4 computeParticleColor(in vec4 color,in float normalizedAge){\n#if defined(RENDERER_COL_GRADIENT) || defined(RENDERER_COL_RANDOM_GRADIENTS)\nvec4 gradientColor=evaluateParticleGradient(renderer_COLMaxGradientColor,renderer_COLGradientKeysMaxTime.z,renderer_COLMaxGradientAlpha,renderer_COLGradientKeysMaxTime.w,normalizedAge);\n#endif\n#ifdef RENDERER_COL_RANDOM_GRADIENTS\ngradientColor=mix(evaluateParticleGradient(renderer_COLMinGradientColor,renderer_COLGradientKeysMaxTime.x,renderer_COLMinGradientAlpha,renderer_COLGradientKeysMaxTime.y,normalizedAge),gradientColor,a_Random0.y);\n#endif\n#if defined(RENDERER_COL_GRADIENT) || defined(RENDERER_COL_RANDOM_GRADIENTS)\ncolor*=gradientColor;\n#endif\nreturn color;}"; // eslint-disable-line
3417
3417
 
3418
3418
  var texture_sheet_animation_module = "#define GLSLIFY 1\n#if defined(RENDERER_TSA_FRAME_CURVE) || defined(RENDERER_TSA_FRAME_RANDOM_CURVES)\nuniform float renderer_TSACycles;uniform vec3 renderer_TSATillingParams;uniform vec2 renderer_TSAFrameMaxCurve[4];\n#endif\n#ifdef RENDERER_TSA_FRAME_RANDOM_CURVES\nuniform vec2 renderer_TSAFrameMinCurve[4];\n#endif\nvec2 computeParticleUV(in vec2 uv,in float normalizedAge){\n#if defined(RENDERER_TSA_FRAME_CURVE) || defined(RENDERER_TSA_FRAME_RANDOM_CURVES)\nfloat scaledNormalizedAge=normalizedAge*renderer_TSACycles;float cycleNormalizedAge=scaledNormalizedAge-floor(scaledNormalizedAge);float normalizedFrame=evaluateParticleCurve(renderer_TSAFrameMaxCurve,cycleNormalizedAge);\n#ifdef RENDERER_TSA_FRAME_RANDOM_CURVES\nnormalizedFrame=mix(evaluateParticleCurve(renderer_TSAFrameMinCurve,cycleNormalizedAge),normalizedFrame,a_Random1.x);\n#endif\nfloat frame=floor(normalizedFrame*renderer_TSATillingParams.z);float totalULength=frame*renderer_TSATillingParams.x;float floorTotalULength=floor(totalULength);uv.x+=totalULength-floorTotalULength;uv.y+=floorTotalULength*renderer_TSATillingParams.y;\n#endif\nreturn uv;}"; // eslint-disable-line
3419
3419
 
@@ -5984,6 +5984,9 @@ exports.Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
5984
5984
  /**
5985
5985
  * @internal
5986
5986
  */ _proto._prepareRender = function _prepareRender(context) {
5987
+ if (this._renderFrameCount !== this.engine.time.frameCount) {
5988
+ this._update(context);
5989
+ }
5987
5990
  var virtualCamera = context.virtualCamera;
5988
5991
  var cameraPosition = virtualCamera.position;
5989
5992
  var boundsCenter = this.bounds.getCenter(exports.Renderer._tempVector0);
@@ -5993,10 +5996,6 @@ exports.Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
5993
5996
  } else {
5994
5997
  this._distanceForSort = engineMath.Vector3.distanceSquared(boundsCenter, cameraPosition);
5995
5998
  }
5996
- // Update once per frame per renderer, not influenced by batched
5997
- if (this._renderFrameCount !== this.engine.time.frameCount) {
5998
- this._updateRendererShaderData(context);
5999
- }
6000
5999
  this._render(context);
6001
6000
  // union camera global macro and renderer macro.
6002
6001
  ShaderMacroCollection.unionCollection(context.camera._globalShaderMacro, this.shaderData._macroCollection, this._globalShaderMacro);
@@ -6050,7 +6049,9 @@ exports.Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
6050
6049
  /**
6051
6050
  * @internal
6052
6051
  */ _proto._batch = function _batch(elementA, elementB) {};
6053
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
6052
+ /**
6053
+ * Update once per frame per renderer, not influenced by batched.
6054
+ */ _proto._update = function _update(context) {
6054
6055
  var layer = this.entity.layer;
6055
6056
  this._rendererLayer.set(layer & 65535, layer >>> 16 & 65535, 0, 0);
6056
6057
  };
@@ -10320,14 +10321,17 @@ var /**
10320
10321
  var replacementSubShaders = replacementShader.subShaders;
10321
10322
  var replacementTag = context.replacementTag;
10322
10323
  if (replacementTag) {
10324
+ var replacementSuccess = false;
10323
10325
  for(var j = 0, m = replacementSubShaders.length; j < m; j++){
10324
10326
  var subShader = replacementSubShaders[j];
10325
10327
  if (subShader.getTagValue(replacementTag) === materialSubShader.getTagValue(replacementTag)) {
10326
10328
  this.pushRenderElementByType(renderElement, subRenderElement, subShader.passes, renderStates);
10327
- break;
10329
+ replacementSuccess = true;
10328
10330
  }
10329
10331
  }
10330
- context.replacementFailureStrategy === exports.ReplacementFailureStrategy.KeepOriginalShader && this.pushRenderElementByType(renderElement, subRenderElement, materialSubShader.passes, renderStates);
10332
+ if (!replacementSuccess && context.replacementFailureStrategy === exports.ReplacementFailureStrategy.KeepOriginalShader) {
10333
+ this.pushRenderElementByType(renderElement, subRenderElement, materialSubShader.passes, renderStates);
10334
+ }
10331
10335
  } else {
10332
10336
  this.pushRenderElementByType(renderElement, subRenderElement, replacementSubShaders[0].passes, renderStates);
10333
10337
  }
@@ -10911,7 +10915,7 @@ var /**
10911
10915
  if (info) {
10912
10916
  return info;
10913
10917
  }
10914
- info = TextUtils._measureFontOrChar(fontString);
10918
+ info = TextUtils._measureFontOrChar(fontString, TextUtils._measureString, false);
10915
10919
  fontSizeInfoCache[fontString] = info;
10916
10920
  return info;
10917
10921
  };
@@ -10932,7 +10936,7 @@ var /**
10932
10936
  return str;
10933
10937
  };
10934
10938
  TextUtils.measureChar = function measureChar(char, fontString) {
10935
- return TextUtils._measureFontOrChar(fontString, char);
10939
+ return TextUtils._measureFontOrChar(fontString, char, true);
10936
10940
  };
10937
10941
  TextUtils.measureTextWithWrap = function measureTextWithWrap(renderer) {
10938
10942
  var subFont = renderer._getSubFont();
@@ -11151,15 +11155,15 @@ var /**
11151
11155
  };
11152
11156
  /**
11153
11157
  * @internal
11154
- */ TextUtils._measureFontOrChar = function _measureFontOrChar(fontString, char) {
11155
- if (char === void 0) char = "";
11158
+ */ TextUtils._measureFontOrChar = function _measureFontOrChar(fontString, measureString, isChar) {
11156
11159
  var _TextUtils_textContext = TextUtils.textContext(), canvas = _TextUtils_textContext.canvas, context = _TextUtils_textContext.context;
11157
11160
  context.font = fontString;
11158
- var measureString = char || TextUtils._measureString;
11159
11161
  // Safari gets data confusion through getImageData when the canvas width is not an integer.
11160
11162
  // The measure text width of some special invisible characters may be 0, so make sure the width is at least 1.
11161
11163
  // @todo: Text layout may vary from standard and not support emoji.
11162
- var width = Math.max(1, Math.round(context.measureText(measureString).width));
11164
+ var textMetrics = context.measureText(measureString);
11165
+ // In some case (ex: " "), actualBoundingBoxRight and actualBoundingBoxLeft will be 0, so use width.
11166
+ var width = Math.max(1, Math.round(textMetrics.actualBoundingBoxRight - textMetrics.actualBoundingBoxLeft || textMetrics.width));
11163
11167
  var baseline = Math.ceil(context.measureText(TextUtils._measureBaseline).width);
11164
11168
  var height = baseline * TextUtils._heightMultiplier;
11165
11169
  baseline = TextUtils._baselineMultiplier * baseline | 0;
@@ -11204,12 +11208,7 @@ var /**
11204
11208
  descent = bottom - baseline + 1;
11205
11209
  size = ascent + descent;
11206
11210
  }
11207
- var sizeInfo = {
11208
- ascent: ascent,
11209
- descent: descent,
11210
- size: size
11211
- };
11212
- if (char) {
11211
+ if (isChar) {
11213
11212
  var data = null;
11214
11213
  if (size > 0) {
11215
11214
  var lineIntegerW = integerW * 4;
@@ -11217,7 +11216,7 @@ var /**
11217
11216
  data = new Uint8Array(colorData.buffer, top * lineIntegerW, size * lineIntegerW);
11218
11217
  }
11219
11218
  return {
11220
- char: char,
11219
+ char: measureString,
11221
11220
  x: 0,
11222
11221
  y: 0,
11223
11222
  w: width,
@@ -11237,7 +11236,11 @@ var /**
11237
11236
  data: data
11238
11237
  };
11239
11238
  } else {
11240
- return sizeInfo;
11239
+ return {
11240
+ ascent: ascent,
11241
+ descent: descent,
11242
+ size: size
11243
+ };
11241
11244
  }
11242
11245
  };
11243
11246
  /**
@@ -17430,6 +17433,38 @@ var PrimitiveType;
17430
17433
  PrimitiveMesh._spherePoleIdx = 0;
17431
17434
  })();
17432
17435
 
17436
+ function _is_native_reflect_construct() {
17437
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
17438
+ if (Reflect.construct.sham) return false;
17439
+ if (typeof Proxy === "function") return true;
17440
+
17441
+ try {
17442
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
17443
+
17444
+ return true;
17445
+ } catch (e) {
17446
+ return false;
17447
+ }
17448
+ }
17449
+
17450
+ function _construct(Parent, args, Class) {
17451
+ if (_is_native_reflect_construct()) _construct = Reflect.construct;
17452
+ else {
17453
+ _construct = function construct(Parent, args, Class) {
17454
+ var a = [null];
17455
+ a.push.apply(a, args);
17456
+ var Constructor = Function.bind.apply(Parent, a);
17457
+ var instance = new Constructor();
17458
+
17459
+ if (Class) _set_prototype_of(instance, Class.prototype);
17460
+
17461
+ return instance;
17462
+ };
17463
+ }
17464
+
17465
+ return _construct.apply(null, arguments);
17466
+ }
17467
+
17433
17468
  var ComponentCloner = /*#__PURE__*/ function() {
17434
17469
  function ComponentCloner() {}
17435
17470
  /**
@@ -17477,10 +17512,14 @@ var ComponentCloner = /*#__PURE__*/ function() {
17477
17512
  /**
17478
17513
  * Add component based on the component type.
17479
17514
  * @param type - The type of the component
17515
+ * @param args - The arguments of the component
17480
17516
  * @returns The component which has been added
17481
17517
  */ _proto.addComponent = function addComponent(type) {
17518
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17519
+ args[_key - 1] = arguments[_key];
17520
+ }
17482
17521
  ComponentsDependencies._addCheck(this, type);
17483
- var component = new type(this);
17522
+ var component = _construct(type, [].concat(this, args));
17484
17523
  this._components.push(component);
17485
17524
  component._setActive(true, ActiveChangeFlag.All);
17486
17525
  return component;
@@ -18260,7 +18299,7 @@ var SkinUpdateFlag;
18260
18299
  }
18261
18300
  this._blendShapeWeights && (target._blendShapeWeights = this._blendShapeWeights.slice());
18262
18301
  };
18263
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
18302
+ _proto._update = function _update(context) {
18264
18303
  var _skin, _skin1;
18265
18304
  var skin = this.skin;
18266
18305
  if (((_skin = skin) == null ? void 0 : _skin.bones.length) > 0) {
@@ -18309,7 +18348,7 @@ var SkinUpdateFlag;
18309
18348
  this._jointTexture.setPixelBuffer(skin._skinMatrices);
18310
18349
  }
18311
18350
  }
18312
- MeshRenderer1.prototype._updateRendererShaderData.call(this, context);
18351
+ MeshRenderer1.prototype._update.call(this, context);
18313
18352
  };
18314
18353
  /**
18315
18354
  * @internal
@@ -19006,6 +19045,15 @@ var SafeLoopArray = /*#__PURE__*/ function() {
19006
19045
  this._loopArrayDirty = true;
19007
19046
  };
19008
19047
  /**
19048
+ * Remove item from array that pass the specified comparison function.
19049
+ * @param filter - The comparison function
19050
+ */ _proto.findAndRemove = function findAndRemove(filter) {
19051
+ var array = this._array;
19052
+ for(var i = array.length - 1; i >= 0; i--){
19053
+ filter(array[i]) && this.removeByIndex(i);
19054
+ }
19055
+ };
19056
+ /**
19009
19057
  * The index of the item.
19010
19058
  * @param item - The item which want to get the index
19011
19059
  * @returns Index of the item
@@ -19439,17 +19487,35 @@ var /** @internal */ PromiseState;
19439
19487
  };
19440
19488
  /**
19441
19489
  * @internal
19442
- */ _proto._onSubAssetSuccess = function _onSubAssetSuccess(assetURL, value) {
19443
- var _this__subAssetPromiseCallbacks_assetURL;
19444
- (_this__subAssetPromiseCallbacks_assetURL = this._subAssetPromiseCallbacks[assetURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetURL.resolve(value);
19445
- delete this._subAssetPromiseCallbacks[assetURL];
19490
+ */ _proto._onSubAssetSuccess = function _onSubAssetSuccess(assetBaseURL, assetSubPath, value) {
19491
+ var _this__subAssetPromiseCallbacks_assetBaseURL;
19492
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19493
+ if (subPromiseCallback) {
19494
+ // Already resolved
19495
+ subPromiseCallback.resolve(value);
19496
+ } else {
19497
+ var // Pending
19498
+ _this__subAssetPromiseCallbacks, _assetBaseURL;
19499
+ ((_this__subAssetPromiseCallbacks = this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19500
+ resolve: value
19501
+ };
19502
+ }
19446
19503
  };
19447
19504
  /**
19448
19505
  * @internal
19449
- */ _proto._onSubAssetFail = function _onSubAssetFail(assetURL, value) {
19450
- var _this__subAssetPromiseCallbacks_assetURL;
19451
- (_this__subAssetPromiseCallbacks_assetURL = this._subAssetPromiseCallbacks[assetURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetURL.reject(value);
19452
- delete this._subAssetPromiseCallbacks[assetURL];
19506
+ */ _proto._onSubAssetFail = function _onSubAssetFail(assetBaseURL, assetSubPath, value) {
19507
+ var _this__subAssetPromiseCallbacks_assetBaseURL;
19508
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19509
+ if (subPromiseCallback) {
19510
+ // Already rejected
19511
+ subPromiseCallback.reject(value);
19512
+ } else {
19513
+ var // Pending
19514
+ _this__subAssetPromiseCallbacks, _assetBaseURL;
19515
+ ((_this__subAssetPromiseCallbacks = this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19516
+ reject: value
19517
+ };
19518
+ }
19453
19519
  };
19454
19520
  /**
19455
19521
  * @internal
@@ -19594,8 +19660,21 @@ var /** @internal */ PromiseState;
19594
19660
  if (!loader) {
19595
19661
  throw "loader not found: " + item.type;
19596
19662
  }
19597
- // Load asset
19663
+ // Check sub asset
19664
+ if (queryPath) {
19665
+ // Check whether load main asset
19666
+ var mainPromise = loadingPromises[assetBaseURL] || this._loadMainAsset(loader, item, assetBaseURL);
19667
+ mainPromise.catch(function(e) {
19668
+ _this._onSubAssetFail(assetBaseURL, queryPath, e);
19669
+ });
19670
+ return this._createSubAssetPromiseCallback(assetBaseURL, assetURL, queryPath);
19671
+ }
19672
+ return this._loadMainAsset(loader, item, assetBaseURL);
19673
+ };
19674
+ _proto._loadMainAsset = function _loadMainAsset(loader, item, assetBaseURL) {
19675
+ var _this = this;
19598
19676
  item.url = assetBaseURL;
19677
+ var loadingPromises = this._loadingPromises;
19599
19678
  var promise = loader.load(item, this);
19600
19679
  loadingPromises[assetBaseURL] = promise;
19601
19680
  promise.then(function(resource) {
@@ -19603,32 +19682,46 @@ var /** @internal */ PromiseState;
19603
19682
  _this._addAsset(assetBaseURL, resource);
19604
19683
  }
19605
19684
  delete loadingPromises[assetBaseURL];
19685
+ _this._releaseSubAssetPromiseCallback(assetBaseURL);
19606
19686
  }, function() {
19607
- return delete loadingPromises[assetBaseURL];
19687
+ delete loadingPromises[assetBaseURL];
19688
+ _this._releaseSubAssetPromiseCallback(assetBaseURL);
19608
19689
  });
19609
- if (queryPath) {
19610
- var subPromise = new AssetPromise(function(resolve, reject) {
19611
- _this._pushSubAssetPromiseCallback(assetURL, resolve, reject);
19612
- });
19613
- loadingPromises[assetURL] = subPromise;
19614
- subPromise.then(function() {
19690
+ return promise;
19691
+ };
19692
+ _proto._createSubAssetPromiseCallback = function _createSubAssetPromiseCallback(assetBaseURL, assetURL, assetSubPath) {
19693
+ var _this = this;
19694
+ var _this__subAssetPromiseCallbacks_assetBaseURL, _subPromiseCallback, _subPromiseCallback1;
19695
+ var loadingPromises = this._loadingPromises;
19696
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19697
+ var resolvedValue = (_subPromiseCallback = subPromiseCallback) == null ? void 0 : _subPromiseCallback.resolve;
19698
+ var rejectedValue = (_subPromiseCallback1 = subPromiseCallback) == null ? void 0 : _subPromiseCallback1.reject;
19699
+ var promise = new AssetPromise(function(resolve, reject) {
19700
+ if (resolvedValue) {
19701
+ // Already resolved
19702
+ resolve(resolvedValue);
19703
+ } else if (rejectedValue) {
19704
+ // Already rejected
19705
+ reject(rejectedValue);
19706
+ } else {
19707
+ var _this__subAssetPromiseCallbacks, _assetBaseURL;
19708
+ // Pending
19709
+ loadingPromises[assetURL] = promise;
19710
+ ((_this__subAssetPromiseCallbacks = _this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19711
+ resolve: resolve,
19712
+ reject: reject
19713
+ };
19714
+ }
19715
+ });
19716
+ if (!resolvedValue && !rejectedValue) {
19717
+ promise.then(function() {
19615
19718
  delete loadingPromises[assetURL];
19616
19719
  }, function() {
19617
19720
  return delete loadingPromises[assetURL];
19618
19721
  });
19619
- promise.catch(function(e) {
19620
- _this._onSubAssetFail(assetURL, e);
19621
- });
19622
- return subPromise;
19623
19722
  }
19624
19723
  return promise;
19625
19724
  };
19626
- _proto._pushSubAssetPromiseCallback = function _pushSubAssetPromiseCallback(assetURL, resolve, reject) {
19627
- this._subAssetPromiseCallbacks[assetURL] = {
19628
- resolve: resolve,
19629
- reject: reject
19630
- };
19631
- };
19632
19725
  _proto._gc = function _gc(forceDestroy) {
19633
19726
  var objects = Utils.objectValues(this._referResourcePool);
19634
19727
  for(var i = 0, n = objects.length; i < n; i++){
@@ -19685,6 +19778,9 @@ var /** @internal */ PromiseState;
19685
19778
  });
19686
19779
  return result;
19687
19780
  };
19781
+ _proto._releaseSubAssetPromiseCallback = function _releaseSubAssetPromiseCallback(assetBaseURL) {
19782
+ delete this._subAssetPromiseCallbacks[assetBaseURL];
19783
+ };
19688
19784
  /**
19689
19785
  * @internal
19690
19786
  * @beta Just for internal editor, not recommended for developers.
@@ -28329,10 +28425,7 @@ exports.AnimatorLayerBlendingMode = void 0;
28329
28425
  /**
28330
28426
  * @internal
28331
28427
  */ _proto._onEnable = function _onEnable() {
28332
- var layersData = this._animatorLayersData;
28333
- for(var i = 0, n = layersData.length; i < n; i++){
28334
- layersData[i].layerState = LayerState.Standby;
28335
- }
28428
+ this._reset();
28336
28429
  this._entity.getComponentsIncludeChildren(exports.Renderer, this._controlledRenderers);
28337
28430
  };
28338
28431
  /**
@@ -28886,8 +28979,11 @@ exports.AnimatorLayerBlendingMode = void 0;
28886
28979
  if (exitTime >= lastClipTime) {
28887
28980
  playState.currentTransitionIndex = Math.min(transitionIndex + 1, n - 1);
28888
28981
  if (this._checkConditions(state, transition)) {
28889
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28890
- return transition;
28982
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
28983
+ return transition;
28984
+ } else {
28985
+ return null;
28986
+ }
28891
28987
  }
28892
28988
  }
28893
28989
  }
@@ -28906,8 +29002,11 @@ exports.AnimatorLayerBlendingMode = void 0;
28906
29002
  if (exitTime <= lastClipTime) {
28907
29003
  playState.currentTransitionIndex = Math.max(transitionIndex - 1, 0);
28908
29004
  if (this._checkConditions(state, transition)) {
28909
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28910
- return transition;
29005
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
29006
+ return transition;
29007
+ } else {
29008
+ return null;
29009
+ }
28911
29010
  }
28912
29011
  }
28913
29012
  }
@@ -28917,8 +29016,11 @@ exports.AnimatorLayerBlendingMode = void 0;
28917
29016
  for(var i = 0, n = transitions.length; i < n; i++){
28918
29017
  var transition = transitions[i];
28919
29018
  if (this._checkConditions(state, transition)) {
28920
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28921
- return transition;
29019
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
29020
+ return transition;
29021
+ } else {
29022
+ return null;
29023
+ }
28922
29024
  }
28923
29025
  }
28924
29026
  };
@@ -28938,11 +29040,12 @@ exports.AnimatorLayerBlendingMode = void 0;
28938
29040
  };
28939
29041
  _proto._applyTransition = function _applyTransition(layerIndex, layerData, stateMachine, transition) {
28940
29042
  // Need prepare first, it should crossFade when to exit
28941
- this._prepareCrossFadeByTransition(transition, layerIndex);
29043
+ var success = this._prepareCrossFadeByTransition(transition, layerIndex);
28942
29044
  if (transition.isExit) {
28943
29045
  this._checkAnyAndEntryState(layerIndex, layerData, stateMachine);
28944
- return;
29046
+ return true;
28945
29047
  }
29048
+ return success;
28946
29049
  };
28947
29050
  _proto._checkConditions = function _checkConditions(state, transition) {
28948
29051
  var _state;
@@ -28954,6 +29057,9 @@ exports.AnimatorLayerBlendingMode = void 0;
28954
29057
  var pass = false;
28955
29058
  var _conditions_i = conditions[i], mode = _conditions_i.mode, name1 = _conditions_i.parameterName, threshold = _conditions_i.threshold;
28956
29059
  var parameter = this.getParameter(name1);
29060
+ if (!parameter) {
29061
+ return false;
29062
+ }
28957
29063
  switch(mode){
28958
29064
  case exports.AnimatorConditionMode.Equals:
28959
29065
  if (parameter.value === threshold) {
@@ -30073,12 +30179,6 @@ exports.ParticleStopMode = void 0;
30073
30179
  if (!this._supportInstancedArrays) {
30074
30180
  return;
30075
30181
  }
30076
- var generator = this.generator;
30077
- generator._update(this.engine.time.deltaTime);
30078
- // No particles to render
30079
- if (generator._firstActiveElement === generator._firstFreeElement) {
30080
- return;
30081
- }
30082
30182
  Renderer1.prototype._prepareRender.call(this, context);
30083
30183
  };
30084
30184
  /**
@@ -30108,7 +30208,13 @@ exports.ParticleStopMode = void 0;
30108
30208
  generator._updateBoundsSimulationWorld(worldBounds);
30109
30209
  }
30110
30210
  };
30111
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
30211
+ _proto._update = function _update(context) {
30212
+ var generator = this.generator;
30213
+ generator._update(this.engine.time.deltaTime);
30214
+ // No particles to render
30215
+ if (generator._firstActiveElement === generator._firstFreeElement) {
30216
+ return;
30217
+ }
30112
30218
  var shaderData = this.shaderData;
30113
30219
  shaderData.setFloat(ParticleRenderer._lengthScale, this.lengthScale);
30114
30220
  shaderData.setFloat(ParticleRenderer._speedScale, this.velocityScale);
@@ -34254,8 +34360,10 @@ exports.AnimationClipCurveBinding = AnimationClipCurveBinding;
34254
34360
  exports.AnimationCurve = AnimationCurve;
34255
34361
  exports.AnimationEvent = AnimationEvent;
34256
34362
  exports.Animator = Animator;
34363
+ exports.AnimatorCondition = AnimatorCondition;
34257
34364
  exports.AnimatorController = AnimatorController;
34258
34365
  exports.AnimatorControllerLayer = AnimatorControllerLayer;
34366
+ exports.AnimatorControllerParameter = AnimatorControllerParameter;
34259
34367
  exports.AnimatorLayerMask = AnimatorLayerMask;
34260
34368
  exports.AnimatorState = AnimatorState;
34261
34369
  exports.AnimatorStateMachine = AnimatorStateMachine;
@@ -34309,6 +34417,7 @@ exports.InputManager = InputManager;
34309
34417
  exports.JointLimits = JointLimits;
34310
34418
  exports.JointMotor = JointMotor;
34311
34419
  exports.Keyframe = Keyframe;
34420
+ exports.LayerPathMask = LayerPathMask;
34312
34421
  exports.Light = Light;
34313
34422
  exports.Loader = Loader;
34314
34423
  exports.Logger = Logger;
@@ -34344,6 +34453,7 @@ exports.RenderTargetBlendState = RenderTargetBlendState;
34344
34453
  exports.ResourceManager = ResourceManager;
34345
34454
  exports.ReturnableObjectPool = ReturnableObjectPool;
34346
34455
  exports.RotationOverLifetimeModule = RotationOverLifetimeModule;
34456
+ exports.SafeLoopArray = SafeLoopArray;
34347
34457
  exports.Scene = Scene;
34348
34458
  exports.SceneManager = SceneManager;
34349
34459
  exports.Script = Script;