Files
lifeRestart/public/libs/laya/min/laya.particle.min.js
Vick Scarlet 150c991648 Squashed commit of the following:
commit b421082374
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Fri Dec 31 20:26:20 2021 +0800

    update specialthanks

commit 765a69294b
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 19:10:03 2021 +0800

    fix ios goto

commit 8eb8c3ca72
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 19:03:37 2021 +0800

    add event grade

commit ab705dd46c
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 18:48:42 2021 +0800

    build version

commit a1e4232369
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 18:47:05 2021 +0800

    change talent replace before property allocate

commit f4d7b3ae3c
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 18:06:18 2021 +0800

    add event grade

commit 0567e40ddc
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 21:28:10 2021 +0800

    add particle

commit f17003925e
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 20:14:26 2021 +0800

    change ui

commit f8beda1d8f
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 19:08:30 2021 +0800

    change popup message ui

commit 915a2aa17d
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 18:34:29 2021 +0800

    new build

commit b5edabc104
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 18:18:46 2021 +0800

    add hint message

commit a143feadaf
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 17:57:31 2021 +0800

    fix copy bug

commit eab1975791
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 17:56:28 2021 +0800

    add save/load

commit acf9b92134
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 14:35:33 2021 +0800

    add theme switch

commit 488a6054ab
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Wed Dec 1 18:30:36 2021 +0800

    fix uiManager bug

commit f0317eaf14
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Wed Dec 1 16:07:03 2021 +0800

    add message popup

commit eb02d1ee6f
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 21:22:54 2021 +0800

    change relocation

commit 60503eae47
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 19:27:16 2021 +0800

    change ScaleButton -> Laya.runtime.ScaleButton

commit 52ef5909c1
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 19:26:31 2021 +0800

    change ScaleButton -> Laya.runtime.ScaleButton

commit 0284f6aa71
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 19:05:24 2021 +0800

    config webpack

commit 0e272ffd99
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 13:17:41 2021 +0800

    add thanks

commit e1e2ab4701
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 11:40:21 2021 +0800

    add light theme

commit 4f55c00f86
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sat Nov 27 22:27:39 2021 +0800

    fix bug

commit 1d07bdfc46
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sat Nov 27 21:48:47 2021 +0800

    daily update

commit 52d6a0ca8f
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Wed Nov 24 23:10:04 2021 +0800

    daily update

commit f8dd720d4d
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Wed Nov 24 19:08:13 2021 +0800

    daily update

commit d088c1a862
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 21 21:41:46 2021 +0800

    remove useless

commit a711fcf3ed
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Nov 16 00:53:05 2021 +0800

    add achievement popup
    add page adaptive
    add talent extends

commit 05e02de3db
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sat Nov 13 01:24:04 2021 +0800

    add github and discord

commit bff0109cc5
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sat Nov 13 00:30:01 2021 +0800

    add trajectory auto mode

commit 54c04f65c2
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Fri Nov 12 19:54:31 2021 +0800

    fix property judge negative number bug

commit 660739530b
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Fri Nov 12 19:48:58 2021 +0800

    update achievement

commit c94e9e7433
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Nov 11 21:37:45 2021 +0800

    update daily

commit c06cd9ea62
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Nov 9 00:08:05 2021 +0800

    update daily

commit 2666983f89
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 7 23:00:22 2021 +0800

    add uiManager auto scan and load skin resource

commit 22fa5d755a
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 7 22:17:04 2021 +0800

    update framework

commit f40698d63e
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Oct 31 00:13:22 2021 +0800

    add laya
2021-12-31 20:31:26 +08:00

1 line
28 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
!function(r,n){n.un,n.uns;var t=n.static,s=n.class,a=n.getset,o=(n.__newvec,laya.webgl.canvas.BlendMode),c=(laya.events.Event,laya.resource.HTMLCanvas),l=laya.utils.Handler,h=laya.webgl.utils.IndexBuffer2D,u=(laya.net.Loader,laya.maths.MathUtil),d=laya.maths.Matrix,m=laya.renders.Render,e=(laya.renders.RenderContext,laya.renders.RenderSprite,laya.webgl.shader.Shader),i=laya.display.Sprite,_=laya.utils.Stat,p=laya.resource.Texture,f=laya.utils.Utils,v=laya.webgl.shader.d2.value.Value2D,x=laya.webgl.utils.VertexBuffer2D,y=laya.webgl.WebGL,C=(laya.webgl.WebGLContext,function(){function t(){this._frameTime=0,this._emissionRate=60,this._emissionTime=0,this.minEmissionTime=1/60,this._particleTemplate=null}s(t,"laya.particle.emitter.EmitterBase");var e=t.prototype;return e.start=function(t){void 0===t&&(t=2147483647),0!=this._emissionRate&&(this._emissionTime=t)},e.stop=function(){this._emissionTime=0},e.clear=function(){this._emissionTime=0},e.emit=function(){},e.advanceTime=function(t){if(this._emissionTime-=t=void 0===t?1:t,!(this._emissionTime<0||(this._frameTime+=t,this._frameTime<this.minEmissionTime)))for(;this._frameTime>this.minEmissionTime;)this._frameTime-=this.minEmissionTime,this.emit()},a(0,e,"particleTemplate",null,function(t){this._particleTemplate=t}),a(0,e,"emissionRate",function(){return this._emissionRate},function(t){t<=0||0<(this._emissionRate=t)&&(this.minEmissionTime=1/t)}),t}()),P=(s(g,"laya.particle.ParticleData"),g.Create=function(t,e,i,a){var r=new g;r.position=e,u.scaleVector3(i,t.emitterVelocitySensitivity,g._tempVelocity);e=u.lerp(t.minHorizontalVelocity,t.maxHorizontalVelocity,Math.random()),i=Math.random()*Math.PI*2;g._tempVelocity[0]+=e*Math.cos(i),g._tempVelocity[2]+=e*Math.sin(i),g._tempVelocity[1]+=u.lerp(t.minVerticalVelocity,t.maxVerticalVelocity,Math.random()),r.velocity=g._tempVelocity,r.startColor=g._tempStartColor,r.endColor=g._tempEndColor;var n=0;if(t.disableColor)for(n=0;n<4;n++)r.startColor[n]=1,r.endColor[n]=1;else if(t.colorComponentInter)for(n=0;n<4;n++)r.startColor[n]=u.lerp(t.minStartColor[n],t.maxStartColor[n],Math.random()),r.endColor[n]=u.lerp(t.minEndColor[n],t.maxEndColor[n],Math.random());else u.lerpVector4(t.minStartColor,t.maxStartColor,Math.random(),r.startColor),u.lerpVector4(t.minEndColor,t.maxEndColor,Math.random(),r.endColor);r.sizeRotation=g._tempSizeRotation;i=Math.random();r.sizeRotation[0]=u.lerp(t.minStartSize,t.maxStartSize,i),r.sizeRotation[1]=u.lerp(t.minEndSize,t.maxEndSize,i),r.sizeRotation[2]=u.lerp(t.minRotateSpeed,t.maxRotateSpeed,Math.random()),r.radius=g._tempRadius;i=Math.random();r.radius[0]=u.lerp(t.minStartRadius,t.maxStartRadius,i),r.radius[1]=u.lerp(t.minEndRadius,t.maxEndRadius,i),r.radian=g._tempRadian,r.radian[0]=u.lerp(t.minHorizontalStartRadian,t.maxHorizontalStartRadian,Math.random()),r.radian[1]=u.lerp(t.minVerticalStartRadian,t.maxVerticalStartRadian,Math.random());i=t.useEndRadian;return r.radian[2]=i?u.lerp(t.minHorizontalEndRadian,t.maxHorizontalEndRadian,Math.random()):r.radian[0],r.radian[3]=i?u.lerp(t.minVerticalEndRadian,t.maxVerticalEndRadian,Math.random()):r.radian[1],r.durationAddScale=t.ageAddScale*Math.random(),r.time=a,r},t(g,["_tempVelocity",function(){return this._tempVelocity=new Float32Array(3)},"_tempStartColor",function(){return this._tempStartColor=new Float32Array(4)},"_tempEndColor",function(){return this._tempEndColor=new Float32Array(4)},"_tempSizeRotation",function(){return this._tempSizeRotation=new Float32Array(3)},"_tempRadius",function(){return this._tempRadius=new Float32Array(2)},"_tempRadian",function(){return this._tempRadian=new Float32Array(4)}]),g);function g(){this.position=null,this.velocity=null,this.startColor=null,this.endColor=null,this.sizeRotation=null,this.radius=null,this.radian=null,this.durationAddScale=NaN,this.time=NaN}s(R,"laya.particle.ParticleEmitter"),R.prototype.update=function(t,e){if(0<(t/=1e3)){u.subtractVector3(e,this._previousPosition,this._tempVelocity),u.scaleVector3(this._tempVelocity,1/t,this._tempVelocity);for(var i=this._timeLeftOver+t,a=-this._timeLeftOver;i>this._timeBetweenParticles;)a+=this._timeBetweenParticles,i-=this._timeBetweenParticles,u.lerpVector3(this._previousPosition,e,a/t,this._tempPosition),this._templet.addParticleArray(this._tempPosition,this._tempVelocity);this._timeLeftOver=i}this._previousPosition[0]=e[0],this._previousPosition[1]=e[1],this._previousPosition[2]=e[2]};function R(t,e,i){this._templet=null,this._timeBetweenParticles=NaN,this._previousPosition=null,this._timeLeftOver=0,this._tempVelocity=new Float32Array([0,0,0]),this._tempPosition=new Float32Array([0,0,0]),this._templet=t,this._timeBetweenParticles=1/e,this._previousPosition=i}var S=(s(V,"laya.particle.ParticleSetting"),V.checkSetting=function(t){for(var e in V._defaultSetting)t.hasOwnProperty(e)||(t[e]=V._defaultSetting[e]);t.endVelocity=+t.endVelocity,t.gravity[0]=+t.gravity[0],t.gravity[1]=+t.gravity[1],t.gravity[2]=+t.gravity[2]},t(V,["_defaultSetting",function(){return this._defaultSetting=new V}]),V);function V(){this.textureName=null,this.textureCount=1,this.maxPartices=100,this.duration=1,this.ageAddScale=0,this.emitterVelocitySensitivity=1,this.minStartSize=100,this.maxStartSize=100,this.minEndSize=100,this.maxEndSize=100,this.minHorizontalVelocity=0,this.maxHorizontalVelocity=0,this.minVerticalVelocity=0,this.maxVerticalVelocity=0,this.endVelocity=1,this.minRotateSpeed=0,this.maxRotateSpeed=0,this.minStartRadius=0,this.maxStartRadius=0,this.minEndRadius=0,this.maxEndRadius=0,this.minHorizontalStartRadian=0,this.maxHorizontalStartRadian=0,this.minVerticalStartRadian=0,this.maxVerticalStartRadian=0,this.useEndRadian=!0,this.minHorizontalEndRadian=0,this.maxHorizontalEndRadian=0,this.minVerticalEndRadian=0,this.maxVerticalEndRadian=0,this.colorComponentInter=!1,this.disableColor=!1,this.blendState=0,this.emitterType="null",this.emissionRate=0,this.sphereEmitterRadius=1,this.sphereEmitterVelocity=0,this.sphereEmitterVelocityAddVariance=0,this.ringEmitterRadius=30,this.ringEmitterVelocity=0,this.ringEmitterVelocityAddVariance=0,this.ringEmitterUp=2,this.gravity=new Float32Array([0,0,0]),this.minStartColor=new Float32Array([1,1,1,1]),this.maxStartColor=new Float32Array([1,1,1,1]),this.minEndColor=new Float32Array([1,1,1,1]),this.maxEndColor=new Float32Array([1,1,1,1]),this.pointEmitterPosition=new Float32Array([0,0,0]),this.pointEmitterPositionVariance=new Float32Array([0,0,0]),this.pointEmitterVelocity=new Float32Array([0,0,0]),this.pointEmitterVelocityAddVariance=new Float32Array([0,0,0]),this.boxEmitterCenterPosition=new Float32Array([0,0,0]),this.boxEmitterSize=new Float32Array([0,0,0]),this.boxEmitterVelocity=new Float32Array([0,0,0]),this.boxEmitterVelocityAddVariance=new Float32Array([0,0,0]),this.sphereEmitterCenterPosition=new Float32Array([0,0,0]),this.ringEmitterCenterPosition=new Float32Array([0,0,0]),this.positionVariance=new Float32Array([0,0,0])}var E=(s(A,"laya.particle.ParticleTemplateBase"),A.prototype.addParticleArray=function(t,e){},A);function A(){this.settings=null,this.texture=null}var T=function(){function t(){this.u_Duration=NaN,this.u_EndVelocity=NaN,this.u_Gravity=null,this.a_Position=null,this.a_Velocity=null,this.a_StartColor=null,this.a_EndColor=null,this.a_SizeRotation=null,this.a_Radius=null,this.a_Radian=null,this.a_AgeAddScale=NaN,this.gl_Position=null,this.v_Color=null,this.oSize=NaN,this._color=new Float32Array(4),this._position=new Float32Array(3)}s(t,"laya.particle.particleUtils.CanvasShader");var e=t.prototype;return e.getLen=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])},e.ComputeParticlePosition=function(t,e,i,a){this._position[0]=t[0],this._position[1]=t[1],this._position[2]=t[2];for(var r=this.getLen(e),n=r*a+(r*this.u_EndVelocity-r)*a*a/2,s=this.getLen(e),o=0,o=0;o<3;o++)this._position[o]=this._position[o]+e[o]/s*n*this.u_Duration,this._position[o]+=this.u_Gravity[o]*i*a;var l=u.lerp(this.a_Radius[0],this.a_Radius[1],a),h=u.lerp(this.a_Radian[0],this.a_Radian[2],a),t=u.lerp(this.a_Radian[1],this.a_Radian[3],a),r=Math.cos(t)*l;return this._position[1]+=Math.sin(t)*l,this._position[0]+=Math.cos(h)*r,this._position[2]+=Math.sin(h)*r,new Float32Array([this._position[0],this._position[1],0,1])},e.ComputeParticleSize=function(t,e,i){return u.lerp(t,e,i)},e.ComputeParticleRotation=function(t,e){return t*e},e.ComputeParticleColor=function(t,e,i){var a=this._color;return u.lerpVector4(t,e,i,a),a[3]=a[3]*i*(1-i)*(1-i)*6.7,a},e.clamp=function(t,e,i){return t<e?e:i<t?i:t},e.getData=function(t){t*=1+this.a_AgeAddScale;var e=this.clamp(t/this.u_Duration,0,1);this.gl_Position=this.ComputeParticlePosition(this.a_Position,this.a_Velocity,t,e);var i=this.ComputeParticleSize(this.a_SizeRotation[0],this.a_SizeRotation[1],e),a=this.ComputeParticleRotation(this.a_SizeRotation[2],t);this.v_Color=this.ComputeParticleColor(this.a_StartColor,this.a_EndColor,e);t=new d,e=i/this.oSize*2;t.scale(e,e),t.rotate(a),t.setTranslate(this.gl_Position[0],-this.gl_Position[1]);a=this.v_Color[3];return[this.v_Color,a,t,this.v_Color[0]*a,this.v_Color[1]*a,this.v_Color[2]*a]},t}(),w=(s(z,"laya.particle.particleUtils.CMDParticle"),z.prototype.setCmds=function(t){this.cmds=t,this.maxIndex=t.length-1},z);function z(){this.maxIndex=0,this.cmds=null,this.id=0}var b=(s(F,"laya.particle.particleUtils.PicTool"),F.getCanvasPic=function(t,e){t=t.bitmap;var i=new c("2D"),a=i.getContext("2d");i.size(t.width,t.height);var r=e>>16&255,n=e>>8&255,s=255&e;if(m.isConchApp&&a.setFilter(r/255,n/255,s/255,0),a.drawImage(t.source,0,0),!m.isConchApp){for(var t=a.getImageData(0,0,i.width,i.height),o=t.data,l=0,h=o.length;l<h;l+=4)0!=o[l+3]&&(o[l]*=r/255,o[l+1]*=n/255,o[l+2]*=s/255);a.putImageData(t,0,0)}return i},F.getRGBPic=function(t){return[new p(F.getCanvasPic(t,16711680)),new p(F.getCanvasPic(t,65280)),new p(F.getCanvasPic(t,255))]},F);function F(){}var D=function(t){function e(t){this.setting=null,this._posRange=null,this._canvasTemplate=null,this._emitFun=null,e.__super.call(this),this.template=t}s(e,"laya.particle.emitter.Emitter2D",t);var i=e.prototype;return i.emit=function(){t.prototype.emit.call(this),null!=this._emitFun&&this._emitFun()},i.getRandom=function(t){return(2*Math.random()-1)*t},i.webGLEmit=function(){var t=new Float32Array(3);t[0]=this.getRandom(this._posRange[0]),t[1]=this.getRandom(this._posRange[1]),t[2]=this.getRandom(this._posRange[2]);var e=new Float32Array(3);e[0]=0,e[1]=0,e[2]=0,this._particleTemplate.addParticleArray(t,e)},i.canvasEmit=function(){var t=new Float32Array(3);t[0]=this.getRandom(this._posRange[0]),t[1]=this.getRandom(this._posRange[1]),t[2]=this.getRandom(this._posRange[2]);var e=new Float32Array(3);e[0]=0,e[1]=0,e[2]=0,this._particleTemplate.addParticleArray(t,e)},a(0,i,"template",function(){return this._particleTemplate},function(t){(this._particleTemplate=t)||(this._emitFun=null,this.setting=null,this._posRange=null),this.setting=t.settings,this._posRange=this.setting.positionVariance,this._particleTemplate instanceof laya.particle.ParticleTemplate2D?this._emitFun=this.webGLEmit:this._particleTemplate instanceof laya.particle.ParticleTemplateCanvas&&(this._canvasTemplate=t,this._emitFun=this.canvasEmit)}),e}(C),C=function(){function e(t){this._vertices=null,this._vertexBuffer=null,this._indexBuffer=null,this._floatCountPerVertex=29,this._firstActiveElement=0,this._firstNewElement=0,this._firstFreeElement=0,this._firstRetiredElement=0,this._currentTime=0,this._drawCounter=0,e.__super.call(this),this.settings=t}s(e,"laya.particle.ParticleTemplateWebGL",E);var t=e.prototype;return t.initialize=function(){this._vertices=new Float32Array(this.settings.maxPartices*this._floatCountPerVertex*4);for(var t,e=0;e<this.settings.maxPartices;e++){for(var i=Math.random(),a=this.settings.textureCount?1/this.settings.textureCount:1,r=NaN,r=0;r<this.settings.textureCount&&!(i<r+a);r+=a);t=e*this._floatCountPerVertex*4,this._vertices[t+0*this._floatCountPerVertex]=-1,this._vertices[t+0*this._floatCountPerVertex+1]=-1,this._vertices[t+0*this._floatCountPerVertex+2]=0,this._vertices[t+0*this._floatCountPerVertex+3]=r,this._vertices[t+ +this._floatCountPerVertex]=1,this._vertices[t+ +this._floatCountPerVertex+1]=-1,this._vertices[t+ +this._floatCountPerVertex+2]=1,this._vertices[t+ +this._floatCountPerVertex+3]=r,this._vertices[t+2*this._floatCountPerVertex]=1,this._vertices[t+2*this._floatCountPerVertex+1]=1,this._vertices[t+2*this._floatCountPerVertex+2]=1,this._vertices[t+2*this._floatCountPerVertex+3]=r+a,this._vertices[t+3*this._floatCountPerVertex]=-1,this._vertices[t+3*this._floatCountPerVertex+1]=1,this._vertices[t+3*this._floatCountPerVertex+2]=0,this._vertices[t+3*this._floatCountPerVertex+3]=r+a}},t.loadContent=function(){},t.update=function(t){this._currentTime+=t/1e3,this.retireActiveParticles(),this.freeRetiredParticles(),this._firstActiveElement==this._firstFreeElement&&(this._currentTime=0),this._firstRetiredElement==this._firstActiveElement&&(this._drawCounter=0)},t.retireActiveParticles=function(){for(var t=this.settings.duration;this._firstActiveElement!=this._firstNewElement;){var e=this._firstActiveElement*this._floatCountPerVertex*4,i=28+e,a=this._currentTime-this._vertices[i];if(1e-4+(a*=1+this._vertices[27+e])<t)break;this._vertices[i]=this._drawCounter,this._firstActiveElement++,this._firstActiveElement>=this.settings.maxPartices&&(this._firstActiveElement=0)}},t.freeRetiredParticles=function(){for(;this._firstRetiredElement!=this._firstActiveElement;){if(this._drawCounter-this._vertices[this._firstRetiredElement*this._floatCountPerVertex*4+28]<3)break;this._firstRetiredElement++,this._firstRetiredElement>=this.settings.maxPartices&&(this._firstRetiredElement=0)}},t.addNewParticlesToVertexBuffer=function(){},t.addParticleArray=function(t,e){var i=this._firstFreeElement+1;if((i=i>=this.settings.maxPartices?0:i)!==this._firstRetiredElement){for(var a=P.Create(this.settings,t,e,this._currentTime),r=this._firstFreeElement*this._floatCountPerVertex*4,n=0;n<4;n++){for(var s=0,o=0,s=0,o=4;s<3;s++)this._vertices[r+n*this._floatCountPerVertex+o+s]=a.position[s];for(s=0,o=7;s<3;s++)this._vertices[r+n*this._floatCountPerVertex+o+s]=a.velocity[s];for(s=0,o=10;s<4;s++)this._vertices[r+n*this._floatCountPerVertex+o+s]=a.startColor[s];for(s=0,o=14;s<4;s++)this._vertices[r+n*this._floatCountPerVertex+o+s]=a.endColor[s];for(s=0,o=18;s<3;s++)this._vertices[r+n*this._floatCountPerVertex+o+s]=a.sizeRotation[s];for(s=0,o=21;s<2;s++)this._vertices[r+n*this._floatCountPerVertex+o+s]=a.radius[s];for(s=0,o=23;s<4;s++)this._vertices[r+n*this._floatCountPerVertex+o+s]=a.radian[s];this._vertices[r+n*this._floatCountPerVertex+27]=a.durationAddScale,this._vertices[r+n*this._floatCountPerVertex+28]=a.time}this._firstFreeElement=i}},e}(),N=function(){function e(t){this._ready=!1,this.textureList=[],this.particleList=[],this.pX=0,this.pY=0,this.activeParticles=[],this.deadParticles=[],this.iList=[],this._maxNumParticles=0,this.textureWidth=NaN,this.dTextureWidth=NaN,this.colorChange=!0,this.step=1/60,this.canvasShader=new T,e.__super.call(this),this.settings=t,this._maxNumParticles=t.maxPartices,this.texture=new p,this.texture.on("loaded",this,this._textureLoaded),this.texture.load(t.textureName)}s(e,"laya.particle.ParticleTemplateCanvas",E);var t=e.prototype;return t._textureLoaded=function(t){this.setTexture(this.texture),this._ready=!0},t.clear=function(t){void 0===t&&(t=!0),this.deadParticles.length=0,this.activeParticles.length=0,this.textureList.length=0},t.setTexture=function(t){this.texture=t,this.textureWidth=t.width,this.dTextureWidth=1/this.textureWidth,this.pX=.5*-t.width,this.pY=.5*-t.height,this.textureList=e.changeTexture(t,this.textureList),this.particleList.length=0,this.deadParticles.length=0,this.activeParticles.length=0},t._createAParticleData=function(t,e){this.canvasShader.u_EndVelocity=this.settings.endVelocity,this.canvasShader.u_Gravity=this.settings.gravity,this.canvasShader.u_Duration=this.settings.duration,t=P.Create(this.settings,t,e,0),this.canvasShader.a_Position=t.position,this.canvasShader.a_Velocity=t.velocity,this.canvasShader.a_StartColor=t.startColor,this.canvasShader.a_EndColor=t.endColor,this.canvasShader.a_SizeRotation=t.sizeRotation,this.canvasShader.a_Radius=t.radius,this.canvasShader.a_Radian=t.radian,this.canvasShader.a_AgeAddScale=t.durationAddScale,this.canvasShader.oSize=this.textureWidth;for(var e=new w,i=0,a=this.settings.duration/(1+t.durationAddScale),r=[],i=0;i<a;i+=this.step)r.push(this.canvasShader.getData(i));return e.id=this.particleList.length,this.particleList.push(e),e.setCmds(r),e},t.addParticleArray=function(t,e){var i;this._ready&&(this.particleList.length<this._maxNumParticles?(i=this._createAParticleData(t,e),this.iList[i.id]=0,this.activeParticles.push(i)):0<this.deadParticles.length&&(i=this.deadParticles.pop(),this.iList[i.id]=0,this.activeParticles.push(i)))},t.advanceTime=function(t){if(void 0===t&&(t=1),this._ready)for(var e,i=this.activeParticles,a=this.deadParticles,r=0,t=i.length,n=0,s=this.iList,r=t-1;-1<r;r--)(n=s[(e=i[r]).id])>=e.maxIndex?(n=0,i.splice(r,1),a.push(e)):n+=1,s[e.id]=n},t.render=function(t,e,i){this._ready&&(this.activeParticles.length<1||this.textureList.length<2||(this.settings.disableColor?this.noColorRender(t,e,i):this.canvasRender(t,e,i)))},t.noColorRender=function(t,e,i){var a,r,n,s,o=this.activeParticles,l=0,h=o.length,c=this.pX,u=this.pY,d=2*-c,m=2*-u,_=(this.textureList,this.iList);for(t.translate(e,i),s=t.ctx.globalAlpha,l=0;l<h;l++)n=_[(a=o[l]).id],(a=a.cmds[n])&&((r=a[1])<=.01||(t.setAlpha(s*r),t.drawTextureWithTransform(this.texture,c,u,d,m,a[2],1)));t.setAlpha(s),t.translate(-e,-i)},t.canvasRender=function(t,e,i){var a,r,n,s,o=this.activeParticles,l=0,h=o.length,c=this.pX,u=this.pY,d=2*-c,m=2*-u,_=this.textureList,p=this.iList;for(t.translate(e,i),n=t.ctx.globalAlpha,s=t.ctx.globalCompositeOperation,t.blendMode("lighter"),l=0;l<h;l++)r=p[(a=o[l]).id],(a=a.cmds[r])&&(a[1]<=.01||(t.save(),t.transformByMatrix(a[2]),.01<a[3]&&(t.setAlpha(n*a[3]),t.drawTexture(_[0],c,u,d,m)),.01<a[4]&&(t.setAlpha(n*a[4]),t.drawTexture(_[1],c,u,d,m)),.01<a[5]&&(t.setAlpha(n*a[5]),t.drawTexture(_[2],c,u,d,m)),t.restore()));t.setAlpha(n),t.translate(-e,-i),t.blendMode(s)},e.changeTexture=function(t,e,i){return(e=e||[]).length=0,i&&i.disableColor?e.push(t,t,t):f.copyArray(e,b.getRGBPic(t)),e},e}(),L=function(i){function a(t){this._vertexBuffer2D=null,this._indexBuffer2D=null,this.x=0,this.y=0,this._blendFn=null,this._startTime=0,this.sv=new M,a.__super.call(this,t);var e=this;n.loader.load(this.settings.textureName,l.create(null,function(t){t.bitmap.enableMerageInAtlas=!1,e.texture=t})),this.sv.u_Duration=this.settings.duration,this.sv.u_Gravity=this.settings.gravity,this.sv.u_EndVelocity=this.settings.endVelocity,this._blendFn=o.fns[t.blendState],this.initialize(),this._vertexBuffer=this._vertexBuffer2D=x.create(-1,35048),this._indexBuffer=this._indexBuffer2D=h.create(35044),this.loadContent()}s(a,"laya.particle.ParticleTemplate2D",i);var t=a.prototype;return n.imps(t,{"laya.webgl.submit.ISubmit":!0}),t.getRenderType=function(){return-111},t.releaseRender=function(){},t.addParticleArray=function(t,e){t[0]+=this.x,t[1]+=this.y,i.prototype.addParticleArray.call(this,t,e)},t.loadContent=function(){for(var t=new Uint16Array(6*this.settings.maxPartices),e=0;e<this.settings.maxPartices;e++)t[6*e+0]=4*e+0,t[6*e+1]=4*e+1,t[6*e+2]=4*e+2,t[6*e+3]=4*e+0,t[6*e+4]=4*e+2,t[6*e+5]=4*e+3;this._indexBuffer2D.clear(),this._indexBuffer2D.append(t),this._indexBuffer2D.upload()},t.addNewParticlesToVertexBuffer=function(){this._vertexBuffer2D.clear(),this._vertexBuffer2D.append(this._vertices);var t=0;this._firstNewElement<this._firstFreeElement?(t=4*this._firstNewElement*this._floatCountPerVertex*4,this._vertexBuffer2D.subUpload(t,t,t+4*(this._firstFreeElement-this._firstNewElement)*this._floatCountPerVertex*4)):(t=4*this._firstNewElement*this._floatCountPerVertex*4,this._vertexBuffer2D.subUpload(t,t,t+4*(this.settings.maxPartices-this._firstNewElement)*this._floatCountPerVertex*4),0<this._firstFreeElement&&(this._vertexBuffer2D.setNeedUpload(),this._vertexBuffer2D.subUpload(0,0,4*this._firstFreeElement*this._floatCountPerVertex*4))),this._firstNewElement=this._firstFreeElement},t.renderSubmit=function(){return this.texture&&this.texture.loaded&&(this.update(n.timer.delta),this.sv.u_CurrentTime=this._currentTime,this._firstNewElement!=this._firstFreeElement&&this.addNewParticlesToVertexBuffer(),this.blend(),this._firstActiveElement!=this._firstFreeElement&&(y.mainContext,this._vertexBuffer2D.bind(this._indexBuffer2D),this.sv.u_texture=this.texture.source,this.sv.upload(),this._firstActiveElement<this._firstFreeElement?y.mainContext.drawElements(4,6*(this._firstFreeElement-this._firstActiveElement),5123,6*this._firstActiveElement*2):(y.mainContext.drawElements(4,6*(this.settings.maxPartices-this._firstActiveElement),5123,6*this._firstActiveElement*2),0<this._firstFreeElement&&y.mainContext.drawElements(4,6*this._firstFreeElement,5123,0)),_.drawCall++),this._drawCounter++),1},t.blend=function(){var t;o.activeBlendFunction!==this._blendFn&&((t=y.mainContext).enable(3042),this._blendFn(t),o.activeBlendFunction=this._blendFn)},t.dispose=function(){this._vertexBuffer2D.dispose(),this._indexBuffer2D.dispose()},a.activeBlendType=-1,a}(C),M=(s(B,"laya.particle.shader.value.ParticleShaderValue",v),B.prototype.upload=function(){this.refresh(),B.pShader.upload(this)},t(B,["pShader",function(){return this.pShader=new I}]),B);function B(){this.a_CornerTextureCoordinate=[4,5126,!1,116,0],this.a_Position=[3,5126,!1,116,16],this.a_Velocity=[3,5126,!1,116,28],this.a_StartColor=[4,5126,!1,116,40],this.a_EndColor=[4,5126,!1,116,56],this.a_SizeRotation=[3,5126,!1,116,72],this.a_Radius=[2,5126,!1,116,84],this.a_Radian=[4,5126,!1,116,92],this.a_AgeAddScale=[1,5126,!1,116,108],this.a_Time=[1,5126,!1,116,112],this.u_CurrentTime=NaN,this.u_Duration=NaN,this.u_Gravity=null,this.u_EndVelocity=NaN,this.u_texture=null,B.__super.call(this,0,0)}!function(e){function i(t){this._matrix4=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this._particleTemplate=null,this._canvasTemplate=null,this._emitter=null,this.autoPlay=!0,i.__super.call(this),t&&this.setParticleSetting(t)}s(i,"laya.particle.Particle2D",e);var t=i.prototype;t.load=function(t){n.loader.load(t,l.create(this,this.setParticleSetting),null,"json")},t.setParticleSetting=function(e){var i=this;if(!e)return this.stop();if(S.checkSetting(e),r.ConchParticleTemplate2D&&!m.isWebGL||(this.customRenderEnable=!0),m.isWebGL)this._particleTemplate=new L(e),this.graphics._saveToCmd(m.context._drawParticle,[this._particleTemplate]);else{if(m.isConchApp&&r.ConchParticleTemplate2D){this._particleTemplate=new ConchParticleTemplate2D;var a=this;return n.loader.load(e.textureName,l.create(null,function(t){a._particleTemplate.texture=t,a._particleTemplate.settings=e,m.isConchNode?a.graphics.drawParticle(a._particleTemplate):a.graphics._saveToCmd(m.context._drawParticle,[i._particleTemplate])})),this._emitter={start:function(){}},this.play=this._particleTemplate.play.bind(this._particleTemplate),this.stop=this._particleTemplate.stop.bind(this._particleTemplate),void(this.autoPlay&&this.play())}this._particleTemplate=this._canvasTemplate=new N(e)}this._emitter?this._emitter.template=this._particleTemplate:this._emitter=new D(this._particleTemplate),this.autoPlay&&(this.emitter.start(),this.play())},t.play=function(){this.timer.frameLoop(1,this,this._loop)},t.stop=function(){this.timer.clear(this,this._loop)},t._loop=function(){this.advanceTime(1/60)},t.advanceTime=function(t){void 0===t&&(t=1),this._canvasTemplate&&this._canvasTemplate.advanceTime(t),this._emitter&&this._emitter.advanceTime(t)},t.customRender=function(t,e,i){m.isWebGL&&(this._matrix4[0]=t.ctx._curMat.a,this._matrix4[1]=t.ctx._curMat.b,this._matrix4[4]=t.ctx._curMat.c,this._matrix4[5]=t.ctx._curMat.d,this._matrix4[12]=t.ctx._curMat.tx,this._matrix4[13]=t.ctx._curMat.ty,this._particleTemplate.sv.u_mmat=this._matrix4),this._canvasTemplate&&this._canvasTemplate.render(t,e,i)},t.destroy=function(t){void 0===t&&(t=!0),this._particleTemplate instanceof laya.particle.ParticleTemplate2D&&this._particleTemplate.dispose(),e.prototype.destroy.call(this,t)},a(0,t,"url",null,function(t){this.load(t)}),a(0,t,"emitter",function(){return this._emitter})}(i);var I=(s(H,"laya.particle.shader.ParticleShader",e),t(H,["vs",function(){return this.vs="attribute vec4 a_CornerTextureCoordinate;\nattribute vec3 a_Position;\nattribute vec3 a_Velocity;\nattribute vec4 a_StartColor;\nattribute vec4 a_EndColor;\nattribute vec3 a_SizeRotation;\nattribute vec2 a_Radius;\nattribute vec4 a_Radian;\nattribute float a_AgeAddScale;\nattribute float a_Time;\n\nvarying vec4 v_Color;\nvarying vec2 v_TextureCoordinate;\n\nuniform float u_CurrentTime;\nuniform float u_Duration;\nuniform float u_EndVelocity;\nuniform vec3 u_Gravity;\n\n#ifdef PARTICLE3D\n uniform mat4 u_WorldMat;\n uniform mat4 u_View;\n uniform mat4 u_Projection;\n uniform vec2 u_ViewportScale;\n#else\n uniform vec2 size;\n uniform mat4 mmat;\n uniform mat4 u_mmat;\n#endif\n\nvec4 ComputeParticlePosition(in vec3 position, in vec3 velocity,in float age,in float normalizedAge)\n{\n\n float startVelocity = length(velocity);//起始标量速度\n float endVelocity = startVelocity * u_EndVelocity;//结束标量速度\n\n float velocityIntegral = startVelocity * normalizedAge +(endVelocity - startVelocity) * normalizedAge *normalizedAge/2.0;//计算当前速度的标量单位空间vt=v0*t+(1/2)*a*(t^2)\n \n vec3 addPosition = normalize(velocity) * velocityIntegral * u_Duration;//计算受自身速度影响的位置,转换标量到矢量 \n addPosition += u_Gravity * age * normalizedAge;//计算受重力影响的位置\n \n float radius=mix(a_Radius.x, a_Radius.y, normalizedAge); //计算粒子受半径和角度影响(无需计算角度和半径时,可用宏定义优化屏蔽此计算)\n float radianHorizontal =mix(a_Radian.x,a_Radian.z,normalizedAge);\n float radianVertical =mix(a_Radian.y,a_Radian.w,normalizedAge);\n \n float r =cos(radianVertical)* radius;\n addPosition.y += sin(radianVertical) * radius;\n\t\n addPosition.x += cos(radianHorizontal) *r;\n addPosition.z += sin(radianHorizontal) *r;\n \n #ifdef PARTICLE3D\n position+=addPosition;\n return u_Projection*u_View*u_WorldMat*(vec4(position, 1.0));\n #else\n addPosition.y=-addPosition.y;//2D粒子位置更新需要取负2D粒子坐标系Y轴正向朝上\n position+=addPosition;\n return vec4(position,1.0);\n #endif\n}\n\nfloat ComputeParticleSize(in float startSize,in float endSize, in float normalizedAge)\n{ \n float size = mix(startSize, endSize, normalizedAge);\n \n\t#ifdef PARTICLE3D\n //Project the size into screen coordinates.\n return size * u_Projection[1][1];\n\t#else\n\t return size;\n\t#endif\n}\n\nmat2 ComputeParticleRotation(in float rot,in float age)\n{ \n float rotation =rot * age;\n //计算2x2旋转矩阵.\n float c = cos(rotation);\n float s = sin(rotation);\n return mat2(c, -s, s, c);\n}\n\nvec4 ComputeParticleColor(in vec4 startColor,in vec4 endColor,in float normalizedAge)\n{\n\tvec4 color=mix(startColor,endColor,normalizedAge);\n //硬编码设置,使粒子淡入很快,淡出很慢,6.7的缩放因子把置归一在0到1之间可以谷歌x*(1-x)*(1-x)*6.7的制图表\n color.a *= normalizedAge * (1.0-normalizedAge) * (1.0-normalizedAge) * 6.7;\n \n return color;\n}\n\nvoid main()\n{\n float age = u_CurrentTime - a_Time;\n age *= 1.0 + a_AgeAddScale;\n float normalizedAge = clamp(age / u_Duration,0.0,1.0);\n gl_Position = ComputeParticlePosition(a_Position, a_Velocity, age, normalizedAge);//计算粒子位置\n float pSize = ComputeParticleSize(a_SizeRotation.x,a_SizeRotation.y, normalizedAge);\n mat2 rotation = ComputeParticleRotation(a_SizeRotation.z, age);\n\t\n #ifdef PARTICLE3D\n\tgl_Position.xy += (rotation*a_CornerTextureCoordinate.xy) * pSize * u_ViewportScale;\n #else\n mat4 mat=u_mmat*mmat;\n gl_Position=vec4((mat*gl_Position).xy,0.0,1.0);\n\tgl_Position.xy += (rotation*a_CornerTextureCoordinate.xy) * pSize*vec2(mat[0][0],mat[1][1]);\n gl_Position=vec4((gl_Position.x/size.x-0.5)*2.0,(0.5-gl_Position.y/size.y)*2.0,0.0,1.0);\n #endif\n \n v_Color = ComputeParticleColor(a_StartColor,a_EndColor, normalizedAge);\n v_TextureCoordinate =a_CornerTextureCoordinate.zw;\n}\n\n"},"ps",function(){return this.ps="#ifdef FSHIGHPRECISION\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nvarying vec4 v_Color;\nvarying vec2 v_TextureCoordinate;\nuniform sampler2D u_texture;\n\nvoid main()\n{\t\n\tgl_FragColor=texture2D(u_texture,v_TextureCoordinate)*v_Color;\n\tgl_FragColor.xyz *= v_Color.w;\n}"}]),H);function H(){H.__super.call(this,H.vs,H.ps,"ParticleShader")}}(window,(document,Laya)),"function"==typeof define&&define.amd&&define("laya.core",["require","exports"],function(t,e){"use strict";for(var i in Object.defineProperty(e,"__esModule",{value:!0}),Laya){var a=Laya[i];a&&a.__isclass&&(e[i]=a)}});