@galacean/engine-core 1.1.0-beta.23 → 1.1.0-beta.25

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 (58) hide show
  1. package/dist/main.js +111 -24
  2. package/dist/main.js.map +1 -1
  3. package/dist/miniprogram.js +111 -24
  4. package/dist/module.js +111 -24
  5. package/dist/module.js.map +1 -1
  6. package/package.json +3 -3
  7. package/types/2d/data/RenderData2D.d.ts +1 -0
  8. package/types/RenderPipeline/MeshRenderData.d.ts +17 -0
  9. package/types/RenderPipeline/MeshRenderElement.d.ts +19 -0
  10. package/types/RenderPipeline/SpriteElement.d.ts +15 -0
  11. package/types/RenderPipeline/SpriteMaskElement.d.ts +12 -0
  12. package/types/RenderPipeline/TextRenderElement.d.ts +8 -0
  13. package/types/asset/IRefObject.d.ts +2 -0
  14. package/types/asset/RefObject.d.ts +27 -0
  15. package/types/base/Event.d.ts +24 -0
  16. package/types/base/Util.d.ts +14 -0
  17. package/types/particle/modules/ParticleGradient.d.ts +38 -18
  18. package/types/physics/PhysicsManager.d.ts +78 -0
  19. package/types/animation/AnimatorLayerMask.d.ts +0 -45
  20. package/types/animation/LayerPathMask.d.ts +0 -16
  21. package/types/xr/XRManager.d.ts +0 -94
  22. package/types/xr/feature/XRFeature.d.ts +0 -60
  23. package/types/xr/feature/XRFeatureManager.d.ts +0 -65
  24. package/types/xr/feature/XRFeatureType.d.ts +0 -15
  25. package/types/xr/feature/camera/XRCameraManager.d.ts +0 -34
  26. package/types/xr/feature/hitTest/TrackableType.d.ts +0 -12
  27. package/types/xr/feature/hitTest/XRHitTest.d.ts +0 -41
  28. package/types/xr/feature/hitTest/XRHitTestManager.d.ts +0 -38
  29. package/types/xr/feature/hitTest/XRHitTestType.d.ts +0 -16
  30. package/types/xr/feature/movementTracking/XRMovementTracking.d.ts +0 -18
  31. package/types/xr/feature/movementTracking/XRMovementTrackingManager.d.ts +0 -10
  32. package/types/xr/feature/movementTracking/XRMovementTrackingMode.d.ts +0 -5
  33. package/types/xr/feature/trackable/XRRequestTrackingState.d.ts +0 -11
  34. package/types/xr/feature/trackable/XRTrackableFeature.d.ts +0 -44
  35. package/types/xr/feature/trackable/XRTrackableManager.d.ts +0 -41
  36. package/types/xr/feature/trackable/anchor/XRAnchorTracking.d.ts +0 -29
  37. package/types/xr/feature/trackable/anchor/XRAnchorTrackingManager.d.ts +0 -20
  38. package/types/xr/feature/trackable/image/XRImageTracking.d.ts +0 -40
  39. package/types/xr/feature/trackable/image/XRImageTrackingManager.d.ts +0 -31
  40. package/types/xr/feature/trackable/image/XRReferenceImage.d.ts +0 -11
  41. package/types/xr/feature/trackable/plane/XRPlaneMode.d.ts +0 -13
  42. package/types/xr/feature/trackable/plane/XRPlaneTracking.d.ts +0 -20
  43. package/types/xr/feature/trackable/plane/XRPlaneTrackingManager.d.ts +0 -11
  44. package/types/xr/index.d.ts +0 -26
  45. package/types/xr/input/XRCamera.d.ts +0 -26
  46. package/types/xr/input/XRController.d.ts +0 -36
  47. package/types/xr/input/XRControllerPoseMode.d.ts +0 -9
  48. package/types/xr/input/XRInputButton.d.ts +0 -19
  49. package/types/xr/input/XRInputEvent.d.ts +0 -24
  50. package/types/xr/input/XRInputEventType.d.ts +0 -11
  51. package/types/xr/input/XRInputManager.d.ts +0 -57
  52. package/types/xr/input/XRInputType.d.ts +0 -23
  53. package/types/xr/input/XRTargetRayMode.d.ts +0 -12
  54. package/types/xr/input/XRTrackedUpdateFlag.d.ts +0 -11
  55. package/types/xr/input/XRTrackingState.d.ts +0 -11
  56. package/types/xr/session/XRSessionManager.d.ts +0 -57
  57. package/types/xr/session/XRSessionMode.d.ts +0 -8
  58. package/types/xr/session/XRSessionState.d.ts +0 -13
@@ -3528,9 +3528,9 @@ var rePropName$1 = RegExp(// Match anything that isn't a dot or bracket.
3528
3528
  if (relativeToLocal) {
3529
3529
  var _tempVec30 = Transform._tempVec30;
3530
3530
  miniprogram.Vector3.transformByQuat(translation, this.worldRotationQuaternion, _tempVec30);
3531
- this._worldPosition.add(_tempVec30);
3531
+ this.worldPosition.add(_tempVec30);
3532
3532
  } else {
3533
- this._worldPosition.add(translation);
3533
+ this.worldPosition.add(translation);
3534
3534
  }
3535
3535
  };
3536
3536
  _proto._rotateXYZ = function _rotateXYZ(x, y, z, relativeToLocal) {
@@ -5029,7 +5029,7 @@ var begin_position_vert = "#define GLSLIFY 1\nvec4 position=vec4(POSITION,1.0);"
5029
5029
 
5030
5030
  var blendShape_input = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_BLENDSHAPE\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nuniform mediump sampler2DArray renderer_BlendShapeTexture;uniform ivec3 renderer_BlendShapeTextureInfo;uniform float renderer_BlendShapeWeights[RENDERER_BLENDSHAPE_COUNT];\n#else\nattribute vec3 POSITION_BS0;attribute vec3 POSITION_BS1;\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\nattribute vec3 NORMAL_BS0;attribute vec3 NORMAL_BS1;attribute vec3 TANGENT_BS0;attribute vec3 TANGENT_BS1;uniform float renderer_BlendShapeWeights[2];\n#else\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) || defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\nattribute vec3 POSITION_BS2;attribute vec3 POSITION_BS3;\n#ifdef RENDERER_BLENDSHAPE_HAS_NORMAL\nattribute vec3 NORMAL_BS0;attribute vec3 NORMAL_BS1;attribute vec3 NORMAL_BS2;attribute vec3 NORMAL_BS3;\n#endif\n#ifdef RENDERER_BLENDSHAPE_HAS_TANGENT\nattribute vec3 TANGENT_BS0;attribute vec3 TANGENT_BS1;attribute vec3 TANGENT_BS2;attribute vec3 TANGENT_BS3;\n#endif\nuniform float renderer_BlendShapeWeights[4];\n#else\nattribute vec3 POSITION_BS2;attribute vec3 POSITION_BS3;attribute vec3 POSITION_BS4;attribute vec3 POSITION_BS5;attribute vec3 POSITION_BS6;attribute vec3 POSITION_BS7;uniform float renderer_BlendShapeWeights[8];\n#endif\n#endif\n#endif\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nvec3 getBlendShapeVertexElement(int blendShapeIndex,int vertexElementIndex){int y=vertexElementIndex/renderer_BlendShapeTextureInfo.y;int x=vertexElementIndex-y*renderer_BlendShapeTextureInfo.y;ivec3 uv=ivec3(x,y,blendShapeIndex);return texelFetch(renderer_BlendShapeTexture,uv,0).xyz;}\n#endif\n#endif\n"; // eslint-disable-line
5031
5031
 
5032
- var blendShape_vert = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_BLENDSHAPE\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nint vertexOffset=gl_VertexID*renderer_BlendShapeTextureInfo.x;for(int i=0;i<RENDERER_BLENDSHAPE_COUNT;i++){int vertexElementOffset=vertexOffset;float weight=renderer_BlendShapeWeights[i];position.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#ifndef MATERIAL_OMIT_NORMAL\n#if defined( RENDERER_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_NORMAL )\nvertexElementOffset+=1;normal+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\nvertexElementOffset+=1;tangent.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#endif\n}\n#else\nposition.xyz+=POSITION_BS0*renderer_BlendShapeWeights[0];position.xyz+=POSITION_BS1*renderer_BlendShapeWeights[1];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\n#ifdef RENDERER_HAS_NORMAL\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];\n#endif\n#endif\n#else\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) || defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_HAS_NORMAL )\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];normal+=NORMAL_BS2*renderer_BlendShapeWeights[2];normal+=NORMAL_BS3*renderer_BlendShapeWeights[3];\n#endif\n#if defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];tangent.xyz+=TANGENT_BS2*renderer_BlendShapeWeights[2];tangent.xyz+=TANGENT_BS3*renderer_BlendShapeWeights[3];\n#endif\n#endif\n#else\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];position.xyz+=POSITION_BS4*renderer_BlendShapeWeights[4];position.xyz+=POSITION_BS5*renderer_BlendShapeWeights[5];position.xyz+=POSITION_BS6*renderer_BlendShapeWeights[6];position.xyz+=POSITION_BS7*renderer_BlendShapeWeights[7];\n#endif\n#endif\n#endif\n#endif\n"; // eslint-disable-line
5032
+ var blendShape_vert = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_BLENDSHAPE\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nint vertexOffset=gl_VertexID*renderer_BlendShapeTextureInfo.x;for(int i=0;i<RENDERER_BLENDSHAPE_COUNT;i++){int vertexElementOffset=vertexOffset;float weight=renderer_BlendShapeWeights[i];if(weight!=0.0){position.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#ifndef MATERIAL_OMIT_NORMAL\n#if defined( RENDERER_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_NORMAL )\nvertexElementOffset+=1;normal+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\nvertexElementOffset+=1;tangent.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#endif\n}}\n#else\nposition.xyz+=POSITION_BS0*renderer_BlendShapeWeights[0];position.xyz+=POSITION_BS1*renderer_BlendShapeWeights[1];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\n#ifdef RENDERER_HAS_NORMAL\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];\n#endif\n#endif\n#else\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) || defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_HAS_NORMAL )\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];normal+=NORMAL_BS2*renderer_BlendShapeWeights[2];normal+=NORMAL_BS3*renderer_BlendShapeWeights[3];\n#endif\n#if defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];tangent.xyz+=TANGENT_BS2*renderer_BlendShapeWeights[2];tangent.xyz+=TANGENT_BS3*renderer_BlendShapeWeights[3];\n#endif\n#endif\n#else\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];position.xyz+=POSITION_BS4*renderer_BlendShapeWeights[4];position.xyz+=POSITION_BS5*renderer_BlendShapeWeights[5];position.xyz+=POSITION_BS6*renderer_BlendShapeWeights[6];position.xyz+=POSITION_BS7*renderer_BlendShapeWeights[7];\n#endif\n#endif\n#endif\n#endif\n"; // eslint-disable-line
5033
5033
 
5034
5034
  var color_vert = "#define GLSLIFY 1\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\nv_color=COLOR_0;\n#endif\n"; // eslint-disable-line
5035
5035
 
@@ -6697,6 +6697,9 @@ __decorate([
6697
6697
  throw "ShaderLab has not been set up yet.";
6698
6698
  }
6699
6699
  var shaderInfo = Shader._shaderLab.parseShader(nameOrShaderSource);
6700
+ if (shaderMap[shaderInfo.name]) {
6701
+ throw 'Shader named "' + shaderInfo.name + '" already exists.';
6702
+ }
6700
6703
  var subShaderList = shaderInfo.subShaders.map(function(subShaderInfo) {
6701
6704
  var passList = subShaderInfo.passes.map(function(passInfo) {
6702
6705
  if (typeof passInfo === "string") {
@@ -6951,10 +6954,11 @@ __decorate([
6951
6954
  return this.getPropertyValue(property);
6952
6955
  };
6953
6956
  _proto.setTexture = function setTexture(property, value) {
6954
- if (this._getReferCount() > 0) {
6957
+ var refCount = this._refCount;
6958
+ if (refCount > 0) {
6955
6959
  var lastValue = this.getPropertyValue(property);
6956
- lastValue && lastValue._addReferCount(-1);
6957
- value && value._addReferCount(1);
6960
+ lastValue && lastValue._addReferCount(-refCount);
6961
+ value && value._addReferCount(refCount);
6958
6962
  }
6959
6963
  this._setPropertyValue(property, exports.ShaderPropertyType.Texture, value);
6960
6964
  };
@@ -6962,16 +6966,17 @@ __decorate([
6962
6966
  return this.getPropertyValue(property);
6963
6967
  };
6964
6968
  _proto.setTextureArray = function setTextureArray(property, value) {
6965
- if (this._getReferCount() > 0) {
6969
+ var refCount = this._refCount;
6970
+ if (refCount > 0) {
6966
6971
  var lastValue = this.getPropertyValue(property);
6967
6972
  if (lastValue) {
6968
6973
  for(var i = 0, n = lastValue.length; i < n; i++){
6969
- lastValue[i]._addReferCount(-1);
6974
+ lastValue[i]._addReferCount(-refCount);
6970
6975
  }
6971
6976
  }
6972
6977
  if (value) {
6973
6978
  for(var i1 = 0, n1 = value.length; i1 < n1; i1++){
6974
- value[i1]._addReferCount(1);
6979
+ value[i1]._addReferCount(refCount);
6975
6980
  }
6976
6981
  }
6977
6982
  }
@@ -27683,15 +27688,17 @@ __decorate([
27683
27688
  throw new Error("Gradient can only have 4 color keys");
27684
27689
  }
27685
27690
  var key = typeof timeOrKey === "number" ? new GradientColorKey(timeOrKey, color) : timeOrKey;
27691
+ key._onValueChanged = this._setColorTypeArrayDirty.bind(this);
27686
27692
  this._addKey(colorKeys, key);
27687
27693
  this._colorTypeArrayDirty = true;
27688
27694
  };
27689
27695
  _proto.addAlphaKey = function addAlphaKey(timeOrKey, alpha) {
27690
27696
  var alphaKeys = this._alphaKeys;
27691
27697
  if (alphaKeys.length === 4) {
27692
- throw new Error("Gradient can only have 4 color keys");
27698
+ throw new Error("Gradient can only have 4 alpha keys");
27693
27699
  }
27694
27700
  var key = typeof timeOrKey === "number" ? new GradientAlphaKey(timeOrKey, alpha) : timeOrKey;
27701
+ key._onValueChanged = this._setAlphaTypeArrayDirty.bind(this);
27695
27702
  this._addKey(alphaKeys, key);
27696
27703
  this._alphaTypeArrayDirty = true;
27697
27704
  };
@@ -27699,6 +27706,7 @@ __decorate([
27699
27706
  * Remove a color key from the gradient.
27700
27707
  * @param index - The remove color key index
27701
27708
  */ _proto.removeColorKey = function removeColorKey(index) {
27709
+ this._colorKeys[index]._onValueChanged = null;
27702
27710
  this._removeKey(this._colorKeys, index);
27703
27711
  this._colorTypeArrayDirty = true;
27704
27712
  };
@@ -27706,6 +27714,7 @@ __decorate([
27706
27714
  * Remove an alpha key from the gradient.
27707
27715
  * @param index - The remove alpha key index
27708
27716
  */ _proto.removeAlphaKey = function removeAlphaKey(index) {
27717
+ this._alphaKeys[index]._onValueChanged = null;
27709
27718
  this._removeKey(this._alphaKeys, index);
27710
27719
  this._alphaTypeArrayDirty = true;
27711
27720
  };
@@ -27714,13 +27723,21 @@ __decorate([
27714
27723
  * @param colorKeys - The color keys
27715
27724
  * @param alphaKeys - The alpha keys
27716
27725
  */ _proto.setKeys = function setKeys(colorKeys, alphaKeys) {
27717
- this._alphaKeys.length = 0;
27718
- this._colorKeys.length = 0;
27719
- for(var i = 0, n = colorKeys.length; i < n; i++){
27720
- this._addKey(this._colorKeys, colorKeys[i]);
27726
+ var currentColorKeys = this._colorKeys;
27727
+ var currentAlphaKeys = this._alphaKeys;
27728
+ for(var i = 0, n = currentColorKeys.length; i < n; i++){
27729
+ currentColorKeys[i]._onValueChanged = null;
27721
27730
  }
27722
- for(var i1 = 0, n1 = alphaKeys.length; i1 < n1; i1++){
27723
- this._addKey(this._alphaKeys, alphaKeys[i1]);
27731
+ for(var i1 = 0, n1 = currentAlphaKeys.length; i1 < n1; i1++){
27732
+ currentAlphaKeys[i1]._onValueChanged = null;
27733
+ }
27734
+ currentColorKeys.length = 0;
27735
+ currentAlphaKeys.length = 0;
27736
+ for(var i2 = 0, n2 = colorKeys.length; i2 < n2; i2++){
27737
+ this._addKey(currentColorKeys, colorKeys[i2]);
27738
+ }
27739
+ for(var i3 = 0, n3 = alphaKeys.length; i3 < n3; i3++){
27740
+ this._addKey(currentAlphaKeys, alphaKeys[i3]);
27724
27741
  }
27725
27742
  this._alphaTypeArrayDirty = true;
27726
27743
  this._colorTypeArrayDirty = true;
@@ -27781,6 +27798,12 @@ __decorate([
27781
27798
  _proto._removeKey = function _removeKey(keys, index) {
27782
27799
  keys.splice(index, 1);
27783
27800
  };
27801
+ _proto._setColorTypeArrayDirty = function _setColorTypeArrayDirty() {
27802
+ this._colorTypeArrayDirty = true;
27803
+ };
27804
+ _proto._setAlphaTypeArrayDirty = function _setAlphaTypeArrayDirty() {
27805
+ this._alphaTypeArrayDirty = true;
27806
+ };
27784
27807
  _create_class(ParticleGradient, [
27785
27808
  {
27786
27809
  key: "colorKeys",
@@ -27815,16 +27838,80 @@ __decorate([
27815
27838
  ], ParticleGradient.prototype, "_alphaTypeArray", void 0);
27816
27839
  /**
27817
27840
  * The color key of the particle gradient.
27818
- */ var GradientColorKey = function GradientColorKey(time, color) {
27819
- this.time = time;
27820
- this.color = color;
27821
- };
27841
+ */ var GradientColorKey = /*#__PURE__*/ function() {
27842
+ function GradientColorKey(time, color) {
27843
+ /** @internal */ this._onValueChanged = null;
27844
+ this._color = new miniprogram.Color();
27845
+ this._time = time;
27846
+ color && this._color.copyFrom(color);
27847
+ // @ts-ignore
27848
+ this._color._onValueChanged = this._onValueChanged;
27849
+ }
27850
+ _create_class(GradientColorKey, [
27851
+ {
27852
+ key: "time",
27853
+ get: /**
27854
+ * The key time.
27855
+ */ function get() {
27856
+ return this._time;
27857
+ },
27858
+ set: function set(value) {
27859
+ this._time = value;
27860
+ this._onValueChanged && this._onValueChanged();
27861
+ }
27862
+ },
27863
+ {
27864
+ key: "color",
27865
+ get: /**
27866
+ * The key color.
27867
+ */ function get() {
27868
+ return this._color;
27869
+ },
27870
+ set: function set(value) {
27871
+ if (this._color !== value) {
27872
+ this._color.copyFrom(value);
27873
+ }
27874
+ }
27875
+ }
27876
+ ]);
27877
+ return GradientColorKey;
27878
+ }();
27822
27879
  /**
27823
27880
  * The alpha key of the particle gradient.
27824
- */ var GradientAlphaKey = function GradientAlphaKey(time, alpha) {
27825
- this.time = time;
27826
- this.alpha = alpha;
27827
- };
27881
+ */ var GradientAlphaKey = /*#__PURE__*/ function() {
27882
+ function GradientAlphaKey(time, alpha) {
27883
+ /** @internal */ this._onValueChanged = null;
27884
+ this._time = time;
27885
+ this._alpha = alpha;
27886
+ }
27887
+ _create_class(GradientAlphaKey, [
27888
+ {
27889
+ key: "time",
27890
+ get: /**
27891
+ * The key time.
27892
+ */ function get() {
27893
+ return this._time;
27894
+ },
27895
+ set: function set(value) {
27896
+ this._time = value;
27897
+ this._onValueChanged && this._onValueChanged();
27898
+ }
27899
+ },
27900
+ {
27901
+ key: "alpha",
27902
+ get: /**
27903
+ * The key alpha.
27904
+ */ function get() {
27905
+ return this._alpha;
27906
+ },
27907
+ set: function set(value) {
27908
+ this._alpha = value;
27909
+ this._onValueChanged && this._onValueChanged();
27910
+ }
27911
+ }
27912
+ ]);
27913
+ return GradientAlphaKey;
27914
+ }();
27828
27915
 
27829
27916
  /**
27830
27917
  * Particle composite gradient.
package/dist/module.js CHANGED
@@ -3523,9 +3523,9 @@ var rePropName$1 = RegExp(// Match anything that isn't a dot or bracket.
3523
3523
  if (relativeToLocal) {
3524
3524
  var _tempVec30 = Transform._tempVec30;
3525
3525
  Vector3.transformByQuat(translation, this.worldRotationQuaternion, _tempVec30);
3526
- this._worldPosition.add(_tempVec30);
3526
+ this.worldPosition.add(_tempVec30);
3527
3527
  } else {
3528
- this._worldPosition.add(translation);
3528
+ this.worldPosition.add(translation);
3529
3529
  }
3530
3530
  };
3531
3531
  _proto._rotateXYZ = function _rotateXYZ(x, y, z, relativeToLocal) {
@@ -5024,7 +5024,7 @@ var begin_position_vert = "#define GLSLIFY 1\nvec4 position=vec4(POSITION,1.0);"
5024
5024
 
5025
5025
  var blendShape_input = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_BLENDSHAPE\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nuniform mediump sampler2DArray renderer_BlendShapeTexture;uniform ivec3 renderer_BlendShapeTextureInfo;uniform float renderer_BlendShapeWeights[RENDERER_BLENDSHAPE_COUNT];\n#else\nattribute vec3 POSITION_BS0;attribute vec3 POSITION_BS1;\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\nattribute vec3 NORMAL_BS0;attribute vec3 NORMAL_BS1;attribute vec3 TANGENT_BS0;attribute vec3 TANGENT_BS1;uniform float renderer_BlendShapeWeights[2];\n#else\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) || defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\nattribute vec3 POSITION_BS2;attribute vec3 POSITION_BS3;\n#ifdef RENDERER_BLENDSHAPE_HAS_NORMAL\nattribute vec3 NORMAL_BS0;attribute vec3 NORMAL_BS1;attribute vec3 NORMAL_BS2;attribute vec3 NORMAL_BS3;\n#endif\n#ifdef RENDERER_BLENDSHAPE_HAS_TANGENT\nattribute vec3 TANGENT_BS0;attribute vec3 TANGENT_BS1;attribute vec3 TANGENT_BS2;attribute vec3 TANGENT_BS3;\n#endif\nuniform float renderer_BlendShapeWeights[4];\n#else\nattribute vec3 POSITION_BS2;attribute vec3 POSITION_BS3;attribute vec3 POSITION_BS4;attribute vec3 POSITION_BS5;attribute vec3 POSITION_BS6;attribute vec3 POSITION_BS7;uniform float renderer_BlendShapeWeights[8];\n#endif\n#endif\n#endif\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nvec3 getBlendShapeVertexElement(int blendShapeIndex,int vertexElementIndex){int y=vertexElementIndex/renderer_BlendShapeTextureInfo.y;int x=vertexElementIndex-y*renderer_BlendShapeTextureInfo.y;ivec3 uv=ivec3(x,y,blendShapeIndex);return texelFetch(renderer_BlendShapeTexture,uv,0).xyz;}\n#endif\n#endif\n"; // eslint-disable-line
5026
5026
 
5027
- var blendShape_vert = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_BLENDSHAPE\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nint vertexOffset=gl_VertexID*renderer_BlendShapeTextureInfo.x;for(int i=0;i<RENDERER_BLENDSHAPE_COUNT;i++){int vertexElementOffset=vertexOffset;float weight=renderer_BlendShapeWeights[i];position.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#ifndef MATERIAL_OMIT_NORMAL\n#if defined( RENDERER_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_NORMAL )\nvertexElementOffset+=1;normal+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\nvertexElementOffset+=1;tangent.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#endif\n}\n#else\nposition.xyz+=POSITION_BS0*renderer_BlendShapeWeights[0];position.xyz+=POSITION_BS1*renderer_BlendShapeWeights[1];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\n#ifdef RENDERER_HAS_NORMAL\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];\n#endif\n#endif\n#else\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) || defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_HAS_NORMAL )\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];normal+=NORMAL_BS2*renderer_BlendShapeWeights[2];normal+=NORMAL_BS3*renderer_BlendShapeWeights[3];\n#endif\n#if defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];tangent.xyz+=TANGENT_BS2*renderer_BlendShapeWeights[2];tangent.xyz+=TANGENT_BS3*renderer_BlendShapeWeights[3];\n#endif\n#endif\n#else\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];position.xyz+=POSITION_BS4*renderer_BlendShapeWeights[4];position.xyz+=POSITION_BS5*renderer_BlendShapeWeights[5];position.xyz+=POSITION_BS6*renderer_BlendShapeWeights[6];position.xyz+=POSITION_BS7*renderer_BlendShapeWeights[7];\n#endif\n#endif\n#endif\n#endif\n"; // eslint-disable-line
5027
+ var blendShape_vert = "#define GLSLIFY 1\n#ifdef RENDERER_HAS_BLENDSHAPE\n#ifdef RENDERER_BLENDSHAPE_USE_TEXTURE\nint vertexOffset=gl_VertexID*renderer_BlendShapeTextureInfo.x;for(int i=0;i<RENDERER_BLENDSHAPE_COUNT;i++){int vertexElementOffset=vertexOffset;float weight=renderer_BlendShapeWeights[i];if(weight!=0.0){position.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#ifndef MATERIAL_OMIT_NORMAL\n#if defined( RENDERER_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_NORMAL )\nvertexElementOffset+=1;normal+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\nvertexElementOffset+=1;tangent.xyz+=getBlendShapeVertexElement(i,vertexElementOffset)*weight;\n#endif\n#endif\n}}\n#else\nposition.xyz+=POSITION_BS0*renderer_BlendShapeWeights[0];position.xyz+=POSITION_BS1*renderer_BlendShapeWeights[1];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\n#ifdef RENDERER_HAS_NORMAL\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];\n#endif\n#if defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];\n#endif\n#endif\n#else\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) || defined( RENDERER_BLENDSHAPE_HAS_TANGENT )\n#ifndef MATERIAL_OMIT_NORMAL\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];\n#if defined( RENDERER_BLENDSHAPE_HAS_NORMAL ) && defined( RENDERER_HAS_NORMAL )\nnormal+=NORMAL_BS0*renderer_BlendShapeWeights[0];normal+=NORMAL_BS1*renderer_BlendShapeWeights[1];normal+=NORMAL_BS2*renderer_BlendShapeWeights[2];normal+=NORMAL_BS3*renderer_BlendShapeWeights[3];\n#endif\n#if defined(RENDERER_BLENDSHAPE_HAS_TANGENT) && defined( RENDERER_HAS_TANGENT ) && ( defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE) )\ntangent.xyz+=TANGENT_BS0*renderer_BlendShapeWeights[0];tangent.xyz+=TANGENT_BS1*renderer_BlendShapeWeights[1];tangent.xyz+=TANGENT_BS2*renderer_BlendShapeWeights[2];tangent.xyz+=TANGENT_BS3*renderer_BlendShapeWeights[3];\n#endif\n#endif\n#else\nposition.xyz+=POSITION_BS2*renderer_BlendShapeWeights[2];position.xyz+=POSITION_BS3*renderer_BlendShapeWeights[3];position.xyz+=POSITION_BS4*renderer_BlendShapeWeights[4];position.xyz+=POSITION_BS5*renderer_BlendShapeWeights[5];position.xyz+=POSITION_BS6*renderer_BlendShapeWeights[6];position.xyz+=POSITION_BS7*renderer_BlendShapeWeights[7];\n#endif\n#endif\n#endif\n#endif\n"; // eslint-disable-line
5028
5028
 
5029
5029
  var color_vert = "#define GLSLIFY 1\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\nv_color=COLOR_0;\n#endif\n"; // eslint-disable-line
5030
5030
 
@@ -6692,6 +6692,9 @@ __decorate([
6692
6692
  throw "ShaderLab has not been set up yet.";
6693
6693
  }
6694
6694
  var shaderInfo = Shader._shaderLab.parseShader(nameOrShaderSource);
6695
+ if (shaderMap[shaderInfo.name]) {
6696
+ throw 'Shader named "' + shaderInfo.name + '" already exists.';
6697
+ }
6695
6698
  var subShaderList = shaderInfo.subShaders.map(function(subShaderInfo) {
6696
6699
  var passList = subShaderInfo.passes.map(function(passInfo) {
6697
6700
  if (typeof passInfo === "string") {
@@ -6946,10 +6949,11 @@ __decorate([
6946
6949
  return this.getPropertyValue(property);
6947
6950
  };
6948
6951
  _proto.setTexture = function setTexture(property, value) {
6949
- if (this._getReferCount() > 0) {
6952
+ var refCount = this._refCount;
6953
+ if (refCount > 0) {
6950
6954
  var lastValue = this.getPropertyValue(property);
6951
- lastValue && lastValue._addReferCount(-1);
6952
- value && value._addReferCount(1);
6955
+ lastValue && lastValue._addReferCount(-refCount);
6956
+ value && value._addReferCount(refCount);
6953
6957
  }
6954
6958
  this._setPropertyValue(property, ShaderPropertyType.Texture, value);
6955
6959
  };
@@ -6957,16 +6961,17 @@ __decorate([
6957
6961
  return this.getPropertyValue(property);
6958
6962
  };
6959
6963
  _proto.setTextureArray = function setTextureArray(property, value) {
6960
- if (this._getReferCount() > 0) {
6964
+ var refCount = this._refCount;
6965
+ if (refCount > 0) {
6961
6966
  var lastValue = this.getPropertyValue(property);
6962
6967
  if (lastValue) {
6963
6968
  for(var i = 0, n = lastValue.length; i < n; i++){
6964
- lastValue[i]._addReferCount(-1);
6969
+ lastValue[i]._addReferCount(-refCount);
6965
6970
  }
6966
6971
  }
6967
6972
  if (value) {
6968
6973
  for(var i1 = 0, n1 = value.length; i1 < n1; i1++){
6969
- value[i1]._addReferCount(1);
6974
+ value[i1]._addReferCount(refCount);
6970
6975
  }
6971
6976
  }
6972
6977
  }
@@ -27678,15 +27683,17 @@ __decorate([
27678
27683
  throw new Error("Gradient can only have 4 color keys");
27679
27684
  }
27680
27685
  var key = typeof timeOrKey === "number" ? new GradientColorKey(timeOrKey, color) : timeOrKey;
27686
+ key._onValueChanged = this._setColorTypeArrayDirty.bind(this);
27681
27687
  this._addKey(colorKeys, key);
27682
27688
  this._colorTypeArrayDirty = true;
27683
27689
  };
27684
27690
  _proto.addAlphaKey = function addAlphaKey(timeOrKey, alpha) {
27685
27691
  var alphaKeys = this._alphaKeys;
27686
27692
  if (alphaKeys.length === 4) {
27687
- throw new Error("Gradient can only have 4 color keys");
27693
+ throw new Error("Gradient can only have 4 alpha keys");
27688
27694
  }
27689
27695
  var key = typeof timeOrKey === "number" ? new GradientAlphaKey(timeOrKey, alpha) : timeOrKey;
27696
+ key._onValueChanged = this._setAlphaTypeArrayDirty.bind(this);
27690
27697
  this._addKey(alphaKeys, key);
27691
27698
  this._alphaTypeArrayDirty = true;
27692
27699
  };
@@ -27694,6 +27701,7 @@ __decorate([
27694
27701
  * Remove a color key from the gradient.
27695
27702
  * @param index - The remove color key index
27696
27703
  */ _proto.removeColorKey = function removeColorKey(index) {
27704
+ this._colorKeys[index]._onValueChanged = null;
27697
27705
  this._removeKey(this._colorKeys, index);
27698
27706
  this._colorTypeArrayDirty = true;
27699
27707
  };
@@ -27701,6 +27709,7 @@ __decorate([
27701
27709
  * Remove an alpha key from the gradient.
27702
27710
  * @param index - The remove alpha key index
27703
27711
  */ _proto.removeAlphaKey = function removeAlphaKey(index) {
27712
+ this._alphaKeys[index]._onValueChanged = null;
27704
27713
  this._removeKey(this._alphaKeys, index);
27705
27714
  this._alphaTypeArrayDirty = true;
27706
27715
  };
@@ -27709,13 +27718,21 @@ __decorate([
27709
27718
  * @param colorKeys - The color keys
27710
27719
  * @param alphaKeys - The alpha keys
27711
27720
  */ _proto.setKeys = function setKeys(colorKeys, alphaKeys) {
27712
- this._alphaKeys.length = 0;
27713
- this._colorKeys.length = 0;
27714
- for(var i = 0, n = colorKeys.length; i < n; i++){
27715
- this._addKey(this._colorKeys, colorKeys[i]);
27721
+ var currentColorKeys = this._colorKeys;
27722
+ var currentAlphaKeys = this._alphaKeys;
27723
+ for(var i = 0, n = currentColorKeys.length; i < n; i++){
27724
+ currentColorKeys[i]._onValueChanged = null;
27716
27725
  }
27717
- for(var i1 = 0, n1 = alphaKeys.length; i1 < n1; i1++){
27718
- this._addKey(this._alphaKeys, alphaKeys[i1]);
27726
+ for(var i1 = 0, n1 = currentAlphaKeys.length; i1 < n1; i1++){
27727
+ currentAlphaKeys[i1]._onValueChanged = null;
27728
+ }
27729
+ currentColorKeys.length = 0;
27730
+ currentAlphaKeys.length = 0;
27731
+ for(var i2 = 0, n2 = colorKeys.length; i2 < n2; i2++){
27732
+ this._addKey(currentColorKeys, colorKeys[i2]);
27733
+ }
27734
+ for(var i3 = 0, n3 = alphaKeys.length; i3 < n3; i3++){
27735
+ this._addKey(currentAlphaKeys, alphaKeys[i3]);
27719
27736
  }
27720
27737
  this._alphaTypeArrayDirty = true;
27721
27738
  this._colorTypeArrayDirty = true;
@@ -27776,6 +27793,12 @@ __decorate([
27776
27793
  _proto._removeKey = function _removeKey(keys, index) {
27777
27794
  keys.splice(index, 1);
27778
27795
  };
27796
+ _proto._setColorTypeArrayDirty = function _setColorTypeArrayDirty() {
27797
+ this._colorTypeArrayDirty = true;
27798
+ };
27799
+ _proto._setAlphaTypeArrayDirty = function _setAlphaTypeArrayDirty() {
27800
+ this._alphaTypeArrayDirty = true;
27801
+ };
27779
27802
  _create_class(ParticleGradient, [
27780
27803
  {
27781
27804
  key: "colorKeys",
@@ -27810,16 +27833,80 @@ __decorate([
27810
27833
  ], ParticleGradient.prototype, "_alphaTypeArray", void 0);
27811
27834
  /**
27812
27835
  * The color key of the particle gradient.
27813
- */ var GradientColorKey = function GradientColorKey(time, color) {
27814
- this.time = time;
27815
- this.color = color;
27816
- };
27836
+ */ var GradientColorKey = /*#__PURE__*/ function() {
27837
+ function GradientColorKey(time, color) {
27838
+ /** @internal */ this._onValueChanged = null;
27839
+ this._color = new Color$1();
27840
+ this._time = time;
27841
+ color && this._color.copyFrom(color);
27842
+ // @ts-ignore
27843
+ this._color._onValueChanged = this._onValueChanged;
27844
+ }
27845
+ _create_class(GradientColorKey, [
27846
+ {
27847
+ key: "time",
27848
+ get: /**
27849
+ * The key time.
27850
+ */ function get() {
27851
+ return this._time;
27852
+ },
27853
+ set: function set(value) {
27854
+ this._time = value;
27855
+ this._onValueChanged && this._onValueChanged();
27856
+ }
27857
+ },
27858
+ {
27859
+ key: "color",
27860
+ get: /**
27861
+ * The key color.
27862
+ */ function get() {
27863
+ return this._color;
27864
+ },
27865
+ set: function set(value) {
27866
+ if (this._color !== value) {
27867
+ this._color.copyFrom(value);
27868
+ }
27869
+ }
27870
+ }
27871
+ ]);
27872
+ return GradientColorKey;
27873
+ }();
27817
27874
  /**
27818
27875
  * The alpha key of the particle gradient.
27819
- */ var GradientAlphaKey = function GradientAlphaKey(time, alpha) {
27820
- this.time = time;
27821
- this.alpha = alpha;
27822
- };
27876
+ */ var GradientAlphaKey = /*#__PURE__*/ function() {
27877
+ function GradientAlphaKey(time, alpha) {
27878
+ /** @internal */ this._onValueChanged = null;
27879
+ this._time = time;
27880
+ this._alpha = alpha;
27881
+ }
27882
+ _create_class(GradientAlphaKey, [
27883
+ {
27884
+ key: "time",
27885
+ get: /**
27886
+ * The key time.
27887
+ */ function get() {
27888
+ return this._time;
27889
+ },
27890
+ set: function set(value) {
27891
+ this._time = value;
27892
+ this._onValueChanged && this._onValueChanged();
27893
+ }
27894
+ },
27895
+ {
27896
+ key: "alpha",
27897
+ get: /**
27898
+ * The key alpha.
27899
+ */ function get() {
27900
+ return this._alpha;
27901
+ },
27902
+ set: function set(value) {
27903
+ this._alpha = value;
27904
+ this._onValueChanged && this._onValueChanged();
27905
+ }
27906
+ }
27907
+ ]);
27908
+ return GradientAlphaKey;
27909
+ }();
27823
27910
 
27824
27911
  /**
27825
27912
  * Particle composite gradient.