@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/module.js CHANGED
@@ -3409,7 +3409,7 @@ var rotation_over_lifetime_module = "#define GLSLIFY 1\n#if defined(RENDERER_ROL
3409
3409
 
3410
3410
  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
3411
3411
 
3412
- 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
3412
+ 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
3413
3413
 
3414
3414
  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
3415
3415
 
@@ -5980,6 +5980,9 @@ var Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
5980
5980
  /**
5981
5981
  * @internal
5982
5982
  */ _proto._prepareRender = function _prepareRender(context) {
5983
+ if (this._renderFrameCount !== this.engine.time.frameCount) {
5984
+ this._update(context);
5985
+ }
5983
5986
  var virtualCamera = context.virtualCamera;
5984
5987
  var cameraPosition = virtualCamera.position;
5985
5988
  var boundsCenter = this.bounds.getCenter(Renderer._tempVector0);
@@ -5989,10 +5992,6 @@ var Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
5989
5992
  } else {
5990
5993
  this._distanceForSort = Vector3.distanceSquared(boundsCenter, cameraPosition);
5991
5994
  }
5992
- // Update once per frame per renderer, not influenced by batched
5993
- if (this._renderFrameCount !== this.engine.time.frameCount) {
5994
- this._updateRendererShaderData(context);
5995
- }
5996
5995
  this._render(context);
5997
5996
  // union camera global macro and renderer macro.
5998
5997
  ShaderMacroCollection.unionCollection(context.camera._globalShaderMacro, this.shaderData._macroCollection, this._globalShaderMacro);
@@ -6046,7 +6045,9 @@ var Renderer = (_Renderer = /*#__PURE__*/ function(Component1) {
6046
6045
  /**
6047
6046
  * @internal
6048
6047
  */ _proto._batch = function _batch(elementA, elementB) {};
6049
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
6048
+ /**
6049
+ * Update once per frame per renderer, not influenced by batched.
6050
+ */ _proto._update = function _update(context) {
6050
6051
  var layer = this.entity.layer;
6051
6052
  this._rendererLayer.set(layer & 65535, layer >>> 16 & 65535, 0, 0);
6052
6053
  };
@@ -10316,14 +10317,17 @@ var /**
10316
10317
  var replacementSubShaders = replacementShader.subShaders;
10317
10318
  var replacementTag = context.replacementTag;
10318
10319
  if (replacementTag) {
10320
+ var replacementSuccess = false;
10319
10321
  for(var j = 0, m = replacementSubShaders.length; j < m; j++){
10320
10322
  var subShader = replacementSubShaders[j];
10321
10323
  if (subShader.getTagValue(replacementTag) === materialSubShader.getTagValue(replacementTag)) {
10322
10324
  this.pushRenderElementByType(renderElement, subRenderElement, subShader.passes, renderStates);
10323
- break;
10325
+ replacementSuccess = true;
10324
10326
  }
10325
10327
  }
10326
- context.replacementFailureStrategy === ReplacementFailureStrategy.KeepOriginalShader && this.pushRenderElementByType(renderElement, subRenderElement, materialSubShader.passes, renderStates);
10328
+ if (!replacementSuccess && context.replacementFailureStrategy === ReplacementFailureStrategy.KeepOriginalShader) {
10329
+ this.pushRenderElementByType(renderElement, subRenderElement, materialSubShader.passes, renderStates);
10330
+ }
10327
10331
  } else {
10328
10332
  this.pushRenderElementByType(renderElement, subRenderElement, replacementSubShaders[0].passes, renderStates);
10329
10333
  }
@@ -10907,7 +10911,7 @@ var /**
10907
10911
  if (info) {
10908
10912
  return info;
10909
10913
  }
10910
- info = TextUtils._measureFontOrChar(fontString);
10914
+ info = TextUtils._measureFontOrChar(fontString, TextUtils._measureString, false);
10911
10915
  fontSizeInfoCache[fontString] = info;
10912
10916
  return info;
10913
10917
  };
@@ -10928,7 +10932,7 @@ var /**
10928
10932
  return str;
10929
10933
  };
10930
10934
  TextUtils.measureChar = function measureChar(char, fontString) {
10931
- return TextUtils._measureFontOrChar(fontString, char);
10935
+ return TextUtils._measureFontOrChar(fontString, char, true);
10932
10936
  };
10933
10937
  TextUtils.measureTextWithWrap = function measureTextWithWrap(renderer) {
10934
10938
  var subFont = renderer._getSubFont();
@@ -11147,15 +11151,15 @@ var /**
11147
11151
  };
11148
11152
  /**
11149
11153
  * @internal
11150
- */ TextUtils._measureFontOrChar = function _measureFontOrChar(fontString, char) {
11151
- if (char === void 0) char = "";
11154
+ */ TextUtils._measureFontOrChar = function _measureFontOrChar(fontString, measureString, isChar) {
11152
11155
  var _TextUtils_textContext = TextUtils.textContext(), canvas = _TextUtils_textContext.canvas, context = _TextUtils_textContext.context;
11153
11156
  context.font = fontString;
11154
- var measureString = char || TextUtils._measureString;
11155
11157
  // Safari gets data confusion through getImageData when the canvas width is not an integer.
11156
11158
  // The measure text width of some special invisible characters may be 0, so make sure the width is at least 1.
11157
11159
  // @todo: Text layout may vary from standard and not support emoji.
11158
- var width = Math.max(1, Math.round(context.measureText(measureString).width));
11160
+ var textMetrics = context.measureText(measureString);
11161
+ // In some case (ex: " "), actualBoundingBoxRight and actualBoundingBoxLeft will be 0, so use width.
11162
+ var width = Math.max(1, Math.round(textMetrics.actualBoundingBoxRight - textMetrics.actualBoundingBoxLeft || textMetrics.width));
11159
11163
  var baseline = Math.ceil(context.measureText(TextUtils._measureBaseline).width);
11160
11164
  var height = baseline * TextUtils._heightMultiplier;
11161
11165
  baseline = TextUtils._baselineMultiplier * baseline | 0;
@@ -11200,12 +11204,7 @@ var /**
11200
11204
  descent = bottom - baseline + 1;
11201
11205
  size = ascent + descent;
11202
11206
  }
11203
- var sizeInfo = {
11204
- ascent: ascent,
11205
- descent: descent,
11206
- size: size
11207
- };
11208
- if (char) {
11207
+ if (isChar) {
11209
11208
  var data = null;
11210
11209
  if (size > 0) {
11211
11210
  var lineIntegerW = integerW * 4;
@@ -11213,7 +11212,7 @@ var /**
11213
11212
  data = new Uint8Array(colorData.buffer, top * lineIntegerW, size * lineIntegerW);
11214
11213
  }
11215
11214
  return {
11216
- char: char,
11215
+ char: measureString,
11217
11216
  x: 0,
11218
11217
  y: 0,
11219
11218
  w: width,
@@ -11233,7 +11232,11 @@ var /**
11233
11232
  data: data
11234
11233
  };
11235
11234
  } else {
11236
- return sizeInfo;
11235
+ return {
11236
+ ascent: ascent,
11237
+ descent: descent,
11238
+ size: size
11239
+ };
11237
11240
  }
11238
11241
  };
11239
11242
  /**
@@ -17426,6 +17429,38 @@ var PrimitiveType;
17426
17429
  PrimitiveMesh._spherePoleIdx = 0;
17427
17430
  })();
17428
17431
 
17432
+ function _is_native_reflect_construct() {
17433
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
17434
+ if (Reflect.construct.sham) return false;
17435
+ if (typeof Proxy === "function") return true;
17436
+
17437
+ try {
17438
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
17439
+
17440
+ return true;
17441
+ } catch (e) {
17442
+ return false;
17443
+ }
17444
+ }
17445
+
17446
+ function _construct(Parent, args, Class) {
17447
+ if (_is_native_reflect_construct()) _construct = Reflect.construct;
17448
+ else {
17449
+ _construct = function construct(Parent, args, Class) {
17450
+ var a = [null];
17451
+ a.push.apply(a, args);
17452
+ var Constructor = Function.bind.apply(Parent, a);
17453
+ var instance = new Constructor();
17454
+
17455
+ if (Class) _set_prototype_of(instance, Class.prototype);
17456
+
17457
+ return instance;
17458
+ };
17459
+ }
17460
+
17461
+ return _construct.apply(null, arguments);
17462
+ }
17463
+
17429
17464
  var ComponentCloner = /*#__PURE__*/ function() {
17430
17465
  function ComponentCloner() {}
17431
17466
  /**
@@ -17473,10 +17508,14 @@ var ComponentCloner = /*#__PURE__*/ function() {
17473
17508
  /**
17474
17509
  * Add component based on the component type.
17475
17510
  * @param type - The type of the component
17511
+ * @param args - The arguments of the component
17476
17512
  * @returns The component which has been added
17477
17513
  */ _proto.addComponent = function addComponent(type) {
17514
+ for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
17515
+ args[_key - 1] = arguments[_key];
17516
+ }
17478
17517
  ComponentsDependencies._addCheck(this, type);
17479
- var component = new type(this);
17518
+ var component = _construct(type, [].concat(this, args));
17480
17519
  this._components.push(component);
17481
17520
  component._setActive(true, ActiveChangeFlag.All);
17482
17521
  return component;
@@ -18256,7 +18295,7 @@ var SkinUpdateFlag;
18256
18295
  }
18257
18296
  this._blendShapeWeights && (target._blendShapeWeights = this._blendShapeWeights.slice());
18258
18297
  };
18259
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
18298
+ _proto._update = function _update(context) {
18260
18299
  var _skin, _skin1;
18261
18300
  var skin = this.skin;
18262
18301
  if (((_skin = skin) == null ? void 0 : _skin.bones.length) > 0) {
@@ -18305,7 +18344,7 @@ var SkinUpdateFlag;
18305
18344
  this._jointTexture.setPixelBuffer(skin._skinMatrices);
18306
18345
  }
18307
18346
  }
18308
- MeshRenderer1.prototype._updateRendererShaderData.call(this, context);
18347
+ MeshRenderer1.prototype._update.call(this, context);
18309
18348
  };
18310
18349
  /**
18311
18350
  * @internal
@@ -19002,6 +19041,15 @@ var SafeLoopArray = /*#__PURE__*/ function() {
19002
19041
  this._loopArrayDirty = true;
19003
19042
  };
19004
19043
  /**
19044
+ * Remove item from array that pass the specified comparison function.
19045
+ * @param filter - The comparison function
19046
+ */ _proto.findAndRemove = function findAndRemove(filter) {
19047
+ var array = this._array;
19048
+ for(var i = array.length - 1; i >= 0; i--){
19049
+ filter(array[i]) && this.removeByIndex(i);
19050
+ }
19051
+ };
19052
+ /**
19005
19053
  * The index of the item.
19006
19054
  * @param item - The item which want to get the index
19007
19055
  * @returns Index of the item
@@ -19435,17 +19483,35 @@ var /** @internal */ PromiseState;
19435
19483
  };
19436
19484
  /**
19437
19485
  * @internal
19438
- */ _proto._onSubAssetSuccess = function _onSubAssetSuccess(assetURL, value) {
19439
- var _this__subAssetPromiseCallbacks_assetURL;
19440
- (_this__subAssetPromiseCallbacks_assetURL = this._subAssetPromiseCallbacks[assetURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetURL.resolve(value);
19441
- delete this._subAssetPromiseCallbacks[assetURL];
19486
+ */ _proto._onSubAssetSuccess = function _onSubAssetSuccess(assetBaseURL, assetSubPath, value) {
19487
+ var _this__subAssetPromiseCallbacks_assetBaseURL;
19488
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19489
+ if (subPromiseCallback) {
19490
+ // Already resolved
19491
+ subPromiseCallback.resolve(value);
19492
+ } else {
19493
+ var // Pending
19494
+ _this__subAssetPromiseCallbacks, _assetBaseURL;
19495
+ ((_this__subAssetPromiseCallbacks = this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19496
+ resolve: value
19497
+ };
19498
+ }
19442
19499
  };
19443
19500
  /**
19444
19501
  * @internal
19445
- */ _proto._onSubAssetFail = function _onSubAssetFail(assetURL, value) {
19446
- var _this__subAssetPromiseCallbacks_assetURL;
19447
- (_this__subAssetPromiseCallbacks_assetURL = this._subAssetPromiseCallbacks[assetURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetURL.reject(value);
19448
- delete this._subAssetPromiseCallbacks[assetURL];
19502
+ */ _proto._onSubAssetFail = function _onSubAssetFail(assetBaseURL, assetSubPath, value) {
19503
+ var _this__subAssetPromiseCallbacks_assetBaseURL;
19504
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19505
+ if (subPromiseCallback) {
19506
+ // Already rejected
19507
+ subPromiseCallback.reject(value);
19508
+ } else {
19509
+ var // Pending
19510
+ _this__subAssetPromiseCallbacks, _assetBaseURL;
19511
+ ((_this__subAssetPromiseCallbacks = this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19512
+ reject: value
19513
+ };
19514
+ }
19449
19515
  };
19450
19516
  /**
19451
19517
  * @internal
@@ -19590,8 +19656,21 @@ var /** @internal */ PromiseState;
19590
19656
  if (!loader) {
19591
19657
  throw "loader not found: " + item.type;
19592
19658
  }
19593
- // Load asset
19659
+ // Check sub asset
19660
+ if (queryPath) {
19661
+ // Check whether load main asset
19662
+ var mainPromise = loadingPromises[assetBaseURL] || this._loadMainAsset(loader, item, assetBaseURL);
19663
+ mainPromise.catch(function(e) {
19664
+ _this._onSubAssetFail(assetBaseURL, queryPath, e);
19665
+ });
19666
+ return this._createSubAssetPromiseCallback(assetBaseURL, assetURL, queryPath);
19667
+ }
19668
+ return this._loadMainAsset(loader, item, assetBaseURL);
19669
+ };
19670
+ _proto._loadMainAsset = function _loadMainAsset(loader, item, assetBaseURL) {
19671
+ var _this = this;
19594
19672
  item.url = assetBaseURL;
19673
+ var loadingPromises = this._loadingPromises;
19595
19674
  var promise = loader.load(item, this);
19596
19675
  loadingPromises[assetBaseURL] = promise;
19597
19676
  promise.then(function(resource) {
@@ -19599,32 +19678,46 @@ var /** @internal */ PromiseState;
19599
19678
  _this._addAsset(assetBaseURL, resource);
19600
19679
  }
19601
19680
  delete loadingPromises[assetBaseURL];
19681
+ _this._releaseSubAssetPromiseCallback(assetBaseURL);
19602
19682
  }, function() {
19603
- return delete loadingPromises[assetBaseURL];
19683
+ delete loadingPromises[assetBaseURL];
19684
+ _this._releaseSubAssetPromiseCallback(assetBaseURL);
19604
19685
  });
19605
- if (queryPath) {
19606
- var subPromise = new AssetPromise(function(resolve, reject) {
19607
- _this._pushSubAssetPromiseCallback(assetURL, resolve, reject);
19608
- });
19609
- loadingPromises[assetURL] = subPromise;
19610
- subPromise.then(function() {
19686
+ return promise;
19687
+ };
19688
+ _proto._createSubAssetPromiseCallback = function _createSubAssetPromiseCallback(assetBaseURL, assetURL, assetSubPath) {
19689
+ var _this = this;
19690
+ var _this__subAssetPromiseCallbacks_assetBaseURL, _subPromiseCallback, _subPromiseCallback1;
19691
+ var loadingPromises = this._loadingPromises;
19692
+ var subPromiseCallback = (_this__subAssetPromiseCallbacks_assetBaseURL = this._subAssetPromiseCallbacks[assetBaseURL]) == null ? void 0 : _this__subAssetPromiseCallbacks_assetBaseURL[assetSubPath];
19693
+ var resolvedValue = (_subPromiseCallback = subPromiseCallback) == null ? void 0 : _subPromiseCallback.resolve;
19694
+ var rejectedValue = (_subPromiseCallback1 = subPromiseCallback) == null ? void 0 : _subPromiseCallback1.reject;
19695
+ var promise = new AssetPromise(function(resolve, reject) {
19696
+ if (resolvedValue) {
19697
+ // Already resolved
19698
+ resolve(resolvedValue);
19699
+ } else if (rejectedValue) {
19700
+ // Already rejected
19701
+ reject(rejectedValue);
19702
+ } else {
19703
+ var _this__subAssetPromiseCallbacks, _assetBaseURL;
19704
+ // Pending
19705
+ loadingPromises[assetURL] = promise;
19706
+ ((_this__subAssetPromiseCallbacks = _this._subAssetPromiseCallbacks)[_assetBaseURL = assetBaseURL] || (_this__subAssetPromiseCallbacks[_assetBaseURL] = {}))[assetSubPath] = {
19707
+ resolve: resolve,
19708
+ reject: reject
19709
+ };
19710
+ }
19711
+ });
19712
+ if (!resolvedValue && !rejectedValue) {
19713
+ promise.then(function() {
19611
19714
  delete loadingPromises[assetURL];
19612
19715
  }, function() {
19613
19716
  return delete loadingPromises[assetURL];
19614
19717
  });
19615
- promise.catch(function(e) {
19616
- _this._onSubAssetFail(assetURL, e);
19617
- });
19618
- return subPromise;
19619
19718
  }
19620
19719
  return promise;
19621
19720
  };
19622
- _proto._pushSubAssetPromiseCallback = function _pushSubAssetPromiseCallback(assetURL, resolve, reject) {
19623
- this._subAssetPromiseCallbacks[assetURL] = {
19624
- resolve: resolve,
19625
- reject: reject
19626
- };
19627
- };
19628
19721
  _proto._gc = function _gc(forceDestroy) {
19629
19722
  var objects = Utils.objectValues(this._referResourcePool);
19630
19723
  for(var i = 0, n = objects.length; i < n; i++){
@@ -19681,6 +19774,9 @@ var /** @internal */ PromiseState;
19681
19774
  });
19682
19775
  return result;
19683
19776
  };
19777
+ _proto._releaseSubAssetPromiseCallback = function _releaseSubAssetPromiseCallback(assetBaseURL) {
19778
+ delete this._subAssetPromiseCallbacks[assetBaseURL];
19779
+ };
19684
19780
  /**
19685
19781
  * @internal
19686
19782
  * @beta Just for internal editor, not recommended for developers.
@@ -28325,10 +28421,7 @@ var AnimatorLayerBlendingMode;
28325
28421
  /**
28326
28422
  * @internal
28327
28423
  */ _proto._onEnable = function _onEnable() {
28328
- var layersData = this._animatorLayersData;
28329
- for(var i = 0, n = layersData.length; i < n; i++){
28330
- layersData[i].layerState = LayerState.Standby;
28331
- }
28424
+ this._reset();
28332
28425
  this._entity.getComponentsIncludeChildren(Renderer, this._controlledRenderers);
28333
28426
  };
28334
28427
  /**
@@ -28882,8 +28975,11 @@ var AnimatorLayerBlendingMode;
28882
28975
  if (exitTime >= lastClipTime) {
28883
28976
  playState.currentTransitionIndex = Math.min(transitionIndex + 1, n - 1);
28884
28977
  if (this._checkConditions(state, transition)) {
28885
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28886
- return transition;
28978
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
28979
+ return transition;
28980
+ } else {
28981
+ return null;
28982
+ }
28887
28983
  }
28888
28984
  }
28889
28985
  }
@@ -28902,8 +28998,11 @@ var AnimatorLayerBlendingMode;
28902
28998
  if (exitTime <= lastClipTime) {
28903
28999
  playState.currentTransitionIndex = Math.max(transitionIndex - 1, 0);
28904
29000
  if (this._checkConditions(state, transition)) {
28905
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28906
- return transition;
29001
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
29002
+ return transition;
29003
+ } else {
29004
+ return null;
29005
+ }
28907
29006
  }
28908
29007
  }
28909
29008
  }
@@ -28913,8 +29012,11 @@ var AnimatorLayerBlendingMode;
28913
29012
  for(var i = 0, n = transitions.length; i < n; i++){
28914
29013
  var transition = transitions[i];
28915
29014
  if (this._checkConditions(state, transition)) {
28916
- this._applyTransition(layerIndex, layerData, stateMachine, transition);
28917
- return transition;
29015
+ if (this._applyTransition(layerIndex, layerData, stateMachine, transition)) {
29016
+ return transition;
29017
+ } else {
29018
+ return null;
29019
+ }
28918
29020
  }
28919
29021
  }
28920
29022
  };
@@ -28934,11 +29036,12 @@ var AnimatorLayerBlendingMode;
28934
29036
  };
28935
29037
  _proto._applyTransition = function _applyTransition(layerIndex, layerData, stateMachine, transition) {
28936
29038
  // Need prepare first, it should crossFade when to exit
28937
- this._prepareCrossFadeByTransition(transition, layerIndex);
29039
+ var success = this._prepareCrossFadeByTransition(transition, layerIndex);
28938
29040
  if (transition.isExit) {
28939
29041
  this._checkAnyAndEntryState(layerIndex, layerData, stateMachine);
28940
- return;
29042
+ return true;
28941
29043
  }
29044
+ return success;
28942
29045
  };
28943
29046
  _proto._checkConditions = function _checkConditions(state, transition) {
28944
29047
  var _state;
@@ -28950,6 +29053,9 @@ var AnimatorLayerBlendingMode;
28950
29053
  var pass = false;
28951
29054
  var _conditions_i = conditions[i], mode = _conditions_i.mode, name1 = _conditions_i.parameterName, threshold = _conditions_i.threshold;
28952
29055
  var parameter = this.getParameter(name1);
29056
+ if (!parameter) {
29057
+ return false;
29058
+ }
28953
29059
  switch(mode){
28954
29060
  case AnimatorConditionMode.Equals:
28955
29061
  if (parameter.value === threshold) {
@@ -30069,12 +30175,6 @@ var ParticleStopMode;
30069
30175
  if (!this._supportInstancedArrays) {
30070
30176
  return;
30071
30177
  }
30072
- var generator = this.generator;
30073
- generator._update(this.engine.time.deltaTime);
30074
- // No particles to render
30075
- if (generator._firstActiveElement === generator._firstFreeElement) {
30076
- return;
30077
- }
30078
30178
  Renderer1.prototype._prepareRender.call(this, context);
30079
30179
  };
30080
30180
  /**
@@ -30104,7 +30204,13 @@ var ParticleStopMode;
30104
30204
  generator._updateBoundsSimulationWorld(worldBounds);
30105
30205
  }
30106
30206
  };
30107
- _proto._updateRendererShaderData = function _updateRendererShaderData(context) {
30207
+ _proto._update = function _update(context) {
30208
+ var generator = this.generator;
30209
+ generator._update(this.engine.time.deltaTime);
30210
+ // No particles to render
30211
+ if (generator._firstActiveElement === generator._firstFreeElement) {
30212
+ return;
30213
+ }
30108
30214
  var shaderData = this.shaderData;
30109
30215
  shaderData.setFloat(ParticleRenderer._lengthScale, this.lengthScale);
30110
30216
  shaderData.setFloat(ParticleRenderer._speedScale, this.velocityScale);
@@ -34244,5 +34350,5 @@ var cacheDir = new Vector3();
34244
34350
  return CubeProbe;
34245
34351
  }(Probe);
34246
34352
 
34247
- export { AmbientLight, AnimationArrayCurve, AnimationBoolCurve, AnimationClip, AnimationClipCurveBinding, AnimationColorCurve, AnimationCurve, AnimationEvent, AnimationFloatArrayCurve, AnimationFloatCurve, AnimationQuaternionCurve, AnimationRectCurve, AnimationRefCurve, AnimationStringCurve, AnimationVector2Curve, AnimationVector3Curve, AnimationVector4Curve, Animator, AnimatorConditionMode, AnimatorController, AnimatorControllerLayer, AnimatorCullingMode, AnimatorLayerBlendingMode, AnimatorLayerMask, AnimatorState, AnimatorStateMachine, AnimatorStateTransition, AssetPromise, AssetType, Background, BackgroundMode, BackgroundTextureFillMode, BaseMaterial, BasicRenderPipeline, BlendFactor, BlendMode, BlendOperation, BlendShape, BlendShapeFrame, BlendState, BlinnPhongMaterial, BloomDownScaleMode, BloomEffect, BoolUpdateFlag, BoxColliderShape, BoxShape, Buffer, BufferBindFlag, BufferMesh, BufferUsage, BufferUtil, Burst, Camera, CameraClearFlags, CameraType, Canvas, CapsuleColliderShape, CharacterController, CircleShape, ClearableObjectPool, CloneManager, Collider, ColliderShape, ColliderShapeUpAxis, CollisionDetectionMode, ColorOverLifetimeModule, ColorSpace, ColorWriteMask, CompareFunction, Component, ConeEmitType, ConeShape, ContentRestorer, ControllerCollisionFlag, ControllerNonWalkableMode, CubeProbe, CullMode, CurveKey, DataType, DependentMode, DepthState, DepthTextureMode, DiffuseMode, DirectLight, Downsampling, DynamicCollider, DynamicColliderConstraints, EmissionModule, Engine, EngineObject, Entity, EventDispatcher, FixedJoint, FogMode, Font, FontStyle, GLCapabilityType, GradientAlphaKey, GradientColorKey, HemisphereShape, HingeJoint, HitResult, IndexBufferBinding, IndexFormat, InputManager, InterpolationType, Joint, JointLimits, JointMotor, Keyframe, Keys, Layer, Light, Loader, Logger, MSAASamples, MainModule, Material, Mesh, MeshRenderer, MeshTopology, ModelMesh, OverflowMode, PBRBaseMaterial, PBRMaterial, PBRSpecularMaterial, ParticleCompositeCurve, ParticleCompositeGradient, ParticleCurve, ParticleCurveMode, ParticleGenerator, ParticleGradient, ParticleGradientMode, ParticleMaterial, ParticleRenderMode, ParticleRenderer, ParticleScaleMode, ParticleShapeArcMode, ParticleShapeType, ParticleSimulationSpace, ParticleStopMode, PhysicsMaterial, PhysicsMaterialCombineMode, PhysicsScene, PipelineStage, PlaneColliderShape, Platform, PointLight, Pointer, PointerButton, PointerPhase, Primitive, PrimitiveMesh, Probe, RasterState, ReferResource, RenderBufferDepthFormat, RenderFace, RenderQueue, RenderQueueType, RenderState, RenderStateElementKey as RenderStateDataKey, RenderTarget, RenderTargetBlendState, Renderer, ReplacementFailureStrategy, ResourceManager, ReturnableObjectPool, RotationOverLifetimeModule, Scene, SceneManager, Script, SetDataOptions, Shader, ShaderData, ShaderFactory, ShaderLib, ShaderMacro, ShaderMacroCollection, ShaderPass, ShaderPlatformTarget, ShaderProperty, ShaderPropertyType, ShaderTagKey, ShadowCascadesMode, ShadowResolution, ShadowType, SizeOverLifetimeModule, Skin, SkinnedMeshRenderer, Sky, SkyBoxMaterial, SkyProceduralMaterial, SphereColliderShape, SphereShape, SpotLight, SpringJoint, Sprite, SpriteAtlas, SpriteDrawMode, SpriteMask, SpriteMaskInteraction, SpriteMaskLayer, SpriteRenderer, SpriteTileMode, StateMachineScript, StaticCollider, StencilOperation, StencilState, SubMesh, SubPrimitive, SubShader, SunMode, SystemInfo, TextHorizontalAlignment, TextRenderer, TextUtils, TextVerticalAlignment, Texture, Texture2D, Texture2DArray, TextureCoordinate, TextureCube, TextureCubeFace, TextureDepthCompareFunction, TextureFilterMode, TextureFormat, TextureSheetAnimationModule, TextureUsage, TextureWrapMode, Time, TonemappingEffect, TonemappingMode, TrailMaterial, TrailRenderer, Transform, UnlitMaterial, Utils, VelocityOverLifetimeModule, VertexAttribute, VertexBufferBinding, VertexElement, VertexElementFormat, WrapMode, XRManager, _PostProcessManager, assignmentClone, deepClone, dependentComponents, ignoreClone, request, resourceLoader, shallowClone };
34353
+ export { AmbientLight, AnimationArrayCurve, AnimationBoolCurve, AnimationClip, AnimationClipCurveBinding, AnimationColorCurve, AnimationCurve, AnimationEvent, AnimationFloatArrayCurve, AnimationFloatCurve, AnimationQuaternionCurve, AnimationRectCurve, AnimationRefCurve, AnimationStringCurve, AnimationVector2Curve, AnimationVector3Curve, AnimationVector4Curve, Animator, AnimatorCondition, AnimatorConditionMode, AnimatorController, AnimatorControllerLayer, AnimatorControllerParameter, AnimatorCullingMode, AnimatorLayerBlendingMode, AnimatorLayerMask, AnimatorState, AnimatorStateMachine, AnimatorStateTransition, AssetPromise, AssetType, Background, BackgroundMode, BackgroundTextureFillMode, BaseMaterial, BasicRenderPipeline, BlendFactor, BlendMode, BlendOperation, BlendShape, BlendShapeFrame, BlendState, BlinnPhongMaterial, BloomDownScaleMode, BloomEffect, BoolUpdateFlag, BoxColliderShape, BoxShape, Buffer, BufferBindFlag, BufferMesh, BufferUsage, BufferUtil, Burst, Camera, CameraClearFlags, CameraType, Canvas, CapsuleColliderShape, CharacterController, CircleShape, ClearableObjectPool, CloneManager, Collider, ColliderShape, ColliderShapeUpAxis, CollisionDetectionMode, ColorOverLifetimeModule, ColorSpace, ColorWriteMask, CompareFunction, Component, ConeEmitType, ConeShape, ContentRestorer, ControllerCollisionFlag, ControllerNonWalkableMode, CubeProbe, CullMode, CurveKey, DataType, DependentMode, DepthState, DepthTextureMode, DiffuseMode, DirectLight, Downsampling, DynamicCollider, DynamicColliderConstraints, EmissionModule, Engine, EngineObject, Entity, EventDispatcher, FixedJoint, FogMode, Font, FontStyle, GLCapabilityType, GradientAlphaKey, GradientColorKey, HemisphereShape, HingeJoint, HitResult, IndexBufferBinding, IndexFormat, InputManager, InterpolationType, Joint, JointLimits, JointMotor, Keyframe, Keys, Layer, LayerPathMask, Light, Loader, Logger, MSAASamples, MainModule, Material, Mesh, MeshRenderer, MeshTopology, ModelMesh, OverflowMode, PBRBaseMaterial, PBRMaterial, PBRSpecularMaterial, ParticleCompositeCurve, ParticleCompositeGradient, ParticleCurve, ParticleCurveMode, ParticleGenerator, ParticleGradient, ParticleGradientMode, ParticleMaterial, ParticleRenderMode, ParticleRenderer, ParticleScaleMode, ParticleShapeArcMode, ParticleShapeType, ParticleSimulationSpace, ParticleStopMode, PhysicsMaterial, PhysicsMaterialCombineMode, PhysicsScene, PipelineStage, PlaneColliderShape, Platform, PointLight, Pointer, PointerButton, PointerPhase, Primitive, PrimitiveMesh, Probe, RasterState, ReferResource, RenderBufferDepthFormat, RenderFace, RenderQueue, RenderQueueType, RenderState, RenderStateElementKey as RenderStateDataKey, RenderTarget, RenderTargetBlendState, Renderer, ReplacementFailureStrategy, ResourceManager, ReturnableObjectPool, RotationOverLifetimeModule, SafeLoopArray, Scene, SceneManager, Script, SetDataOptions, Shader, ShaderData, ShaderFactory, ShaderLib, ShaderMacro, ShaderMacroCollection, ShaderPass, ShaderPlatformTarget, ShaderProperty, ShaderPropertyType, ShaderTagKey, ShadowCascadesMode, ShadowResolution, ShadowType, SizeOverLifetimeModule, Skin, SkinnedMeshRenderer, Sky, SkyBoxMaterial, SkyProceduralMaterial, SphereColliderShape, SphereShape, SpotLight, SpringJoint, Sprite, SpriteAtlas, SpriteDrawMode, SpriteMask, SpriteMaskInteraction, SpriteMaskLayer, SpriteRenderer, SpriteTileMode, StateMachineScript, StaticCollider, StencilOperation, StencilState, SubMesh, SubPrimitive, SubShader, SunMode, SystemInfo, TextHorizontalAlignment, TextRenderer, TextUtils, TextVerticalAlignment, Texture, Texture2D, Texture2DArray, TextureCoordinate, TextureCube, TextureCubeFace, TextureDepthCompareFunction, TextureFilterMode, TextureFormat, TextureSheetAnimationModule, TextureUsage, TextureWrapMode, Time, TonemappingEffect, TonemappingMode, TrailMaterial, TrailRenderer, Transform, UnlitMaterial, Utils, VelocityOverLifetimeModule, VertexAttribute, VertexBufferBinding, VertexElement, VertexElementFormat, WrapMode, XRManager, _PostProcessManager, assignmentClone, deepClone, dependentComponents, ignoreClone, request, resourceLoader, shallowClone };
34248
34354
  //# sourceMappingURL=module.js.map