@galacean/engine-core 1.3.14 → 1.3.16

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.
@@ -2253,7 +2253,7 @@ var size_over_lifetime_module = "#define GLSLIFY 1\n#ifdef RENDERER_SOL_CURVE_MO
2253
2253
 
2254
2254
  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
2255
2255
 
2256
- 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#ifdef RENDERER_TSA_FRAME_RANDOM_CURVES\nuniform vec2 renderer_TSAFrameMinCurve[4];\n#endif\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 tileRow=frame*renderer_TSATillingParams.x;float floorTotalULength=floor(tileRow);uv.x+=tileRow-tileRowIndex;uv.y+=tileRowIndex*renderer_TSATillingParams.y;\n#endif\nreturn uv;}"; // eslint-disable-line
2256
+ 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#ifdef RENDERER_TSA_FRAME_RANDOM_CURVES\nuniform vec2 renderer_TSAFrameMinCurve[4];\n#endif\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 tileRow=frame*renderer_TSATillingParams.x;float tileRowIndex=floor(tileRow);uv.x+=tileRow-tileRowIndex;uv.y+=tileRowIndex*renderer_TSATillingParams.y;\n#endif\nreturn uv;}"; // eslint-disable-line
2257
2257
 
2258
2258
  var sphere_billboard = "#define GLSLIFY 1\n#ifdef RENDERER_MODE_SPHERE_BILLBOARD\nvec2 corner=a_CornerTextureCoordinate.xy+renderer_PivotOffset.xy;vec3 sideVector=normalize(cross(camera_Forward,camera_Up));vec3 upVector=normalize(cross(sideVector,camera_Forward));corner*=computeParticleSizeBillboard(a_StartSize.xy,normalizedAge);\n#if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\nif(renderer_ThreeDStartRotation){vec3 rotation=vec3(a_StartRotation0.xy,computeParticleRotationFloat(a_StartRotation0.z,age,normalizedAge));center+=renderer_SizeScale.xzy*rotationByEuler(corner.x*sideVector+corner.y*upVector,rotation);}else{float rot=computeParticleRotationFloat(a_StartRotation0.x,age,normalizedAge);float c=cos(rot);float s=sin(rot);mat2 rotation=mat2(c,-s,s,c);corner=rotation*corner;center+=renderer_SizeScale.xzy*(corner.x*sideVector+corner.y*upVector);}\n#else\nif(renderer_ThreeDStartRotation){center+=renderer_SizeScale.xzy*rotationByEuler(corner.x*sideVector+corner.y*upVector,a_StartRotation0);}else{float c=cos(a_StartRotation0.x);float s=sin(a_StartRotation0.x);mat2 rotation=mat2(c,-s,s,c);corner=rotation*corner;center+=renderer_SizeScale.xzy*(corner.x*sideVector+corner.y*upVector);}\n#endif\n#endif\n"; // eslint-disable-line
2259
2259
 
@@ -10333,7 +10333,7 @@ var /**
10333
10333
  if (background.mode === exports.BackgroundMode.Sky) {
10334
10334
  background.sky._render(context);
10335
10335
  } else if (background.mode === exports.BackgroundMode.Texture && background.texture) {
10336
- this._drawBackgroundTexture(engine, background);
10336
+ this._drawBackgroundTexture(camera, background);
10337
10337
  }
10338
10338
  }
10339
10339
  // Copy opaque texture
@@ -10429,7 +10429,8 @@ var /**
10429
10429
  renderElement.renderQueueFlags |= flag;
10430
10430
  }
10431
10431
  };
10432
- _proto._drawBackgroundTexture = function _drawBackgroundTexture(engine, background) {
10432
+ _proto._drawBackgroundTexture = function _drawBackgroundTexture(camera, background) {
10433
+ var engine = camera.engine;
10433
10434
  var rhi = engine._hardwareRenderer;
10434
10435
  var canvas = engine.canvas;
10435
10436
  var material = background._material, mesh = background._mesh;
@@ -10441,6 +10442,7 @@ var /**
10441
10442
  var program = pass._getShaderProgram(engine, Shader._compileMacros);
10442
10443
  program.bind();
10443
10444
  program.uploadAll(program.materialUniformBlock, material.shaderData);
10445
+ program.uploadAll(program.cameraUniformBlock, camera.shaderData);
10444
10446
  program.uploadUnGroupTextures();
10445
10447
  (pass._renderState || material.renderState)._applyStates(engine, false, pass._renderStateDataMap, material.shaderData);
10446
10448
  rhi.drawPrimitive(mesh._primitive, mesh.subMesh, program);
@@ -23079,7 +23081,7 @@ var skyProceduralVs = "#define GLSLIFY 1\n#define OUTER_RADIUS 1.025\n#define RA
23079
23081
 
23080
23082
  var backgroundTextureFs = "#define GLSLIFY 1\nuniform sampler2D material_BaseTexture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(material_BaseTexture,v_uv);}"; // eslint-disable-line
23081
23083
 
23082
- var backgroundTextureVs = "#define GLSLIFY 1\nattribute vec3 POSITION;attribute vec2 TEXCOORD_0;varying vec2 v_uv;void main(){gl_Position=vec4(POSITION,1.0);v_uv=TEXCOORD_0;}"; // eslint-disable-line
23084
+ var backgroundTextureVs = "#define GLSLIFY 1\nattribute vec3 POSITION;attribute vec2 TEXCOORD_0;varying vec2 v_uv;uniform vec4 camera_ProjectionParams;void main(){gl_Position=vec4(POSITION,1.0);gl_Position.y*=camera_ProjectionParams.x;v_uv=TEXCOORD_0;}"; // eslint-disable-line
23083
23085
 
23084
23086
  var blinnPhongFs = "#define GLSLIFY 1\n#include <common>\n#include <camera_declare>\n#include <uv_share>\n#include <normal_share>\n#include <color_share>\n#include <worldpos_share>\n#include <light_frag_define>\n#include <ShadowFragmentDeclaration>\n#include <mobile_material_frag>\n#include <FogFragmentDeclaration>\n#include <normal_get>\nvoid main(){\n#include <begin_mobile_frag>\n#include <begin_viewdir_frag>\n#include <mobile_blinnphong_frag>\ngl_FragColor=emission+ambient+diffuse+specular;\n#ifdef MATERIAL_IS_TRANSPARENT\ngl_FragColor.a=diffuse.a;\n#else\ngl_FragColor.a=1.0;\n#endif\n#include <FogFragment>\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ngl_FragColor=linearToGamma(gl_FragColor);\n#endif\n}"; // eslint-disable-line
23085
23087
 
@@ -23091,7 +23093,7 @@ var depthOnlyVs = "#define GLSLIFY 1\n#include <common>\n#include <common_vert>\
23091
23093
 
23092
23094
  var particleFs = "#define GLSLIFY 1\n#include <common>\nvarying vec4 v_Color;varying vec2 v_TextureCoordinate;uniform sampler2D material_BaseTexture;uniform vec4 material_BaseColor;\n#ifdef RENDERER_MODE_MESH\nvarying vec4 v_MeshColor;\n#endif\nvoid main(){vec4 color=material_BaseColor*v_Color;\n#ifdef RENDERER_MODE_MESH\ncolor*=v_MeshColor;\n#endif\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec4 textureColor=texture2D(material_BaseTexture,v_TextureCoordinate);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ntextureColor=gammaToLinear(textureColor);\n#endif\ncolor*=textureColor;\n#endif\ngl_FragColor=color;\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ngl_FragColor=linearToGamma(gl_FragColor);\n#endif\n}"; // eslint-disable-line
23093
23095
 
23094
- var particleVs = "#define GLSLIFY 1\n#if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\nattribute vec4 a_CornerTextureCoordinate;\n#endif\n#ifdef RENDERER_MODE_MESH\nattribute vec3 a_MeshPosition;attribute vec4 a_MeshColor;attribute vec2 a_MeshTextureCoordinate;varying vec4 v_MeshColor;\n#endif\nattribute vec4 a_ShapePositionStartLifeTime;attribute vec4 a_DirectionTime;attribute vec4 a_StartColor;attribute vec3 a_StartSize;attribute vec3 a_StartRotation0;attribute float a_StartSpeed;attribute vec4 a_Random0;\n#if defined(RENDERER_TSA_FRAME_RANDOM_CURVES) || defined(RENDERER_VOL_RANDOM_CONSTANT) || defined(RENDERER_VOL_RANDOM_CURVE)\nattribute vec4 a_Random1;\n#endif\nattribute vec3 a_SimulationWorldPosition;attribute vec4 a_SimulationWorldRotation;varying vec4 v_Color;\n#ifdef MATERIAL_HAS_BASETEXTURE\nattribute vec4 a_SimulationUV;varying vec2 v_TextureCoordinate;\n#endif\nuniform float renderer_CurrentTime;uniform vec3 renderer_Gravity;uniform vec2 u_DragConstant;uniform vec3 renderer_WorldPosition;uniform vec4 renderer_WorldRotation;uniform bool renderer_ThreeDStartRotation;uniform int renderer_ScalingMode;uniform vec3 renderer_PositionScale;uniform vec3 renderer_SizeScale;uniform vec3 renderer_PivotOffset;uniform mat4 camera_ViewMat;uniform mat4 camera_ProjMat;\n#ifdef RENDERER_MODE_STRETCHED_BILLBOARD\nuniform vec3 camera_Position;\n#endif\nuniform vec3 camera_Forward;uniform vec3 camera_Up;uniform float renderer_StretchedBillboardLengthScale;uniform float renderer_StretchedBillboardSpeedScale;uniform int renderer_SimulationSpace;\n#include <particle_common>\n#include <velocity_over_lifetime_module>\n#include <color_over_lifetime_module>\n#include <size_over_lifetime_module>\n#include <rotation_over_lifetime_module>\n#include <texture_sheet_animation_module>\nvoid main(){float age=renderer_CurrentTime-a_DirectionTime.w;float normalizedAge=age/a_ShapePositionStartLifeTime.w;vec3 lifeVelocity;if(normalizedAge<1.0){vec3 startVelocity=a_DirectionTime.xyz*a_StartSpeed;\n#if defined(RENDERER_VOL_CONSTANT) || defined(RENDERER_VOL_CURVE) || defined(RENDERER_VOL_RANDOM_CONSTANT) || defined(RENDERER_VOL_RANDOM_CURVE)\nlifeVelocity=computeParticleLifeVelocity(normalizedAge);\n#endif\nvec3 gravityVelocity=renderer_Gravity*age;vec4 worldRotation;if(renderer_SimulationSpace==0){worldRotation=renderer_WorldRotation;}else{worldRotation=a_SimulationWorldRotation;}vec3 dragData=a_DirectionTime.xyz*mix(u_DragConstant.x,u_DragConstant.y,a_Random0.x);vec3 center=computeParticlePosition(startVelocity,lifeVelocity,age,normalizedAge,gravityVelocity,worldRotation,dragData);\n#include <sphere_billboard>\n#include <stretched_billboard>\n#include <horizontal_billboard>\n#include <vertical_billboard>\n#include <particle_mesh>\ngl_Position=camera_ProjMat*camera_ViewMat*vec4(center,1.0);v_Color=computeParticleColor(a_StartColor,normalizedAge);\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec2 simulateUV;\n#if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\nsimulateUV=a_CornerTextureCoordinate.zw*a_SimulationUV.xy+a_SimulationUV.zw;v_TextureCoordinate=computeParticleUV(simulateUV,normalizedAge);\n#endif\n#ifdef RENDERER_MODE_MESH\nsimulateUV=a_SimulationUV.xy+a_MeshTextureCoordinate*a_SimulationUV.zw;v_TextureCoordinate=computeParticleUV(simulateUV,normalizedAge);\n#endif\n#endif\n}else{gl_Position=vec4(2.0,2.0,2.0,1.0);}}"; // eslint-disable-line
23096
+ var particleVs = "#define GLSLIFY 1\n#if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\nattribute vec4 a_CornerTextureCoordinate;\n#endif\n#ifdef RENDERER_MODE_MESH\nattribute vec3 a_MeshPosition;attribute vec4 a_MeshColor;attribute vec2 a_MeshTextureCoordinate;varying vec4 v_MeshColor;\n#endif\nattribute vec4 a_ShapePositionStartLifeTime;attribute vec4 a_DirectionTime;attribute vec4 a_StartColor;attribute vec3 a_StartSize;attribute vec3 a_StartRotation0;attribute float a_StartSpeed;attribute vec4 a_Random0;\n#if defined(RENDERER_TSA_FRAME_RANDOM_CURVES) || defined(RENDERER_VOL_RANDOM_CONSTANT) || defined(RENDERER_VOL_RANDOM_CURVE)\nattribute vec4 a_Random1;\n#endif\nattribute vec3 a_SimulationWorldPosition;attribute vec4 a_SimulationWorldRotation;varying vec4 v_Color;\n#ifdef MATERIAL_HAS_BASETEXTURE\nattribute vec4 a_SimulationUV;varying vec2 v_TextureCoordinate;\n#endif\nuniform float renderer_CurrentTime;uniform vec3 renderer_Gravity;uniform vec2 u_DragConstant;uniform vec3 renderer_WorldPosition;uniform vec4 renderer_WorldRotation;uniform bool renderer_ThreeDStartRotation;uniform int renderer_ScalingMode;uniform vec3 renderer_PositionScale;uniform vec3 renderer_SizeScale;uniform vec3 renderer_PivotOffset;uniform mat4 camera_ViewMat;uniform mat4 camera_ProjMat;\n#ifdef RENDERER_MODE_STRETCHED_BILLBOARD\nuniform vec3 camera_Position;\n#endif\nuniform vec3 camera_Forward;uniform vec3 camera_Up;uniform float renderer_StretchedBillboardLengthScale;uniform float renderer_StretchedBillboardSpeedScale;uniform int renderer_SimulationSpace;\n#include <particle_common>\n#include <velocity_over_lifetime_module>\n#include <color_over_lifetime_module>\n#include <size_over_lifetime_module>\n#include <rotation_over_lifetime_module>\n#include <texture_sheet_animation_module>\nvoid main(){float age=renderer_CurrentTime-a_DirectionTime.w;float normalizedAge=age/a_ShapePositionStartLifeTime.w;vec3 lifeVelocity;if(normalizedAge<1.0){vec3 startVelocity=a_DirectionTime.xyz*a_StartSpeed;\n#if defined(RENDERER_VOL_CONSTANT) || defined(RENDERER_VOL_CURVE) || defined(RENDERER_VOL_RANDOM_CONSTANT) || defined(RENDERER_VOL_RANDOM_CURVE)\nlifeVelocity=computeParticleLifeVelocity(normalizedAge);\n#endif\nvec3 gravityVelocity=renderer_Gravity*a_Random0.x*age;vec4 worldRotation;if(renderer_SimulationSpace==0){worldRotation=renderer_WorldRotation;}else{worldRotation=a_SimulationWorldRotation;}vec3 dragData=a_DirectionTime.xyz*mix(u_DragConstant.x,u_DragConstant.y,a_Random0.x);vec3 center=computeParticlePosition(startVelocity,lifeVelocity,age,normalizedAge,gravityVelocity,worldRotation,dragData);\n#include <sphere_billboard>\n#include <stretched_billboard>\n#include <horizontal_billboard>\n#include <vertical_billboard>\n#include <particle_mesh>\ngl_Position=camera_ProjMat*camera_ViewMat*vec4(center,1.0);v_Color=computeParticleColor(a_StartColor,normalizedAge);\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec2 simulateUV;\n#if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\nsimulateUV=a_CornerTextureCoordinate.zw*a_SimulationUV.xy+a_SimulationUV.zw;v_TextureCoordinate=computeParticleUV(simulateUV,normalizedAge);\n#endif\n#ifdef RENDERER_MODE_MESH\nsimulateUV=a_SimulationUV.xy+a_MeshTextureCoordinate*a_SimulationUV.zw;v_TextureCoordinate=computeParticleUV(simulateUV,normalizedAge);\n#endif\n#endif\n}else{gl_Position=vec4(2.0,2.0,2.0,1.0);}}"; // eslint-disable-line
23095
23097
 
23096
23098
  var pbrSpecularFs = "#define GLSLIFY 1\n#include <common>\n#include <camera_declare>\n#include <FogFragmentDeclaration>\n#include <uv_share>\n#include <normal_share>\n#include <color_share>\n#include <worldpos_share>\n#include <light_frag_define>\n#include <pbr_frag_define>\n#include <pbr_helper>\nvoid main(){\n#include <pbr_frag>\n#include <FogFragment>\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ngl_FragColor=linearToGamma(gl_FragColor);\n#endif\n}"; // eslint-disable-line
23097
23099
 
@@ -26269,16 +26271,17 @@ Shader.create(_PostProcessManager.UBER_SHADER_NAME, blitVs, UberPost);
26269
26271
  * @internal
26270
26272
  */ _proto._onDisableInScene = function _onDisableInScene() {
26271
26273
  var componentsManager = this.scene._componentsManager;
26274
+ var prototype = Script.prototype;
26272
26275
  if (!this._started) {
26273
26276
  componentsManager.removeOnStartScript(this);
26274
26277
  }
26275
- if (this._onUpdateIndex >= 0) {
26278
+ if (this.onUpdate !== prototype.onUpdate) {
26276
26279
  componentsManager.removeOnUpdateScript(this);
26277
26280
  }
26278
- if (this._onLateUpdateIndex >= 0) {
26281
+ if (this.onLateUpdate !== prototype.onLateUpdate) {
26279
26282
  componentsManager.removeOnLateUpdateScript(this);
26280
26283
  }
26281
- if (this._onPhysicsUpdateIndex >= 0) {
26284
+ if (this.onPhysicsUpdate !== prototype.onPhysicsUpdate) {
26282
26285
  componentsManager.removeOnPhysicsUpdateScript(this);
26283
26286
  }
26284
26287
  this._entity._removeScript(this);
@@ -28286,7 +28289,8 @@ exports.AnimatorLayerBlendingMode = void 0;
28286
28289
  var _proto = AnimatorStatePlayData.prototype;
28287
28290
  _proto.reset = function reset(state, stateData, offsetFrameTime) {
28288
28291
  this.state = state;
28289
- this.frameTime = offsetFrameTime;
28292
+ this.playedTime = 0;
28293
+ this.offsetFrameTime = offsetFrameTime;
28290
28294
  this.stateData = stateData;
28291
28295
  this.playState = AnimatorStatePlayState.UnStarted;
28292
28296
  this.clipTime = state.clipStartTime * state.clip.length;
@@ -28305,9 +28309,9 @@ exports.AnimatorLayerBlendingMode = void 0;
28305
28309
  }
28306
28310
  };
28307
28311
  _proto.update = function update(deltaTime) {
28308
- this.frameTime += deltaTime;
28312
+ this.playedTime += deltaTime;
28309
28313
  var state = this.state;
28310
- var time = this.frameTime;
28314
+ var time = this.playedTime + this.offsetFrameTime;
28311
28315
  var duration = state._getDuration();
28312
28316
  this.playState = AnimatorStatePlayState.Playing;
28313
28317
  if (state.wrapMode === exports.WrapMode.Loop) {
@@ -28754,9 +28758,8 @@ exports.AnimatorLayerBlendingMode = void 0;
28754
28758
  var transition = anyStateTransitions.length && this._applyTransitionsByCondition(layerIndex, layerData, layer, state, anyStateTransitions, aniUpdate) || transitions.length && this._applyStateTransitions(layerIndex, layerData, layer, isForwards, srcPlayData, transitions, lastClipTime, clipTime, playDeltaTime, aniUpdate);
28755
28759
  var playCostTime;
28756
28760
  if (transition) {
28757
- var clipDuration = state.clip.length;
28758
- var clipEndTime = state.clipEndTime * clipDuration;
28759
- var exitTime = transition.exitTime * state._getDuration();
28761
+ var clipEndTime = state._getClipActualEndTime();
28762
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
28760
28763
  if (isForwards) {
28761
28764
  if (exitTime < lastClipTime) {
28762
28765
  playCostTime = exitTime + clipEndTime - lastClipTime;
@@ -28764,7 +28767,7 @@ exports.AnimatorLayerBlendingMode = void 0;
28764
28767
  playCostTime = exitTime - lastClipTime;
28765
28768
  }
28766
28769
  } else {
28767
- var startTime = state.clipStartTime * clipDuration;
28770
+ var startTime = state._getClipActualStartTime();
28768
28771
  if (lastClipTime < exitTime) {
28769
28772
  playCostTime = clipEndTime - exitTime + lastClipTime - startTime;
28770
28773
  } else {
@@ -28826,20 +28829,22 @@ exports.AnimatorLayerBlendingMode = void 0;
28826
28829
  var lastDestClipTime = destPlayData.clipTime, lastDstPlayState = destPlayData.playState;
28827
28830
  var dstPlayCostTime;
28828
28831
  if (destPlayData.isForwards) {
28829
- dstPlayCostTime = lastDestClipTime + dstPlayDeltaTime > transitionDuration ? transitionDuration - lastDestClipTime : dstPlayDeltaTime;
28832
+ // The time that has been played
28833
+ var playedTime = destPlayData.playedTime;
28834
+ dstPlayCostTime = playedTime + dstPlayDeltaTime > transitionDuration ? transitionDuration - playedTime : dstPlayDeltaTime;
28830
28835
  } else {
28831
28836
  // The time that has been played
28832
- var playedTime = destStateDuration - lastDestClipTime;
28833
- dstPlayCostTime = // -actualDestDeltaTime: The time that will be played, negative are meant to make ite be a periods
28837
+ var playedTime1 = destPlayData.playedTime;
28838
+ dstPlayCostTime = // -dstPlayDeltaTime: The time that will be played, negative are meant to make it be a periods
28834
28839
  // > transition: The time that will be played is enough to finish the transition
28835
- playedTime - dstPlayDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28836
- playedTime - transitionDuration : dstPlayDeltaTime;
28840
+ playedTime1 - dstPlayDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28841
+ playedTime1 - transitionDuration : dstPlayDeltaTime;
28837
28842
  }
28838
28843
  var actualCostTime = dstPlaySpeed === 0 ? deltaTime : dstPlayCostTime / dstPlaySpeed;
28839
28844
  var srcPlayCostTime = actualCostTime * srcPlaySpeed;
28840
28845
  srcPlayData.update(srcPlayCostTime);
28841
28846
  destPlayData.update(dstPlayCostTime);
28842
- var crossWeight = Math.abs(destPlayData.frameTime) / transitionDuration;
28847
+ var crossWeight = Math.abs(destPlayData.playedTime) / transitionDuration;
28843
28848
  (crossWeight >= 1.0 - miniprogram.MathUtil.zeroTolerance || transitionDuration === 0) && (crossWeight = 1.0);
28844
28849
  var crossFadeFinished = crossWeight === 1.0;
28845
28850
  if (crossFadeFinished) {
@@ -28889,18 +28894,20 @@ exports.AnimatorLayerBlendingMode = void 0;
28889
28894
  var lastDestClipTime = destPlayData.clipTime, lastPlayState = destPlayData.playState;
28890
28895
  var dstPlayCostTime;
28891
28896
  if (destPlayData.isForwards) {
28892
- dstPlayCostTime = lastDestClipTime + playDeltaTime > transitionDuration ? transitionDuration - lastDestClipTime : playDeltaTime;
28897
+ // The time that has been played
28898
+ var playedTime = destPlayData.playedTime;
28899
+ dstPlayCostTime = playedTime + playDeltaTime > transitionDuration ? transitionDuration - playedTime : playDeltaTime;
28893
28900
  } else {
28894
28901
  // The time that has been played
28895
- var playedTime = stateDuration - lastDestClipTime;
28902
+ var playedTime1 = destPlayData.playedTime;
28896
28903
  dstPlayCostTime = // -actualDestDeltaTime: The time that will be played, negative are meant to make ite be a periods
28897
28904
  // > transition: The time that will be played is enough to finish the transition
28898
- playedTime - playDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28899
- playedTime - transitionDuration : playDeltaTime;
28905
+ playedTime1 - playDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28906
+ playedTime1 - transitionDuration : playDeltaTime;
28900
28907
  }
28901
28908
  var actualCostTime = playSpeed === 0 ? deltaTime : dstPlayCostTime / playSpeed;
28902
28909
  destPlayData.update(dstPlayCostTime);
28903
- var crossWeight = Math.abs(destPlayData.frameTime) / transitionDuration;
28910
+ var crossWeight = Math.abs(destPlayData.playedTime) / transitionDuration;
28904
28911
  (crossWeight >= 1.0 - miniprogram.MathUtil.zeroTolerance || transitionDuration === 0) && (crossWeight = 1.0);
28905
28912
  var crossFadeFinished = crossWeight === 1.0;
28906
28913
  if (crossFadeFinished) {
@@ -29028,10 +29035,9 @@ exports.AnimatorLayerBlendingMode = void 0;
29028
29035
  _proto._checkSubTransition = function _checkSubTransition(layerIndex, layerData, layer, playState, transitions, lastClipTime, curClipTime, aniUpdate) {
29029
29036
  var state = playState.state;
29030
29037
  var transitionIndex = playState.currentTransitionIndex;
29031
- var duration = state._getDuration();
29032
29038
  for(var n = transitions.length; transitionIndex < n; transitionIndex++){
29033
29039
  var transition = transitions[transitionIndex];
29034
- var exitTime = transition.exitTime * duration;
29040
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
29035
29041
  if (exitTime > curClipTime) {
29036
29042
  break;
29037
29043
  }
@@ -29051,10 +29057,9 @@ exports.AnimatorLayerBlendingMode = void 0;
29051
29057
  _proto._checkBackwardsSubTransition = function _checkBackwardsSubTransition(layerIndex, layerData, layer, playState, transitions, lastClipTime, curClipTime, aniUpdate) {
29052
29058
  var state = playState.state;
29053
29059
  var transitionIndex = playState.currentTransitionIndex;
29054
- var duration = playState.state._getDuration();
29055
29060
  for(; transitionIndex >= 0; transitionIndex--){
29056
29061
  var transition = transitions[transitionIndex];
29057
- var exitTime = transition.exitTime * duration;
29062
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
29058
29063
  if (exitTime < curClipTime) {
29059
29064
  break;
29060
29065
  }
@@ -29685,6 +29690,16 @@ function _possible_constructor_return(self, call) {
29685
29690
  }
29686
29691
  }
29687
29692
  };
29693
+ /**
29694
+ * @internal
29695
+ */ _proto._getClipActualStartTime = function _getClipActualStartTime() {
29696
+ return this._clipStartTime * this.clip.length;
29697
+ };
29698
+ /**
29699
+ * @internal
29700
+ */ _proto._getClipActualEndTime = function _getClipActualEndTime() {
29701
+ return this._clipEndTime * this.clip.length;
29702
+ };
29688
29703
  _create_class(AnimatorState, [
29689
29704
  {
29690
29705
  key: "transitions",
@@ -31436,6 +31451,7 @@ __decorate([
31436
31451
 
31437
31452
  var MainModule = /*#__PURE__*/ function() {
31438
31453
  function MainModule(generator) {
31454
+ this._tempVector40 = new miniprogram.Vector4();
31439
31455
  /** The duration of the Particle Generator in seconds. */ this.duration = 5.0;
31440
31456
  /** Specifies whether the Particle Generator loops. */ this.isLoop = true;
31441
31457
  /** Start delay in seconds. */ this.startDelay = new ParticleCompositeCurve(0);
@@ -31457,7 +31473,6 @@ var MainModule = /*#__PURE__*/ function() {
31457
31473
  this._gravityModifierRand = new miniprogram.Rand(0, ParticleRandomSubSeeds.GravityModifier);
31458
31474
  this._startSize3D = false;
31459
31475
  this._simulationSpace = exports.ParticleSimulationSpace.Local;
31460
- this._gravity = new miniprogram.Vector3();
31461
31476
  this._generator = generator;
31462
31477
  this.startLifetime = new ParticleCompositeCurve(5);
31463
31478
  this.startSpeed = new ParticleCompositeCurve(5);
@@ -31497,8 +31512,7 @@ var MainModule = /*#__PURE__*/ function() {
31497
31512
  case exports.ParticleSimulationSpace.Local:
31498
31513
  shaderData.setVector3(MainModule._worldPosition, transform.worldPosition);
31499
31514
  var worldRotation = transform.worldRotationQuaternion;
31500
- var worldRotationV4 = MainModule._tempVector40;
31501
- worldRotationV4.copyFrom(worldRotation);
31515
+ var worldRotationV4 = this._tempVector40.copyFrom(worldRotation); // Maybe shaderData should support Quaternion
31502
31516
  shaderData.setVector4(MainModule._worldRotation, worldRotationV4);
31503
31517
  break;
31504
31518
  case exports.ParticleSimulationSpace.World:
@@ -31522,10 +31536,7 @@ var MainModule = /*#__PURE__*/ function() {
31522
31536
  shaderData.setVector3(MainModule._sizeScale, MainModule._vector3One);
31523
31537
  break;
31524
31538
  }
31525
- var particleGravity = this._gravity;
31526
- var gravityModifierValue = this.gravityModifier.evaluate(undefined, this._gravityModifierRand.random());
31527
- miniprogram.Vector3.scale(renderer.scene.physics.gravity, gravityModifierValue, particleGravity);
31528
- shaderData.setVector3(MainModule._gravity, particleGravity);
31539
+ shaderData.setVector3(MainModule._gravity, renderer.scene.physics.gravity);
31529
31540
  shaderData.setInt(MainModule._simulationSpace, this.simulationSpace);
31530
31541
  shaderData.setFloat(MainModule._startRotation3D, +this.startRotation3D);
31531
31542
  shaderData.setInt(MainModule._scaleMode, this.scalingMode);
@@ -31693,9 +31704,6 @@ var MainModule = /*#__PURE__*/ function() {
31693
31704
  ]);
31694
31705
  return MainModule;
31695
31706
  }();
31696
- (function() {
31697
- MainModule._tempVector40 = new miniprogram.Vector4();
31698
- })();
31699
31707
  (function() {
31700
31708
  MainModule._vector3One = new miniprogram.Vector3(1, 1, 1);
31701
31709
  })();
@@ -31780,9 +31788,6 @@ __decorate([
31780
31788
  __decorate([
31781
31789
  ignoreClone
31782
31790
  ], MainModule.prototype, "_generator", void 0);
31783
- __decorate([
31784
- ignoreClone
31785
- ], MainModule.prototype, "_gravity", void 0);
31786
31791
 
31787
31792
  /**
31788
31793
  * Rotate particles throughout their lifetime.
@@ -33052,8 +33057,15 @@ __decorate([
33052
33057
  }
33053
33058
  // Start speed
33054
33059
  instanceVertices[offset + 18] = startSpeed;
33055
- // Unused, Color, size, rotation,
33056
- // instanceVertices[offset + 19] = rand.random();
33060
+ // Gravity, unused, size, rotation
33061
+ switch(main.gravityModifier.mode){
33062
+ case exports.ParticleCurveMode.Constant:
33063
+ instanceVertices[offset + 19] = main.gravityModifier.constant;
33064
+ break;
33065
+ case exports.ParticleCurveMode.TwoConstants:
33066
+ instanceVertices[offset + 19] = main.gravityModifier.evaluate(undefined, main._gravityModifierRand.random());
33067
+ break;
33068
+ }
33057
33069
  var colorOverLifetime = this.colorOverLifetime;
33058
33070
  if (colorOverLifetime.enabled && colorOverLifetime.color.mode === exports.ParticleGradientMode.TwoGradients) {
33059
33071
  instanceVertices[offset + 20] = colorOverLifetime._colorGradientRand.random();
package/dist/module.js CHANGED
@@ -2248,7 +2248,7 @@ var size_over_lifetime_module = "#define GLSLIFY 1\n#ifdef RENDERER_SOL_CURVE_MO
2248
2248
 
2249
2249
  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
2250
2250
 
2251
- 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#ifdef RENDERER_TSA_FRAME_RANDOM_CURVES\nuniform vec2 renderer_TSAFrameMinCurve[4];\n#endif\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 tileRow=frame*renderer_TSATillingParams.x;float floorTotalULength=floor(tileRow);uv.x+=tileRow-tileRowIndex;uv.y+=tileRowIndex*renderer_TSATillingParams.y;\n#endif\nreturn uv;}"; // eslint-disable-line
2251
+ 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#ifdef RENDERER_TSA_FRAME_RANDOM_CURVES\nuniform vec2 renderer_TSAFrameMinCurve[4];\n#endif\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 tileRow=frame*renderer_TSATillingParams.x;float tileRowIndex=floor(tileRow);uv.x+=tileRow-tileRowIndex;uv.y+=tileRowIndex*renderer_TSATillingParams.y;\n#endif\nreturn uv;}"; // eslint-disable-line
2252
2252
 
2253
2253
  var sphere_billboard = "#define GLSLIFY 1\n#ifdef RENDERER_MODE_SPHERE_BILLBOARD\nvec2 corner=a_CornerTextureCoordinate.xy+renderer_PivotOffset.xy;vec3 sideVector=normalize(cross(camera_Forward,camera_Up));vec3 upVector=normalize(cross(sideVector,camera_Forward));corner*=computeParticleSizeBillboard(a_StartSize.xy,normalizedAge);\n#if defined(RENDERER_ROL_CONSTANT_MODE) || defined(RENDERER_ROL_CURVE_MODE)\nif(renderer_ThreeDStartRotation){vec3 rotation=vec3(a_StartRotation0.xy,computeParticleRotationFloat(a_StartRotation0.z,age,normalizedAge));center+=renderer_SizeScale.xzy*rotationByEuler(corner.x*sideVector+corner.y*upVector,rotation);}else{float rot=computeParticleRotationFloat(a_StartRotation0.x,age,normalizedAge);float c=cos(rot);float s=sin(rot);mat2 rotation=mat2(c,-s,s,c);corner=rotation*corner;center+=renderer_SizeScale.xzy*(corner.x*sideVector+corner.y*upVector);}\n#else\nif(renderer_ThreeDStartRotation){center+=renderer_SizeScale.xzy*rotationByEuler(corner.x*sideVector+corner.y*upVector,a_StartRotation0);}else{float c=cos(a_StartRotation0.x);float s=sin(a_StartRotation0.x);mat2 rotation=mat2(c,-s,s,c);corner=rotation*corner;center+=renderer_SizeScale.xzy*(corner.x*sideVector+corner.y*upVector);}\n#endif\n#endif\n"; // eslint-disable-line
2254
2254
 
@@ -10328,7 +10328,7 @@ var /**
10328
10328
  if (background.mode === BackgroundMode.Sky) {
10329
10329
  background.sky._render(context);
10330
10330
  } else if (background.mode === BackgroundMode.Texture && background.texture) {
10331
- this._drawBackgroundTexture(engine, background);
10331
+ this._drawBackgroundTexture(camera, background);
10332
10332
  }
10333
10333
  }
10334
10334
  // Copy opaque texture
@@ -10424,7 +10424,8 @@ var /**
10424
10424
  renderElement.renderQueueFlags |= flag;
10425
10425
  }
10426
10426
  };
10427
- _proto._drawBackgroundTexture = function _drawBackgroundTexture(engine, background) {
10427
+ _proto._drawBackgroundTexture = function _drawBackgroundTexture(camera, background) {
10428
+ var engine = camera.engine;
10428
10429
  var rhi = engine._hardwareRenderer;
10429
10430
  var canvas = engine.canvas;
10430
10431
  var material = background._material, mesh = background._mesh;
@@ -10436,6 +10437,7 @@ var /**
10436
10437
  var program = pass._getShaderProgram(engine, Shader._compileMacros);
10437
10438
  program.bind();
10438
10439
  program.uploadAll(program.materialUniformBlock, material.shaderData);
10440
+ program.uploadAll(program.cameraUniformBlock, camera.shaderData);
10439
10441
  program.uploadUnGroupTextures();
10440
10442
  (pass._renderState || material.renderState)._applyStates(engine, false, pass._renderStateDataMap, material.shaderData);
10441
10443
  rhi.drawPrimitive(mesh._primitive, mesh.subMesh, program);
@@ -23074,7 +23076,7 @@ var skyProceduralVs = "#define GLSLIFY 1\n#define OUTER_RADIUS 1.025\n#define RA
23074
23076
 
23075
23077
  var backgroundTextureFs = "#define GLSLIFY 1\nuniform sampler2D material_BaseTexture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(material_BaseTexture,v_uv);}"; // eslint-disable-line
23076
23078
 
23077
- var backgroundTextureVs = "#define GLSLIFY 1\nattribute vec3 POSITION;attribute vec2 TEXCOORD_0;varying vec2 v_uv;void main(){gl_Position=vec4(POSITION,1.0);v_uv=TEXCOORD_0;}"; // eslint-disable-line
23079
+ var backgroundTextureVs = "#define GLSLIFY 1\nattribute vec3 POSITION;attribute vec2 TEXCOORD_0;varying vec2 v_uv;uniform vec4 camera_ProjectionParams;void main(){gl_Position=vec4(POSITION,1.0);gl_Position.y*=camera_ProjectionParams.x;v_uv=TEXCOORD_0;}"; // eslint-disable-line
23078
23080
 
23079
23081
  var blinnPhongFs = "#define GLSLIFY 1\n#include <common>\n#include <camera_declare>\n#include <uv_share>\n#include <normal_share>\n#include <color_share>\n#include <worldpos_share>\n#include <light_frag_define>\n#include <ShadowFragmentDeclaration>\n#include <mobile_material_frag>\n#include <FogFragmentDeclaration>\n#include <normal_get>\nvoid main(){\n#include <begin_mobile_frag>\n#include <begin_viewdir_frag>\n#include <mobile_blinnphong_frag>\ngl_FragColor=emission+ambient+diffuse+specular;\n#ifdef MATERIAL_IS_TRANSPARENT\ngl_FragColor.a=diffuse.a;\n#else\ngl_FragColor.a=1.0;\n#endif\n#include <FogFragment>\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ngl_FragColor=linearToGamma(gl_FragColor);\n#endif\n}"; // eslint-disable-line
23080
23082
 
@@ -23086,7 +23088,7 @@ var depthOnlyVs = "#define GLSLIFY 1\n#include <common>\n#include <common_vert>\
23086
23088
 
23087
23089
  var particleFs = "#define GLSLIFY 1\n#include <common>\nvarying vec4 v_Color;varying vec2 v_TextureCoordinate;uniform sampler2D material_BaseTexture;uniform vec4 material_BaseColor;\n#ifdef RENDERER_MODE_MESH\nvarying vec4 v_MeshColor;\n#endif\nvoid main(){vec4 color=material_BaseColor*v_Color;\n#ifdef RENDERER_MODE_MESH\ncolor*=v_MeshColor;\n#endif\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec4 textureColor=texture2D(material_BaseTexture,v_TextureCoordinate);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ntextureColor=gammaToLinear(textureColor);\n#endif\ncolor*=textureColor;\n#endif\ngl_FragColor=color;\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ngl_FragColor=linearToGamma(gl_FragColor);\n#endif\n}"; // eslint-disable-line
23088
23090
 
23089
- var particleVs = "#define GLSLIFY 1\n#if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\nattribute vec4 a_CornerTextureCoordinate;\n#endif\n#ifdef RENDERER_MODE_MESH\nattribute vec3 a_MeshPosition;attribute vec4 a_MeshColor;attribute vec2 a_MeshTextureCoordinate;varying vec4 v_MeshColor;\n#endif\nattribute vec4 a_ShapePositionStartLifeTime;attribute vec4 a_DirectionTime;attribute vec4 a_StartColor;attribute vec3 a_StartSize;attribute vec3 a_StartRotation0;attribute float a_StartSpeed;attribute vec4 a_Random0;\n#if defined(RENDERER_TSA_FRAME_RANDOM_CURVES) || defined(RENDERER_VOL_RANDOM_CONSTANT) || defined(RENDERER_VOL_RANDOM_CURVE)\nattribute vec4 a_Random1;\n#endif\nattribute vec3 a_SimulationWorldPosition;attribute vec4 a_SimulationWorldRotation;varying vec4 v_Color;\n#ifdef MATERIAL_HAS_BASETEXTURE\nattribute vec4 a_SimulationUV;varying vec2 v_TextureCoordinate;\n#endif\nuniform float renderer_CurrentTime;uniform vec3 renderer_Gravity;uniform vec2 u_DragConstant;uniform vec3 renderer_WorldPosition;uniform vec4 renderer_WorldRotation;uniform bool renderer_ThreeDStartRotation;uniform int renderer_ScalingMode;uniform vec3 renderer_PositionScale;uniform vec3 renderer_SizeScale;uniform vec3 renderer_PivotOffset;uniform mat4 camera_ViewMat;uniform mat4 camera_ProjMat;\n#ifdef RENDERER_MODE_STRETCHED_BILLBOARD\nuniform vec3 camera_Position;\n#endif\nuniform vec3 camera_Forward;uniform vec3 camera_Up;uniform float renderer_StretchedBillboardLengthScale;uniform float renderer_StretchedBillboardSpeedScale;uniform int renderer_SimulationSpace;\n#include <particle_common>\n#include <velocity_over_lifetime_module>\n#include <color_over_lifetime_module>\n#include <size_over_lifetime_module>\n#include <rotation_over_lifetime_module>\n#include <texture_sheet_animation_module>\nvoid main(){float age=renderer_CurrentTime-a_DirectionTime.w;float normalizedAge=age/a_ShapePositionStartLifeTime.w;vec3 lifeVelocity;if(normalizedAge<1.0){vec3 startVelocity=a_DirectionTime.xyz*a_StartSpeed;\n#if defined(RENDERER_VOL_CONSTANT) || defined(RENDERER_VOL_CURVE) || defined(RENDERER_VOL_RANDOM_CONSTANT) || defined(RENDERER_VOL_RANDOM_CURVE)\nlifeVelocity=computeParticleLifeVelocity(normalizedAge);\n#endif\nvec3 gravityVelocity=renderer_Gravity*age;vec4 worldRotation;if(renderer_SimulationSpace==0){worldRotation=renderer_WorldRotation;}else{worldRotation=a_SimulationWorldRotation;}vec3 dragData=a_DirectionTime.xyz*mix(u_DragConstant.x,u_DragConstant.y,a_Random0.x);vec3 center=computeParticlePosition(startVelocity,lifeVelocity,age,normalizedAge,gravityVelocity,worldRotation,dragData);\n#include <sphere_billboard>\n#include <stretched_billboard>\n#include <horizontal_billboard>\n#include <vertical_billboard>\n#include <particle_mesh>\ngl_Position=camera_ProjMat*camera_ViewMat*vec4(center,1.0);v_Color=computeParticleColor(a_StartColor,normalizedAge);\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec2 simulateUV;\n#if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\nsimulateUV=a_CornerTextureCoordinate.zw*a_SimulationUV.xy+a_SimulationUV.zw;v_TextureCoordinate=computeParticleUV(simulateUV,normalizedAge);\n#endif\n#ifdef RENDERER_MODE_MESH\nsimulateUV=a_SimulationUV.xy+a_MeshTextureCoordinate*a_SimulationUV.zw;v_TextureCoordinate=computeParticleUV(simulateUV,normalizedAge);\n#endif\n#endif\n}else{gl_Position=vec4(2.0,2.0,2.0,1.0);}}"; // eslint-disable-line
23091
+ var particleVs = "#define GLSLIFY 1\n#if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\nattribute vec4 a_CornerTextureCoordinate;\n#endif\n#ifdef RENDERER_MODE_MESH\nattribute vec3 a_MeshPosition;attribute vec4 a_MeshColor;attribute vec2 a_MeshTextureCoordinate;varying vec4 v_MeshColor;\n#endif\nattribute vec4 a_ShapePositionStartLifeTime;attribute vec4 a_DirectionTime;attribute vec4 a_StartColor;attribute vec3 a_StartSize;attribute vec3 a_StartRotation0;attribute float a_StartSpeed;attribute vec4 a_Random0;\n#if defined(RENDERER_TSA_FRAME_RANDOM_CURVES) || defined(RENDERER_VOL_RANDOM_CONSTANT) || defined(RENDERER_VOL_RANDOM_CURVE)\nattribute vec4 a_Random1;\n#endif\nattribute vec3 a_SimulationWorldPosition;attribute vec4 a_SimulationWorldRotation;varying vec4 v_Color;\n#ifdef MATERIAL_HAS_BASETEXTURE\nattribute vec4 a_SimulationUV;varying vec2 v_TextureCoordinate;\n#endif\nuniform float renderer_CurrentTime;uniform vec3 renderer_Gravity;uniform vec2 u_DragConstant;uniform vec3 renderer_WorldPosition;uniform vec4 renderer_WorldRotation;uniform bool renderer_ThreeDStartRotation;uniform int renderer_ScalingMode;uniform vec3 renderer_PositionScale;uniform vec3 renderer_SizeScale;uniform vec3 renderer_PivotOffset;uniform mat4 camera_ViewMat;uniform mat4 camera_ProjMat;\n#ifdef RENDERER_MODE_STRETCHED_BILLBOARD\nuniform vec3 camera_Position;\n#endif\nuniform vec3 camera_Forward;uniform vec3 camera_Up;uniform float renderer_StretchedBillboardLengthScale;uniform float renderer_StretchedBillboardSpeedScale;uniform int renderer_SimulationSpace;\n#include <particle_common>\n#include <velocity_over_lifetime_module>\n#include <color_over_lifetime_module>\n#include <size_over_lifetime_module>\n#include <rotation_over_lifetime_module>\n#include <texture_sheet_animation_module>\nvoid main(){float age=renderer_CurrentTime-a_DirectionTime.w;float normalizedAge=age/a_ShapePositionStartLifeTime.w;vec3 lifeVelocity;if(normalizedAge<1.0){vec3 startVelocity=a_DirectionTime.xyz*a_StartSpeed;\n#if defined(RENDERER_VOL_CONSTANT) || defined(RENDERER_VOL_CURVE) || defined(RENDERER_VOL_RANDOM_CONSTANT) || defined(RENDERER_VOL_RANDOM_CURVE)\nlifeVelocity=computeParticleLifeVelocity(normalizedAge);\n#endif\nvec3 gravityVelocity=renderer_Gravity*a_Random0.x*age;vec4 worldRotation;if(renderer_SimulationSpace==0){worldRotation=renderer_WorldRotation;}else{worldRotation=a_SimulationWorldRotation;}vec3 dragData=a_DirectionTime.xyz*mix(u_DragConstant.x,u_DragConstant.y,a_Random0.x);vec3 center=computeParticlePosition(startVelocity,lifeVelocity,age,normalizedAge,gravityVelocity,worldRotation,dragData);\n#include <sphere_billboard>\n#include <stretched_billboard>\n#include <horizontal_billboard>\n#include <vertical_billboard>\n#include <particle_mesh>\ngl_Position=camera_ProjMat*camera_ViewMat*vec4(center,1.0);v_Color=computeParticleColor(a_StartColor,normalizedAge);\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec2 simulateUV;\n#if defined(RENDERER_MODE_SPHERE_BILLBOARD) || defined(RENDERER_MODE_STRETCHED_BILLBOARD) || defined(RENDERER_MODE_HORIZONTAL_BILLBOARD) || defined(RENDERER_MODE_VERTICAL_BILLBOARD)\nsimulateUV=a_CornerTextureCoordinate.zw*a_SimulationUV.xy+a_SimulationUV.zw;v_TextureCoordinate=computeParticleUV(simulateUV,normalizedAge);\n#endif\n#ifdef RENDERER_MODE_MESH\nsimulateUV=a_SimulationUV.xy+a_MeshTextureCoordinate*a_SimulationUV.zw;v_TextureCoordinate=computeParticleUV(simulateUV,normalizedAge);\n#endif\n#endif\n}else{gl_Position=vec4(2.0,2.0,2.0,1.0);}}"; // eslint-disable-line
23090
23092
 
23091
23093
  var pbrSpecularFs = "#define GLSLIFY 1\n#include <common>\n#include <camera_declare>\n#include <FogFragmentDeclaration>\n#include <uv_share>\n#include <normal_share>\n#include <color_share>\n#include <worldpos_share>\n#include <light_frag_define>\n#include <pbr_frag_define>\n#include <pbr_helper>\nvoid main(){\n#include <pbr_frag>\n#include <FogFragment>\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ngl_FragColor=linearToGamma(gl_FragColor);\n#endif\n}"; // eslint-disable-line
23092
23094
 
@@ -26264,16 +26266,17 @@ Shader.create(_PostProcessManager.UBER_SHADER_NAME, blitVs, UberPost);
26264
26266
  * @internal
26265
26267
  */ _proto._onDisableInScene = function _onDisableInScene() {
26266
26268
  var componentsManager = this.scene._componentsManager;
26269
+ var prototype = Script.prototype;
26267
26270
  if (!this._started) {
26268
26271
  componentsManager.removeOnStartScript(this);
26269
26272
  }
26270
- if (this._onUpdateIndex >= 0) {
26273
+ if (this.onUpdate !== prototype.onUpdate) {
26271
26274
  componentsManager.removeOnUpdateScript(this);
26272
26275
  }
26273
- if (this._onLateUpdateIndex >= 0) {
26276
+ if (this.onLateUpdate !== prototype.onLateUpdate) {
26274
26277
  componentsManager.removeOnLateUpdateScript(this);
26275
26278
  }
26276
- if (this._onPhysicsUpdateIndex >= 0) {
26279
+ if (this.onPhysicsUpdate !== prototype.onPhysicsUpdate) {
26277
26280
  componentsManager.removeOnPhysicsUpdateScript(this);
26278
26281
  }
26279
26282
  this._entity._removeScript(this);
@@ -28281,7 +28284,8 @@ var AnimatorLayerBlendingMode;
28281
28284
  var _proto = AnimatorStatePlayData.prototype;
28282
28285
  _proto.reset = function reset(state, stateData, offsetFrameTime) {
28283
28286
  this.state = state;
28284
- this.frameTime = offsetFrameTime;
28287
+ this.playedTime = 0;
28288
+ this.offsetFrameTime = offsetFrameTime;
28285
28289
  this.stateData = stateData;
28286
28290
  this.playState = AnimatorStatePlayState.UnStarted;
28287
28291
  this.clipTime = state.clipStartTime * state.clip.length;
@@ -28300,9 +28304,9 @@ var AnimatorLayerBlendingMode;
28300
28304
  }
28301
28305
  };
28302
28306
  _proto.update = function update(deltaTime) {
28303
- this.frameTime += deltaTime;
28307
+ this.playedTime += deltaTime;
28304
28308
  var state = this.state;
28305
- var time = this.frameTime;
28309
+ var time = this.playedTime + this.offsetFrameTime;
28306
28310
  var duration = state._getDuration();
28307
28311
  this.playState = AnimatorStatePlayState.Playing;
28308
28312
  if (state.wrapMode === WrapMode.Loop) {
@@ -28749,9 +28753,8 @@ var AnimatorLayerBlendingMode;
28749
28753
  var transition = anyStateTransitions.length && this._applyTransitionsByCondition(layerIndex, layerData, layer, state, anyStateTransitions, aniUpdate) || transitions.length && this._applyStateTransitions(layerIndex, layerData, layer, isForwards, srcPlayData, transitions, lastClipTime, clipTime, playDeltaTime, aniUpdate);
28750
28754
  var playCostTime;
28751
28755
  if (transition) {
28752
- var clipDuration = state.clip.length;
28753
- var clipEndTime = state.clipEndTime * clipDuration;
28754
- var exitTime = transition.exitTime * state._getDuration();
28756
+ var clipEndTime = state._getClipActualEndTime();
28757
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
28755
28758
  if (isForwards) {
28756
28759
  if (exitTime < lastClipTime) {
28757
28760
  playCostTime = exitTime + clipEndTime - lastClipTime;
@@ -28759,7 +28762,7 @@ var AnimatorLayerBlendingMode;
28759
28762
  playCostTime = exitTime - lastClipTime;
28760
28763
  }
28761
28764
  } else {
28762
- var startTime = state.clipStartTime * clipDuration;
28765
+ var startTime = state._getClipActualStartTime();
28763
28766
  if (lastClipTime < exitTime) {
28764
28767
  playCostTime = clipEndTime - exitTime + lastClipTime - startTime;
28765
28768
  } else {
@@ -28821,20 +28824,22 @@ var AnimatorLayerBlendingMode;
28821
28824
  var lastDestClipTime = destPlayData.clipTime, lastDstPlayState = destPlayData.playState;
28822
28825
  var dstPlayCostTime;
28823
28826
  if (destPlayData.isForwards) {
28824
- dstPlayCostTime = lastDestClipTime + dstPlayDeltaTime > transitionDuration ? transitionDuration - lastDestClipTime : dstPlayDeltaTime;
28827
+ // The time that has been played
28828
+ var playedTime = destPlayData.playedTime;
28829
+ dstPlayCostTime = playedTime + dstPlayDeltaTime > transitionDuration ? transitionDuration - playedTime : dstPlayDeltaTime;
28825
28830
  } else {
28826
28831
  // The time that has been played
28827
- var playedTime = destStateDuration - lastDestClipTime;
28828
- dstPlayCostTime = // -actualDestDeltaTime: The time that will be played, negative are meant to make ite be a periods
28832
+ var playedTime1 = destPlayData.playedTime;
28833
+ dstPlayCostTime = // -dstPlayDeltaTime: The time that will be played, negative are meant to make it be a periods
28829
28834
  // > transition: The time that will be played is enough to finish the transition
28830
- playedTime - dstPlayDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28831
- playedTime - transitionDuration : dstPlayDeltaTime;
28835
+ playedTime1 - dstPlayDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28836
+ playedTime1 - transitionDuration : dstPlayDeltaTime;
28832
28837
  }
28833
28838
  var actualCostTime = dstPlaySpeed === 0 ? deltaTime : dstPlayCostTime / dstPlaySpeed;
28834
28839
  var srcPlayCostTime = actualCostTime * srcPlaySpeed;
28835
28840
  srcPlayData.update(srcPlayCostTime);
28836
28841
  destPlayData.update(dstPlayCostTime);
28837
- var crossWeight = Math.abs(destPlayData.frameTime) / transitionDuration;
28842
+ var crossWeight = Math.abs(destPlayData.playedTime) / transitionDuration;
28838
28843
  (crossWeight >= 1.0 - MathUtil.zeroTolerance || transitionDuration === 0) && (crossWeight = 1.0);
28839
28844
  var crossFadeFinished = crossWeight === 1.0;
28840
28845
  if (crossFadeFinished) {
@@ -28884,18 +28889,20 @@ var AnimatorLayerBlendingMode;
28884
28889
  var lastDestClipTime = destPlayData.clipTime, lastPlayState = destPlayData.playState;
28885
28890
  var dstPlayCostTime;
28886
28891
  if (destPlayData.isForwards) {
28887
- dstPlayCostTime = lastDestClipTime + playDeltaTime > transitionDuration ? transitionDuration - lastDestClipTime : playDeltaTime;
28892
+ // The time that has been played
28893
+ var playedTime = destPlayData.playedTime;
28894
+ dstPlayCostTime = playedTime + playDeltaTime > transitionDuration ? transitionDuration - playedTime : playDeltaTime;
28888
28895
  } else {
28889
28896
  // The time that has been played
28890
- var playedTime = stateDuration - lastDestClipTime;
28897
+ var playedTime1 = destPlayData.playedTime;
28891
28898
  dstPlayCostTime = // -actualDestDeltaTime: The time that will be played, negative are meant to make ite be a periods
28892
28899
  // > transition: The time that will be played is enough to finish the transition
28893
- playedTime - playDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28894
- playedTime - transitionDuration : playDeltaTime;
28900
+ playedTime1 - playDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28901
+ playedTime1 - transitionDuration : playDeltaTime;
28895
28902
  }
28896
28903
  var actualCostTime = playSpeed === 0 ? deltaTime : dstPlayCostTime / playSpeed;
28897
28904
  destPlayData.update(dstPlayCostTime);
28898
- var crossWeight = Math.abs(destPlayData.frameTime) / transitionDuration;
28905
+ var crossWeight = Math.abs(destPlayData.playedTime) / transitionDuration;
28899
28906
  (crossWeight >= 1.0 - MathUtil.zeroTolerance || transitionDuration === 0) && (crossWeight = 1.0);
28900
28907
  var crossFadeFinished = crossWeight === 1.0;
28901
28908
  if (crossFadeFinished) {
@@ -29023,10 +29030,9 @@ var AnimatorLayerBlendingMode;
29023
29030
  _proto._checkSubTransition = function _checkSubTransition(layerIndex, layerData, layer, playState, transitions, lastClipTime, curClipTime, aniUpdate) {
29024
29031
  var state = playState.state;
29025
29032
  var transitionIndex = playState.currentTransitionIndex;
29026
- var duration = state._getDuration();
29027
29033
  for(var n = transitions.length; transitionIndex < n; transitionIndex++){
29028
29034
  var transition = transitions[transitionIndex];
29029
- var exitTime = transition.exitTime * duration;
29035
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
29030
29036
  if (exitTime > curClipTime) {
29031
29037
  break;
29032
29038
  }
@@ -29046,10 +29052,9 @@ var AnimatorLayerBlendingMode;
29046
29052
  _proto._checkBackwardsSubTransition = function _checkBackwardsSubTransition(layerIndex, layerData, layer, playState, transitions, lastClipTime, curClipTime, aniUpdate) {
29047
29053
  var state = playState.state;
29048
29054
  var transitionIndex = playState.currentTransitionIndex;
29049
- var duration = playState.state._getDuration();
29050
29055
  for(; transitionIndex >= 0; transitionIndex--){
29051
29056
  var transition = transitions[transitionIndex];
29052
- var exitTime = transition.exitTime * duration;
29057
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
29053
29058
  if (exitTime < curClipTime) {
29054
29059
  break;
29055
29060
  }
@@ -29680,6 +29685,16 @@ function _possible_constructor_return(self, call) {
29680
29685
  }
29681
29686
  }
29682
29687
  };
29688
+ /**
29689
+ * @internal
29690
+ */ _proto._getClipActualStartTime = function _getClipActualStartTime() {
29691
+ return this._clipStartTime * this.clip.length;
29692
+ };
29693
+ /**
29694
+ * @internal
29695
+ */ _proto._getClipActualEndTime = function _getClipActualEndTime() {
29696
+ return this._clipEndTime * this.clip.length;
29697
+ };
29683
29698
  _create_class(AnimatorState, [
29684
29699
  {
29685
29700
  key: "transitions",
@@ -31431,6 +31446,7 @@ __decorate([
31431
31446
 
31432
31447
  var MainModule = /*#__PURE__*/ function() {
31433
31448
  function MainModule(generator) {
31449
+ this._tempVector40 = new Vector4();
31434
31450
  /** The duration of the Particle Generator in seconds. */ this.duration = 5.0;
31435
31451
  /** Specifies whether the Particle Generator loops. */ this.isLoop = true;
31436
31452
  /** Start delay in seconds. */ this.startDelay = new ParticleCompositeCurve(0);
@@ -31452,7 +31468,6 @@ var MainModule = /*#__PURE__*/ function() {
31452
31468
  this._gravityModifierRand = new Rand(0, ParticleRandomSubSeeds.GravityModifier);
31453
31469
  this._startSize3D = false;
31454
31470
  this._simulationSpace = ParticleSimulationSpace.Local;
31455
- this._gravity = new Vector3();
31456
31471
  this._generator = generator;
31457
31472
  this.startLifetime = new ParticleCompositeCurve(5);
31458
31473
  this.startSpeed = new ParticleCompositeCurve(5);
@@ -31492,8 +31507,7 @@ var MainModule = /*#__PURE__*/ function() {
31492
31507
  case ParticleSimulationSpace.Local:
31493
31508
  shaderData.setVector3(MainModule._worldPosition, transform.worldPosition);
31494
31509
  var worldRotation = transform.worldRotationQuaternion;
31495
- var worldRotationV4 = MainModule._tempVector40;
31496
- worldRotationV4.copyFrom(worldRotation);
31510
+ var worldRotationV4 = this._tempVector40.copyFrom(worldRotation); // Maybe shaderData should support Quaternion
31497
31511
  shaderData.setVector4(MainModule._worldRotation, worldRotationV4);
31498
31512
  break;
31499
31513
  case ParticleSimulationSpace.World:
@@ -31517,10 +31531,7 @@ var MainModule = /*#__PURE__*/ function() {
31517
31531
  shaderData.setVector3(MainModule._sizeScale, MainModule._vector3One);
31518
31532
  break;
31519
31533
  }
31520
- var particleGravity = this._gravity;
31521
- var gravityModifierValue = this.gravityModifier.evaluate(undefined, this._gravityModifierRand.random());
31522
- Vector3.scale(renderer.scene.physics.gravity, gravityModifierValue, particleGravity);
31523
- shaderData.setVector3(MainModule._gravity, particleGravity);
31534
+ shaderData.setVector3(MainModule._gravity, renderer.scene.physics.gravity);
31524
31535
  shaderData.setInt(MainModule._simulationSpace, this.simulationSpace);
31525
31536
  shaderData.setFloat(MainModule._startRotation3D, +this.startRotation3D);
31526
31537
  shaderData.setInt(MainModule._scaleMode, this.scalingMode);
@@ -31688,9 +31699,6 @@ var MainModule = /*#__PURE__*/ function() {
31688
31699
  ]);
31689
31700
  return MainModule;
31690
31701
  }();
31691
- (function() {
31692
- MainModule._tempVector40 = new Vector4();
31693
- })();
31694
31702
  (function() {
31695
31703
  MainModule._vector3One = new Vector3(1, 1, 1);
31696
31704
  })();
@@ -31775,9 +31783,6 @@ __decorate([
31775
31783
  __decorate([
31776
31784
  ignoreClone
31777
31785
  ], MainModule.prototype, "_generator", void 0);
31778
- __decorate([
31779
- ignoreClone
31780
- ], MainModule.prototype, "_gravity", void 0);
31781
31786
 
31782
31787
  /**
31783
31788
  * Rotate particles throughout their lifetime.
@@ -33047,8 +33052,15 @@ __decorate([
33047
33052
  }
33048
33053
  // Start speed
33049
33054
  instanceVertices[offset + 18] = startSpeed;
33050
- // Unused, Color, size, rotation,
33051
- // instanceVertices[offset + 19] = rand.random();
33055
+ // Gravity, unused, size, rotation
33056
+ switch(main.gravityModifier.mode){
33057
+ case ParticleCurveMode.Constant:
33058
+ instanceVertices[offset + 19] = main.gravityModifier.constant;
33059
+ break;
33060
+ case ParticleCurveMode.TwoConstants:
33061
+ instanceVertices[offset + 19] = main.gravityModifier.evaluate(undefined, main._gravityModifierRand.random());
33062
+ break;
33063
+ }
33052
33064
  var colorOverLifetime = this.colorOverLifetime;
33053
33065
  if (colorOverLifetime.enabled && colorOverLifetime.color.mode === ParticleGradientMode.TwoGradients) {
33054
33066
  instanceVertices[offset + 20] = colorOverLifetime._colorGradientRand.random();