@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
@@ -3414,7 +3414,7 @@ var rotation_over_lifetime_module = "#define GLSLIFY 1\n#if defined(RENDERER_ROL
3414
3414
 
3415
3415
  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
3416
3416
 
3417
- 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
3417
+ 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
3418
3418
 
3419
3419
  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
3420
3420
 
@@ -5985,6 +5985,9 @@ exports.Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
5985
5985
  /**
5986
5986
  * @internal
5987
5987
  */ _proto._prepareRender = function _prepareRender(context) {
5988
+ if (this._renderFrameCount !== this.engine.time.frameCount) {
5989
+ this._update(context);
5990
+ }
5988
5991
  var virtualCamera = context.virtualCamera;
5989
5992
  var cameraPosition = virtualCamera.position;
5990
5993
  var boundsCenter = this.bounds.getCenter(exports.Renderer._tempVector0);
@@ -5994,10 +5997,6 @@ exports.Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
5994
5997
  } else {
5995
5998
  this._distanceForSort = miniprogram.Vector3.distanceSquared(boundsCenter, cameraPosition);
5996
5999
  }
5997
- // Update once per frame per renderer, not influenced by batched
5998
- if (this._renderFrameCount !== this.engine.time.frameCount) {
5999
- this._updateRendererShaderData(context);
6000
- }
6001
6000
  this._render(context);
6002
6001
  // union camera global macro and renderer macro.
6003
6002
  ShaderMacroCollection.unionCollection(context.camera._globalShaderMacro, this.shaderData._macroCollection, this._globalShaderMacro);
@@ -6051,7 +6050,9 @@ exports.Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
6051
6050
  /**
6052
6051
  * @internal
6053
6052
  */ _proto._batch = function _batch(elementA, elementB) {};
6054
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
6053
+ /**
6054
+ * Update once per frame per renderer, not influenced by batched.
6055
+ */ _proto._update = function _update(context) {
6055
6056
  var layer = this.entity.layer;
6056
6057
  this._rendererLayer.set(layer & 65535, layer >>> 16 & 65535, 0, 0);
6057
6058
  };
@@ -10321,14 +10322,17 @@ var /**
10321
10322
  var replacementSubShaders = replacementShader.subShaders;
10322
10323
  var replacementTag = context.replacementTag;
10323
10324
  if (replacementTag) {
10325
+ var replacementSuccess = false;
10324
10326
  for(var j = 0, m = replacementSubShaders.length; j < m; j++){
10325
10327
  var subShader = replacementSubShaders[j];
10326
10328
  if (subShader.getTagValue(replacementTag) === materialSubShader.getTagValue(replacementTag)) {
10327
10329
  this.pushRenderElementByType(renderElement, subRenderElement, subShader.passes, renderStates);
10328
- break;
10330
+ replacementSuccess = true;
10329
10331
  }
10330
10332
  }
10331
- context.replacementFailureStrategy === exports.ReplacementFailureStrategy.KeepOriginalShader && this.pushRenderElementByType(renderElement, subRenderElement, materialSubShader.passes, renderStates);
10333
+ if (!replacementSuccess && context.replacementFailureStrategy === exports.ReplacementFailureStrategy.KeepOriginalShader) {
10334
+ this.pushRenderElementByType(renderElement, subRenderElement, materialSubShader.passes, renderStates);
10335
+ }
10332
10336
  } else {
10333
10337
  this.pushRenderElementByType(renderElement, subRenderElement, replacementSubShaders[0].passes, renderStates);
10334
10338
  }
@@ -10912,7 +10916,7 @@ var /**
10912
10916
  if (info) {
10913
10917
  return info;
10914
10918
  }
10915
- info = TextUtils._measureFontOrChar(fontString);
10919
+ info = TextUtils._measureFontOrChar(fontString, TextUtils._measureString, false);
10916
10920
  fontSizeInfoCache[fontString] = info;
10917
10921
  return info;
10918
10922
  };
@@ -10933,7 +10937,7 @@ var /**
10933
10937
  return str;
10934
10938
  };
10935
10939
  TextUtils.measureChar = function measureChar(char, fontString) {
10936
- return TextUtils._measureFontOrChar(fontString, char);
10940
+ return TextUtils._measureFontOrChar(fontString, char, true);
10937
10941
  };
10938
10942
  TextUtils.measureTextWithWrap = function measureTextWithWrap(renderer) {
10939
10943
  var subFont = renderer._getSubFont();
@@ -11152,15 +11156,15 @@ var /**
11152
11156
  };
11153
11157
  /**
11154
11158
  * @internal
11155
- */ TextUtils._measureFontOrChar = function _measureFontOrChar(fontString, char) {
11156
- if (char === void 0) char = "";
11159
+ */ TextUtils._measureFontOrChar = function _measureFontOrChar(fontString, measureString, isChar) {
11157
11160
  var _TextUtils_textContext = TextUtils.textContext(), canvas = _TextUtils_textContext.canvas, context = _TextUtils_textContext.context;
11158
11161
  context.font = fontString;
11159
- var measureString = char || TextUtils._measureString;
11160
11162
  // Safari gets data confusion through getImageData when the canvas width is not an integer.
11161
11163
  // The measure text width of some special invisible characters may be 0, so make sure the width is at least 1.
11162
11164
  // @todo: Text layout may vary from standard and not support emoji.
11163
- var width = Math.max(1, Math.round(context.measureText(measureString).width));
11165
+ var textMetrics = context.measureText(measureString);
11166
+ // In some case (ex: " "), actualBoundingBoxRight and actualBoundingBoxLeft will be 0, so use width.
11167
+ var width = Math.max(1, Math.round(textMetrics.actualBoundingBoxRight - textMetrics.actualBoundingBoxLeft || textMetrics.width));
11164
11168
  var baseline = Math.ceil(context.measureText(TextUtils._measureBaseline).width);
11165
11169
  var height = baseline * TextUtils._heightMultiplier;
11166
11170
  baseline = TextUtils._baselineMultiplier * baseline | 0;
@@ -11205,12 +11209,7 @@ var /**
11205
11209
  descent = bottom - baseline + 1;
11206
11210
  size = ascent + descent;
11207
11211
  }
11208
- var sizeInfo = {
11209
- ascent: ascent,
11210
- descent: descent,
11211
- size: size
11212
- };
11213
- if (char) {
11212
+ if (isChar) {
11214
11213
  var data = null;
11215
11214
  if (size > 0) {
11216
11215
  var lineIntegerW = integerW * 4;
@@ -11218,7 +11217,7 @@ var /**
11218
11217
  data = new Uint8Array(colorData.buffer, top * lineIntegerW, size * lineIntegerW);
11219
11218
  }
11220
11219
  return {
11221
- char: char,
11220
+ char: measureString,
11222
11221
  x: 0,
11223
11222
  y: 0,
11224
11223
  w: width,
@@ -11238,7 +11237,11 @@ var /**
11238
11237
  data: data
11239
11238
  };
11240
11239
  } else {
11241
- return sizeInfo;
11240
+ return {
11241
+ ascent: ascent,
11242
+ descent: descent,
11243
+ size: size
11244
+ };
11242
11245
  }
11243
11246
  };
11244
11247
  /**
@@ -17431,6 +17434,38 @@ var PrimitiveType;
17431
17434
  PrimitiveMesh._spherePoleIdx = 0;
17432
17435
  })();
17433
17436
 
17437
+ function _is_native_reflect_construct() {
17438
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
17439
+ if (Reflect.construct.sham) return false;
17440
+ if (typeof Proxy === "function") return true;
17441
+
17442
+ try {
17443
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
17444
+
17445
+ return true;
17446
+ } catch (e) {
17447
+ return false;
17448
+ }
17449
+ }
17450
+
17451
+ function _construct(Parent, args, Class) {
17452
+ if (_is_native_reflect_construct()) _construct = Reflect.construct;
17453
+ else {
17454
+ _construct = function construct(Parent, args, Class) {
17455
+ var a = [null];
17456
+ a.push.apply(a, args);
17457
+ var Constructor = Function.bind.apply(Parent, a);
17458
+ var instance = new Constructor();
17459
+
17460
+ if (Class) _set_prototype_of(instance, Class.prototype);
17461
+
17462
+ return instance;
17463
+ };
17464
+ }
17465
+
17466
+ return _construct.apply(null, arguments);
17467
+ }
17468
+
17434
17469
  var ComponentCloner = /*#__PURE__*/ function() {
17435
17470
  function ComponentCloner() {}
17436
17471
  /**
@@ -17478,10 +17513,14 @@ var ComponentCloner = /*#__PURE__*/ function() {
17478
17513
  /**
17479
17514
  * Add component based on the component type.
17480
17515
  * @param type - The type of the component
17516
+ * @param args - The arguments of the component
17481
17517
  * @returns The component which has been added
17482
17518
  */ _proto.addComponent = function addComponent(type) {
17519
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17520
+ args[_key - 1] = arguments[_key];
17521
+ }
17483
17522
  ComponentsDependencies._addCheck(this, type);
17484
- var component = new type(this);
17523
+ var component = _construct(type, [].concat(this, args));
17485
17524
  this._components.push(component);
17486
17525
  component._setActive(true, ActiveChangeFlag.All);
17487
17526
  return component;
@@ -18261,7 +18300,7 @@ var SkinUpdateFlag;
18261
18300
  }
18262
18301
  this._blendShapeWeights && (target._blendShapeWeights = this._blendShapeWeights.slice());
18263
18302
  };
18264
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
18303
+ _proto._update = function _update(context) {
18265
18304
  var _skin, _skin1;
18266
18305
  var skin = this.skin;
18267
18306
  if (((_skin = skin) == null ? void 0 : _skin.bones.length) > 0) {
@@ -18310,7 +18349,7 @@ var SkinUpdateFlag;
18310
18349
  this._jointTexture.setPixelBuffer(skin._skinMatrices);
18311
18350
  }
18312
18351
  }
18313
- MeshRenderer1.prototype._updateRendererShaderData.call(this, context);
18352
+ MeshRenderer1.prototype._update.call(this, context);
18314
18353
  };
18315
18354
  /**
18316
18355
  * @internal
@@ -19007,6 +19046,15 @@ var SafeLoopArray = /*#__PURE__*/ function() {
19007
19046
  this._loopArrayDirty = true;
19008
19047
  };
19009
19048
  /**
19049
+ * Remove item from array that pass the specified comparison function.
19050
+ * @param filter - The comparison function
19051
+ */ _proto.findAndRemove = function findAndRemove(filter) {
19052
+ var array = this._array;
19053
+ for(var i = array.length - 1; i >= 0; i--){
19054
+ filter(array[i]) && this.removeByIndex(i);
19055
+ }
19056
+ };
19057
+ /**
19010
19058
  * The index of the item.
19011
19059
  * @param item - The item which want to get the index
19012
19060
  * @returns Index of the item
@@ -19440,17 +19488,35 @@ var /** @internal */ PromiseState;
19440
19488
  };
19441
19489
  /**
19442
19490
  * @internal
19443
- */ _proto._onSubAssetSuccess = function _onSubAssetSuccess(assetURL, value) {
19444
- var _this__subAssetPromiseCallbacks_assetURL;
19445
- (_this__subAssetPromiseCallbacks_assetURL = this._subAssetPromiseCallbacks[assetURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetURL.resolve(value);
19446
- delete this._subAssetPromiseCallbacks[assetURL];
19491
+ */ _proto._onSubAssetSuccess = function _onSubAssetSuccess(assetBaseURL, assetSubPath, value) {
19492
+ var _this__subAssetPromiseCallbacks_assetBaseURL;
19493
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19494
+ if (subPromiseCallback) {
19495
+ // Already resolved
19496
+ subPromiseCallback.resolve(value);
19497
+ } else {
19498
+ var // Pending
19499
+ _this__subAssetPromiseCallbacks, _assetBaseURL;
19500
+ ((_this__subAssetPromiseCallbacks = this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19501
+ resolve: value
19502
+ };
19503
+ }
19447
19504
  };
19448
19505
  /**
19449
19506
  * @internal
19450
- */ _proto._onSubAssetFail = function _onSubAssetFail(assetURL, value) {
19451
- var _this__subAssetPromiseCallbacks_assetURL;
19452
- (_this__subAssetPromiseCallbacks_assetURL = this._subAssetPromiseCallbacks[assetURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetURL.reject(value);
19453
- delete this._subAssetPromiseCallbacks[assetURL];
19507
+ */ _proto._onSubAssetFail = function _onSubAssetFail(assetBaseURL, assetSubPath, value) {
19508
+ var _this__subAssetPromiseCallbacks_assetBaseURL;
19509
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19510
+ if (subPromiseCallback) {
19511
+ // Already rejected
19512
+ subPromiseCallback.reject(value);
19513
+ } else {
19514
+ var // Pending
19515
+ _this__subAssetPromiseCallbacks, _assetBaseURL;
19516
+ ((_this__subAssetPromiseCallbacks = this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19517
+ reject: value
19518
+ };
19519
+ }
19454
19520
  };
19455
19521
  /**
19456
19522
  * @internal
@@ -19595,8 +19661,21 @@ var /** @internal */ PromiseState;
19595
19661
  if (!loader) {
19596
19662
  throw "loader not found: " + item.type;
19597
19663
  }
19598
- // Load asset
19664
+ // Check sub asset
19665
+ if (queryPath) {
19666
+ // Check whether load main asset
19667
+ var mainPromise = loadingPromises[assetBaseURL] || this._loadMainAsset(loader, item, assetBaseURL);
19668
+ mainPromise.catch(function(e) {
19669
+ _this._onSubAssetFail(assetBaseURL, queryPath, e);
19670
+ });
19671
+ return this._createSubAssetPromiseCallback(assetBaseURL, assetURL, queryPath);
19672
+ }
19673
+ return this._loadMainAsset(loader, item, assetBaseURL);
19674
+ };
19675
+ _proto._loadMainAsset = function _loadMainAsset(loader, item, assetBaseURL) {
19676
+ var _this = this;
19599
19677
  item.url = assetBaseURL;
19678
+ var loadingPromises = this._loadingPromises;
19600
19679
  var promise = loader.load(item, this);
19601
19680
  loadingPromises[assetBaseURL] = promise;
19602
19681
  promise.then(function(resource) {
@@ -19604,32 +19683,46 @@ var /** @internal */ PromiseState;
19604
19683
  _this._addAsset(assetBaseURL, resource);
19605
19684
  }
19606
19685
  delete loadingPromises[assetBaseURL];
19686
+ _this._releaseSubAssetPromiseCallback(assetBaseURL);
19607
19687
  }, function() {
19608
- return delete loadingPromises[assetBaseURL];
19688
+ delete loadingPromises[assetBaseURL];
19689
+ _this._releaseSubAssetPromiseCallback(assetBaseURL);
19609
19690
  });
19610
- if (queryPath) {
19611
- var subPromise = new AssetPromise(function(resolve, reject) {
19612
- _this._pushSubAssetPromiseCallback(assetURL, resolve, reject);
19613
- });
19614
- loadingPromises[assetURL] = subPromise;
19615
- subPromise.then(function() {
19691
+ return promise;
19692
+ };
19693
+ _proto._createSubAssetPromiseCallback = function _createSubAssetPromiseCallback(assetBaseURL, assetURL, assetSubPath) {
19694
+ var _this = this;
19695
+ var _this__subAssetPromiseCallbacks_assetBaseURL, _subPromiseCallback, _subPromiseCallback1;
19696
+ var loadingPromises = this._loadingPromises;
19697
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19698
+ var resolvedValue = (_subPromiseCallback = subPromiseCallback) == null ? void 0 : _subPromiseCallback.resolve;
19699
+ var rejectedValue = (_subPromiseCallback1 = subPromiseCallback) == null ? void 0 : _subPromiseCallback1.reject;
19700
+ var promise = new AssetPromise(function(resolve, reject) {
19701
+ if (resolvedValue) {
19702
+ // Already resolved
19703
+ resolve(resolvedValue);
19704
+ } else if (rejectedValue) {
19705
+ // Already rejected
19706
+ reject(rejectedValue);
19707
+ } else {
19708
+ var _this__subAssetPromiseCallbacks, _assetBaseURL;
19709
+ // Pending
19710
+ loadingPromises[assetURL] = promise;
19711
+ ((_this__subAssetPromiseCallbacks = _this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19712
+ resolve: resolve,
19713
+ reject: reject
19714
+ };
19715
+ }
19716
+ });
19717
+ if (!resolvedValue && !rejectedValue) {
19718
+ promise.then(function() {
19616
19719
  delete loadingPromises[assetURL];
19617
19720
  }, function() {
19618
19721
  return delete loadingPromises[assetURL];
19619
19722
  });
19620
- promise.catch(function(e) {
19621
- _this._onSubAssetFail(assetURL, e);
19622
- });
19623
- return subPromise;
19624
19723
  }
19625
19724
  return promise;
19626
19725
  };
19627
- _proto._pushSubAssetPromiseCallback = function _pushSubAssetPromiseCallback(assetURL, resolve, reject) {
19628
- this._subAssetPromiseCallbacks[assetURL] = {
19629
- resolve: resolve,
19630
- reject: reject
19631
- };
19632
- };
19633
19726
  _proto._gc = function _gc(forceDestroy) {
19634
19727
  var objects = Utils.objectValues(this._referResourcePool);
19635
19728
  for(var i = 0, n = objects.length; i < n; i++){
@@ -19686,6 +19779,9 @@ var /** @internal */ PromiseState;
19686
19779
  });
19687
19780
  return result;
19688
19781
  };
19782
+ _proto._releaseSubAssetPromiseCallback = function _releaseSubAssetPromiseCallback(assetBaseURL) {
19783
+ delete this._subAssetPromiseCallbacks[assetBaseURL];
19784
+ };
19689
19785
  /**
19690
19786
  * @internal
19691
19787
  * @beta Just for internal editor, not recommended for developers.
@@ -28330,10 +28426,7 @@ exports.AnimatorLayerBlendingMode = void 0;
28330
28426
  /**
28331
28427
  * @internal
28332
28428
  */ _proto._onEnable = function _onEnable() {
28333
- var layersData = this._animatorLayersData;
28334
- for(var i = 0, n = layersData.length; i < n; i++){
28335
- layersData[i].layerState = LayerState.Standby;
28336
- }
28429
+ this._reset();
28337
28430
  this._entity.getComponentsIncludeChildren(exports.Renderer, this._controlledRenderers);
28338
28431
  };
28339
28432
  /**
@@ -28887,8 +28980,11 @@ exports.AnimatorLayerBlendingMode = void 0;
28887
28980
  if (exitTime >= lastClipTime) {
28888
28981
  playState.currentTransitionIndex = Math.min(transitionIndex + 1, n - 1);
28889
28982
  if (this._checkConditions(state, transition)) {
28890
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28891
- return transition;
28983
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
28984
+ return transition;
28985
+ } else {
28986
+ return null;
28987
+ }
28892
28988
  }
28893
28989
  }
28894
28990
  }
@@ -28907,8 +29003,11 @@ exports.AnimatorLayerBlendingMode = void 0;
28907
29003
  if (exitTime <= lastClipTime) {
28908
29004
  playState.currentTransitionIndex = Math.max(transitionIndex - 1, 0);
28909
29005
  if (this._checkConditions(state, transition)) {
28910
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28911
- return transition;
29006
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
29007
+ return transition;
29008
+ } else {
29009
+ return null;
29010
+ }
28912
29011
  }
28913
29012
  }
28914
29013
  }
@@ -28918,8 +29017,11 @@ exports.AnimatorLayerBlendingMode = void 0;
28918
29017
  for(var i = 0, n = transitions.length; i < n; i++){
28919
29018
  var transition = transitions[i];
28920
29019
  if (this._checkConditions(state, transition)) {
28921
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28922
- return transition;
29020
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
29021
+ return transition;
29022
+ } else {
29023
+ return null;
29024
+ }
28923
29025
  }
28924
29026
  }
28925
29027
  };
@@ -28939,11 +29041,12 @@ exports.AnimatorLayerBlendingMode = void 0;
28939
29041
  };
28940
29042
  _proto._applyTransition = function _applyTransition(layerIndex, layerData, stateMachine, transition) {
28941
29043
  // Need prepare first, it should crossFade when to exit
28942
- this._prepareCrossFadeByTransition(transition, layerIndex);
29044
+ var success = this._prepareCrossFadeByTransition(transition, layerIndex);
28943
29045
  if (transition.isExit) {
28944
29046
  this._checkAnyAndEntryState(layerIndex, layerData, stateMachine);
28945
- return;
29047
+ return true;
28946
29048
  }
29049
+ return success;
28947
29050
  };
28948
29051
  _proto._checkConditions = function _checkConditions(state, transition) {
28949
29052
  var _state;
@@ -28955,6 +29058,9 @@ exports.AnimatorLayerBlendingMode = void 0;
28955
29058
  var pass = false;
28956
29059
  var _conditions_i = conditions[i], mode = _conditions_i.mode, name1 = _conditions_i.parameterName, threshold = _conditions_i.threshold;
28957
29060
  var parameter = this.getParameter(name1);
29061
+ if (!parameter) {
29062
+ return false;
29063
+ }
28958
29064
  switch(mode){
28959
29065
  case exports.AnimatorConditionMode.Equals:
28960
29066
  if (parameter.value === threshold) {
@@ -30074,12 +30180,6 @@ exports.ParticleStopMode = void 0;
30074
30180
  if (!this._supportInstancedArrays) {
30075
30181
  return;
30076
30182
  }
30077
- var generator = this.generator;
30078
- generator._update(this.engine.time.deltaTime);
30079
- // No particles to render
30080
- if (generator._firstActiveElement === generator._firstFreeElement) {
30081
- return;
30082
- }
30083
30183
  Renderer1.prototype._prepareRender.call(this, context);
30084
30184
  };
30085
30185
  /**
@@ -30109,7 +30209,13 @@ exports.ParticleStopMode = void 0;
30109
30209
  generator._updateBoundsSimulationWorld(worldBounds);
30110
30210
  }
30111
30211
  };
30112
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
30212
+ _proto._update = function _update(context) {
30213
+ var generator = this.generator;
30214
+ generator._update(this.engine.time.deltaTime);
30215
+ // No particles to render
30216
+ if (generator._firstActiveElement === generator._firstFreeElement) {
30217
+ return;
30218
+ }
30113
30219
  var shaderData = this.shaderData;
30114
30220
  shaderData.setFloat(ParticleRenderer._lengthScale, this.lengthScale);
30115
30221
  shaderData.setFloat(ParticleRenderer._speedScale, this.velocityScale);
@@ -34255,8 +34361,10 @@ exports.AnimationClipCurveBinding = AnimationClipCurveBinding;
34255
34361
  exports.AnimationCurve = AnimationCurve;
34256
34362
  exports.AnimationEvent = AnimationEvent;
34257
34363
  exports.Animator = Animator;
34364
+ exports.AnimatorCondition = AnimatorCondition;
34258
34365
  exports.AnimatorController = AnimatorController;
34259
34366
  exports.AnimatorControllerLayer = AnimatorControllerLayer;
34367
+ exports.AnimatorControllerParameter = AnimatorControllerParameter;
34260
34368
  exports.AnimatorLayerMask = AnimatorLayerMask;
34261
34369
  exports.AnimatorState = AnimatorState;
34262
34370
  exports.AnimatorStateMachine = AnimatorStateMachine;
@@ -34310,6 +34418,7 @@ exports.InputManager = InputManager;
34310
34418
  exports.JointLimits = JointLimits;
34311
34419
  exports.JointMotor = JointMotor;
34312
34420
  exports.Keyframe = Keyframe;
34421
+ exports.LayerPathMask = LayerPathMask;
34313
34422
  exports.Light = Light;
34314
34423
  exports.Loader = Loader;
34315
34424
  exports.Logger = Logger;
@@ -34345,6 +34454,7 @@ exports.RenderTargetBlendState = RenderTargetBlendState;
34345
34454
  exports.ResourceManager = ResourceManager;
34346
34455
  exports.ReturnableObjectPool = ReturnableObjectPool;
34347
34456
  exports.RotationOverLifetimeModule = RotationOverLifetimeModule;
34457
+ exports.SafeLoopArray = SafeLoopArray;
34348
34458
  exports.Scene = Scene;
34349
34459
  exports.SceneManager = SceneManager;
34350
34460
  exports.Script = Script;