@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.
package/dist/main.js CHANGED
@@ -2252,7 +2252,7 @@ var size_over_lifetime_module = "#define GLSLIFY 1\n#ifdef RENDERER_SOL_CURVE_MO
2252
2252
 
2253
2253
  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
2254
2254
 
2255
- 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
2255
+ 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
2256
2256
 
2257
2257
  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
2258
2258
 
@@ -10332,7 +10332,7 @@ var /**
10332
10332
  if (background.mode === exports.BackgroundMode.Sky) {
10333
10333
  background.sky._render(context);
10334
10334
  } else if (background.mode === exports.BackgroundMode.Texture && background.texture) {
10335
- this._drawBackgroundTexture(engine, background);
10335
+ this._drawBackgroundTexture(camera, background);
10336
10336
  }
10337
10337
  }
10338
10338
  // Copy opaque texture
@@ -10428,7 +10428,8 @@ var /**
10428
10428
  renderElement.renderQueueFlags |= flag;
10429
10429
  }
10430
10430
  };
10431
- _proto._drawBackgroundTexture = function _drawBackgroundTexture(engine, background) {
10431
+ _proto._drawBackgroundTexture = function _drawBackgroundTexture(camera, background) {
10432
+ var engine = camera.engine;
10432
10433
  var rhi = engine._hardwareRenderer;
10433
10434
  var canvas = engine.canvas;
10434
10435
  var material = background._material, mesh = background._mesh;
@@ -10440,6 +10441,7 @@ var /**
10440
10441
  var program = pass._getShaderProgram(engine, Shader._compileMacros);
10441
10442
  program.bind();
10442
10443
  program.uploadAll(program.materialUniformBlock, material.shaderData);
10444
+ program.uploadAll(program.cameraUniformBlock, camera.shaderData);
10443
10445
  program.uploadUnGroupTextures();
10444
10446
  (pass._renderState || material.renderState)._applyStates(engine, false, pass._renderStateDataMap, material.shaderData);
10445
10447
  rhi.drawPrimitive(mesh._primitive, mesh.subMesh, program);
@@ -23078,7 +23080,7 @@ var skyProceduralVs = "#define GLSLIFY 1\n#define OUTER_RADIUS 1.025\n#define RA
23078
23080
 
23079
23081
  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
23080
23082
 
23081
- 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
23083
+ 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
23082
23084
 
23083
23085
  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
23084
23086
 
@@ -23090,7 +23092,7 @@ var depthOnlyVs = "#define GLSLIFY 1\n#include <common>\n#include <common_vert>\
23090
23092
 
23091
23093
  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
23092
23094
 
23093
- 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
23095
+ 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
23094
23096
 
23095
23097
  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
23096
23098
 
@@ -26268,16 +26270,17 @@ Shader.create(_PostProcessManager.UBER_SHADER_NAME, blitVs, UberPost);
26268
26270
  * @internal
26269
26271
  */ _proto._onDisableInScene = function _onDisableInScene() {
26270
26272
  var componentsManager = this.scene._componentsManager;
26273
+ var prototype = Script.prototype;
26271
26274
  if (!this._started) {
26272
26275
  componentsManager.removeOnStartScript(this);
26273
26276
  }
26274
- if (this._onUpdateIndex >= 0) {
26277
+ if (this.onUpdate !== prototype.onUpdate) {
26275
26278
  componentsManager.removeOnUpdateScript(this);
26276
26279
  }
26277
- if (this._onLateUpdateIndex >= 0) {
26280
+ if (this.onLateUpdate !== prototype.onLateUpdate) {
26278
26281
  componentsManager.removeOnLateUpdateScript(this);
26279
26282
  }
26280
- if (this._onPhysicsUpdateIndex >= 0) {
26283
+ if (this.onPhysicsUpdate !== prototype.onPhysicsUpdate) {
26281
26284
  componentsManager.removeOnPhysicsUpdateScript(this);
26282
26285
  }
26283
26286
  this._entity._removeScript(this);
@@ -28285,7 +28288,8 @@ exports.AnimatorLayerBlendingMode = void 0;
28285
28288
  var _proto = AnimatorStatePlayData.prototype;
28286
28289
  _proto.reset = function reset(state, stateData, offsetFrameTime) {
28287
28290
  this.state = state;
28288
- this.frameTime = offsetFrameTime;
28291
+ this.playedTime = 0;
28292
+ this.offsetFrameTime = offsetFrameTime;
28289
28293
  this.stateData = stateData;
28290
28294
  this.playState = AnimatorStatePlayState.UnStarted;
28291
28295
  this.clipTime = state.clipStartTime * state.clip.length;
@@ -28304,9 +28308,9 @@ exports.AnimatorLayerBlendingMode = void 0;
28304
28308
  }
28305
28309
  };
28306
28310
  _proto.update = function update(deltaTime) {
28307
- this.frameTime += deltaTime;
28311
+ this.playedTime += deltaTime;
28308
28312
  var state = this.state;
28309
- var time = this.frameTime;
28313
+ var time = this.playedTime + this.offsetFrameTime;
28310
28314
  var duration = state._getDuration();
28311
28315
  this.playState = AnimatorStatePlayState.Playing;
28312
28316
  if (state.wrapMode === exports.WrapMode.Loop) {
@@ -28753,9 +28757,8 @@ exports.AnimatorLayerBlendingMode = void 0;
28753
28757
  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);
28754
28758
  var playCostTime;
28755
28759
  if (transition) {
28756
- var clipDuration = state.clip.length;
28757
- var clipEndTime = state.clipEndTime * clipDuration;
28758
- var exitTime = transition.exitTime * state._getDuration();
28760
+ var clipEndTime = state._getClipActualEndTime();
28761
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
28759
28762
  if (isForwards) {
28760
28763
  if (exitTime < lastClipTime) {
28761
28764
  playCostTime = exitTime + clipEndTime - lastClipTime;
@@ -28763,7 +28766,7 @@ exports.AnimatorLayerBlendingMode = void 0;
28763
28766
  playCostTime = exitTime - lastClipTime;
28764
28767
  }
28765
28768
  } else {
28766
- var startTime = state.clipStartTime * clipDuration;
28769
+ var startTime = state._getClipActualStartTime();
28767
28770
  if (lastClipTime < exitTime) {
28768
28771
  playCostTime = clipEndTime - exitTime + lastClipTime - startTime;
28769
28772
  } else {
@@ -28825,20 +28828,22 @@ exports.AnimatorLayerBlendingMode = void 0;
28825
28828
  var lastDestClipTime = destPlayData.clipTime, lastDstPlayState = destPlayData.playState;
28826
28829
  var dstPlayCostTime;
28827
28830
  if (destPlayData.isForwards) {
28828
- dstPlayCostTime = lastDestClipTime + dstPlayDeltaTime > transitionDuration ? transitionDuration - lastDestClipTime : dstPlayDeltaTime;
28831
+ // The time that has been played
28832
+ var playedTime = destPlayData.playedTime;
28833
+ dstPlayCostTime = playedTime + dstPlayDeltaTime > transitionDuration ? transitionDuration - playedTime : dstPlayDeltaTime;
28829
28834
  } else {
28830
28835
  // The time that has been played
28831
- var playedTime = destStateDuration - lastDestClipTime;
28832
- dstPlayCostTime = // -actualDestDeltaTime: The time that will be played, negative are meant to make ite be a periods
28836
+ var playedTime1 = destPlayData.playedTime;
28837
+ dstPlayCostTime = // -dstPlayDeltaTime: The time that will be played, negative are meant to make it be a periods
28833
28838
  // > transition: The time that will be played is enough to finish the transition
28834
- playedTime - dstPlayDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28835
- playedTime - transitionDuration : dstPlayDeltaTime;
28839
+ playedTime1 - dstPlayDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28840
+ playedTime1 - transitionDuration : dstPlayDeltaTime;
28836
28841
  }
28837
28842
  var actualCostTime = dstPlaySpeed === 0 ? deltaTime : dstPlayCostTime / dstPlaySpeed;
28838
28843
  var srcPlayCostTime = actualCostTime * srcPlaySpeed;
28839
28844
  srcPlayData.update(srcPlayCostTime);
28840
28845
  destPlayData.update(dstPlayCostTime);
28841
- var crossWeight = Math.abs(destPlayData.frameTime) / transitionDuration;
28846
+ var crossWeight = Math.abs(destPlayData.playedTime) / transitionDuration;
28842
28847
  (crossWeight >= 1.0 - engineMath.MathUtil.zeroTolerance || transitionDuration === 0) && (crossWeight = 1.0);
28843
28848
  var crossFadeFinished = crossWeight === 1.0;
28844
28849
  if (crossFadeFinished) {
@@ -28888,18 +28893,20 @@ exports.AnimatorLayerBlendingMode = void 0;
28888
28893
  var lastDestClipTime = destPlayData.clipTime, lastPlayState = destPlayData.playState;
28889
28894
  var dstPlayCostTime;
28890
28895
  if (destPlayData.isForwards) {
28891
- dstPlayCostTime = lastDestClipTime + playDeltaTime > transitionDuration ? transitionDuration - lastDestClipTime : playDeltaTime;
28896
+ // The time that has been played
28897
+ var playedTime = destPlayData.playedTime;
28898
+ dstPlayCostTime = playedTime + playDeltaTime > transitionDuration ? transitionDuration - playedTime : playDeltaTime;
28892
28899
  } else {
28893
28900
  // The time that has been played
28894
- var playedTime = stateDuration - lastDestClipTime;
28901
+ var playedTime1 = destPlayData.playedTime;
28895
28902
  dstPlayCostTime = // -actualDestDeltaTime: The time that will be played, negative are meant to make ite be a periods
28896
28903
  // > transition: The time that will be played is enough to finish the transition
28897
- playedTime - playDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28898
- playedTime - transitionDuration : playDeltaTime;
28904
+ playedTime1 - playDeltaTime > transitionDuration ? // -(transitionDuration - playedTime)
28905
+ playedTime1 - transitionDuration : playDeltaTime;
28899
28906
  }
28900
28907
  var actualCostTime = playSpeed === 0 ? deltaTime : dstPlayCostTime / playSpeed;
28901
28908
  destPlayData.update(dstPlayCostTime);
28902
- var crossWeight = Math.abs(destPlayData.frameTime) / transitionDuration;
28909
+ var crossWeight = Math.abs(destPlayData.playedTime) / transitionDuration;
28903
28910
  (crossWeight >= 1.0 - engineMath.MathUtil.zeroTolerance || transitionDuration === 0) && (crossWeight = 1.0);
28904
28911
  var crossFadeFinished = crossWeight === 1.0;
28905
28912
  if (crossFadeFinished) {
@@ -29027,10 +29034,9 @@ exports.AnimatorLayerBlendingMode = void 0;
29027
29034
  _proto._checkSubTransition = function _checkSubTransition(layerIndex, layerData, layer, playState, transitions, lastClipTime, curClipTime, aniUpdate) {
29028
29035
  var state = playState.state;
29029
29036
  var transitionIndex = playState.currentTransitionIndex;
29030
- var duration = state._getDuration();
29031
29037
  for(var n = transitions.length; transitionIndex < n; transitionIndex++){
29032
29038
  var transition = transitions[transitionIndex];
29033
- var exitTime = transition.exitTime * duration;
29039
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
29034
29040
  if (exitTime > curClipTime) {
29035
29041
  break;
29036
29042
  }
@@ -29050,10 +29056,9 @@ exports.AnimatorLayerBlendingMode = void 0;
29050
29056
  _proto._checkBackwardsSubTransition = function _checkBackwardsSubTransition(layerIndex, layerData, layer, playState, transitions, lastClipTime, curClipTime, aniUpdate) {
29051
29057
  var state = playState.state;
29052
29058
  var transitionIndex = playState.currentTransitionIndex;
29053
- var duration = playState.state._getDuration();
29054
29059
  for(; transitionIndex >= 0; transitionIndex--){
29055
29060
  var transition = transitions[transitionIndex];
29056
- var exitTime = transition.exitTime * duration;
29061
+ var exitTime = transition.exitTime * state._getDuration() + state._getClipActualStartTime();
29057
29062
  if (exitTime < curClipTime) {
29058
29063
  break;
29059
29064
  }
@@ -29684,6 +29689,16 @@ function _possible_constructor_return(self, call) {
29684
29689
  }
29685
29690
  }
29686
29691
  };
29692
+ /**
29693
+ * @internal
29694
+ */ _proto._getClipActualStartTime = function _getClipActualStartTime() {
29695
+ return this._clipStartTime * this.clip.length;
29696
+ };
29697
+ /**
29698
+ * @internal
29699
+ */ _proto._getClipActualEndTime = function _getClipActualEndTime() {
29700
+ return this._clipEndTime * this.clip.length;
29701
+ };
29687
29702
  _create_class(AnimatorState, [
29688
29703
  {
29689
29704
  key: "transitions",
@@ -31435,6 +31450,7 @@ __decorate([
31435
31450
 
31436
31451
  var MainModule = /*#__PURE__*/ function() {
31437
31452
  function MainModule(generator) {
31453
+ this._tempVector40 = new engineMath.Vector4();
31438
31454
  /** The duration of the Particle Generator in seconds. */ this.duration = 5.0;
31439
31455
  /** Specifies whether the Particle Generator loops. */ this.isLoop = true;
31440
31456
  /** Start delay in seconds. */ this.startDelay = new ParticleCompositeCurve(0);
@@ -31456,7 +31472,6 @@ var MainModule = /*#__PURE__*/ function() {
31456
31472
  this._gravityModifierRand = new engineMath.Rand(0, ParticleRandomSubSeeds.GravityModifier);
31457
31473
  this._startSize3D = false;
31458
31474
  this._simulationSpace = exports.ParticleSimulationSpace.Local;
31459
- this._gravity = new engineMath.Vector3();
31460
31475
  this._generator = generator;
31461
31476
  this.startLifetime = new ParticleCompositeCurve(5);
31462
31477
  this.startSpeed = new ParticleCompositeCurve(5);
@@ -31496,8 +31511,7 @@ var MainModule = /*#__PURE__*/ function() {
31496
31511
  case exports.ParticleSimulationSpace.Local:
31497
31512
  shaderData.setVector3(MainModule._worldPosition, transform.worldPosition);
31498
31513
  var worldRotation = transform.worldRotationQuaternion;
31499
- var worldRotationV4 = MainModule._tempVector40;
31500
- worldRotationV4.copyFrom(worldRotation);
31514
+ var worldRotationV4 = this._tempVector40.copyFrom(worldRotation); // Maybe shaderData should support Quaternion
31501
31515
  shaderData.setVector4(MainModule._worldRotation, worldRotationV4);
31502
31516
  break;
31503
31517
  case exports.ParticleSimulationSpace.World:
@@ -31521,10 +31535,7 @@ var MainModule = /*#__PURE__*/ function() {
31521
31535
  shaderData.setVector3(MainModule._sizeScale, MainModule._vector3One);
31522
31536
  break;
31523
31537
  }
31524
- var particleGravity = this._gravity;
31525
- var gravityModifierValue = this.gravityModifier.evaluate(undefined, this._gravityModifierRand.random());
31526
- engineMath.Vector3.scale(renderer.scene.physics.gravity, gravityModifierValue, particleGravity);
31527
- shaderData.setVector3(MainModule._gravity, particleGravity);
31538
+ shaderData.setVector3(MainModule._gravity, renderer.scene.physics.gravity);
31528
31539
  shaderData.setInt(MainModule._simulationSpace, this.simulationSpace);
31529
31540
  shaderData.setFloat(MainModule._startRotation3D, +this.startRotation3D);
31530
31541
  shaderData.setInt(MainModule._scaleMode, this.scalingMode);
@@ -31692,9 +31703,6 @@ var MainModule = /*#__PURE__*/ function() {
31692
31703
  ]);
31693
31704
  return MainModule;
31694
31705
  }();
31695
- (function() {
31696
- MainModule._tempVector40 = new engineMath.Vector4();
31697
- })();
31698
31706
  (function() {
31699
31707
  MainModule._vector3One = new engineMath.Vector3(1, 1, 1);
31700
31708
  })();
@@ -31779,9 +31787,6 @@ __decorate([
31779
31787
  __decorate([
31780
31788
  ignoreClone
31781
31789
  ], MainModule.prototype, "_generator", void 0);
31782
- __decorate([
31783
- ignoreClone
31784
- ], MainModule.prototype, "_gravity", void 0);
31785
31790
 
31786
31791
  /**
31787
31792
  * Rotate particles throughout their lifetime.
@@ -33051,8 +33056,15 @@ __decorate([
33051
33056
  }
33052
33057
  // Start speed
33053
33058
  instanceVertices[offset + 18] = startSpeed;
33054
- // Unused, Color, size, rotation,
33055
- // instanceVertices[offset + 19] = rand.random();
33059
+ // Gravity, unused, size, rotation
33060
+ switch(main.gravityModifier.mode){
33061
+ case exports.ParticleCurveMode.Constant:
33062
+ instanceVertices[offset + 19] = main.gravityModifier.constant;
33063
+ break;
33064
+ case exports.ParticleCurveMode.TwoConstants:
33065
+ instanceVertices[offset + 19] = main.gravityModifier.evaluate(undefined, main._gravityModifierRand.random());
33066
+ break;
33067
+ }
33056
33068
  var colorOverLifetime = this.colorOverLifetime;
33057
33069
  if (colorOverLifetime.enabled && colorOverLifetime.color.mode === exports.ParticleGradientMode.TwoGradients) {
33058
33070
  instanceVertices[offset + 20] = colorOverLifetime._colorGradientRand.random();