package Ġnl . d ion se gi jn . kon f et ti Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġnl . d ion se gi jn . kon f et ti . emitter s . Bur st Emitter Ċ import Ġnl . d ion se gi jn . kon f et ti . emitter s . Emitter Ċ import Ġnl . d ion se gi jn . kon f et ti . emitter s . Stream Emitter Ċ import Ġnl . d ion se gi jn . kon f et ti . models . Conf et ti Config Ċ import Ġnl . d ion se gi jn . kon f et ti . models . Location Module Ċ import Ġnl . d ion se gi jn . kon f et ti . models . Shape Ċ import Ġnl . d ion se gi jn . kon f et ti . models . Size Ċ import Ġnl . d ion se gi jn . kon f et ti . modules . Velocity Module Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġd ion se gi jn Ġon Ġ 3 / 2 6 / 1 7 . Ċ Ġ*/ Ċ class ĠParticle System ( val Ġkon f et ti View : ĠKon f et ti View ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġrandom Ġ= ĠRandom () ĊĊĠĠĠ Ġ/** ĠModules Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġlocation Ġ= ĠLocation Module ( random ) ĊĠĠĠ Ġprivate Ġvar Ġvelocity Ġ= ĠVe locity Module ( random ) ĊĊĠĠĠ Ġ/** ĠDefault Ġvalues Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġcolors Ġ= Ġint ArrayOf ( Color . RED ) ĊĠĠĠ Ġprivate Ġvar Ġsizes Ġ= ĠarrayOf ( Size ( 1 6 )) ĊĠĠĠ Ġprivate Ġvar Ġshapes Ġ= ĠarrayOf ( Shape . RECT ) ĊĠĠĠ Ġprivate Ġvar Ġconf et ti Config Ġ= ĠConf et ti Config () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠImplementation Ġof Ġ[ Bur st Emitter ] Ġor Ġ[ Stream Emitter ] ĊĠĠĠĠ Ġ* ĠRender Ġfunction Ġof Ġthe Ġemitter Ġis Ġdirectly Ġaccessed Ġfrom Ġ[ Kon f et ti View ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġemitter : ĠEmit ter ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġposition Ġto Ġemit Ġparticles Ġfrom ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Position ( x : ĠFloat , Ġy : ĠFloat ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation . set X ( x ) ĊĠĠĠĠĠĠĠ Ġlocation . set Y ( y ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġposition Ġrange Ġto Ġemit Ġparticles Ġfrom ĊĠĠĠĠ Ġ* ĠA Ġrandom Ġposition Ġon Ġthe Ġx - axis Ġbetween Ġ[ min X ] Ġand Ġ[ max X ] Ġand Ġy - axis Ġbetween Ġ[ min Y ] Ġand Ġ[ max Y ] ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġpicked Ġfor Ġeach Ġconf et ti . ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ max X ] Ġleave Ġthis Ġnull Ġto Ġonly Ġemit Ġfrom Ġ[ min X ] ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ max Y ] Ġleave Ġthis Ġnull Ġto Ġonly Ġemit Ġfrom Ġ[ min Y ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Position ( min X : ĠFloat , Ġmax X : ĠFloat ? Ġ= Ġnull , Ġmin Y : ĠFloat , Ġmax Y : ĠFloat ? Ġ= Ġnull ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation . between X ( min X , Ġmax X ) ĊĠĠĠĠĠĠĠ Ġlocation . between Y ( min Y , Ġmax Y ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOne Ġof Ġthe Ġcolors Ġwill Ġbe Ġrandomly Ġpicked Ġwhen Ġconf et ti Ġis Ġgenerated ĊĠĠĠĠ Ġ* ĠDefault Ġcolor Ġis ĠColor . RED ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Colors ( var arg Ġcolors : ĠInt ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . colors Ġ= Ġcolors ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġone Ġor Ġmore Ġdifferent Ġsizes Ġby Ġdefining Ġa Ġ[ Size ] Ġin Ġdip Ġand Ġoptionally Ġits Ġmass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Sizes ( var arg Ġpossible Sizes : ĠSize ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sizes Ġ= Ġpossible Sizes . filter Is Instance < Size >(). to Typed Array () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConfigure Ġone Ġor Ġmore Ġshapes Ġpredefined Ġin Ġ[ Shape ] ĊĠĠĠĠ Ġ* ĠDefault Ġshape Ġis Ġ[ Shape . RECT ] Ġrectangle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Shapes ( var arg Ġshapes : ĠShape ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . shapes Ġ= Ġshapes . filter Is Instance < Shape >(). to Typed Array () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġdirection Ġyou Ġwant Ġto Ġhave Ġthe Ġparticles Ġshoot Ġto ĊĠĠĠĠ Ġ* Ġ[ direction ] Ġdirection Ġin Ġdegrees Ġr anging Ġfrom Ġ 0 Ġ- Ġ 3 6 0 ĊĠĠĠĠ Ġ* Ġdefault Ġdirection Ġis Ġ 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Direction ( direction : ĠDouble ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġvelocity . min Angle Ġ= ĠMath . to Radians ( direction ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġdirection Ġyou Ġwant Ġto Ġhave Ġthe Ġparticles Ġshoot Ġto ĊĠĠĠĠ Ġ* Ġ[ min Direction ] Ġdirection Ġin Ġdegrees ĊĠĠĠĠ Ġ* Ġ[ max Direction ] Ġdirection Ġin Ġdegrees ĊĠĠĠĠ Ġ* ĠDefault Ġmin Direction Ġis Ġ 0 Ġand Ġmax Direction Ġis Ġby Ġdefault Ġnot Ġset ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Direction ( min Direction : ĠDouble , Ġmax Direction : ĠDouble ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġvelocity . min Angle Ġ= ĠMath . to Radians ( min Direction ) ĊĠĠĠĠĠĠĠ Ġvelocity . max Angle Ġ= ĠMath . to Radians ( max Direction ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġspeed Ġof Ġthe Ġparticle ĊĠĠĠĠ Ġ* ĠIf Ġvalue Ġis Ġnegative Ġit Ġwill Ġbe Ġautomatically Ġset Ġto Ġ 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Speed ( speed : ĠFloat ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġvelocity . min Speed Ġ= Ġspeed ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġspeed Ġrange Ġof Ġthe Ġparticle ĊĠĠĠĠ Ġ* ĠIf Ġone Ġof Ġthe Ġvalues Ġis Ġnegative Ġit Ġwill Ġbe Ġautomatically Ġset Ġto Ġ 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Speed ( min Speed : ĠFloat , Ġmax Speed : ĠFloat ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġvelocity . min Speed Ġ= Ġmin Speed ĊĠĠĠĠĠĠĠ Ġvelocity . max Speed Ġ= Ġmax Speed ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġif Ġthe Ġconf et ti Ġshould Ġfade Ġout Ġwhen Ġits ĊĠĠĠĠ Ġ* Ġtime Ġto Ġlive Ġis Ġexpired ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Fade Out Enabled ( fade : ĠBoolean ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġconf et ti Config . fadeOut Ġ= Ġfade ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTime Ġto Ġlive Ġin Ġmilliseconds Ġthe Ġconf et ti Ġwill Ġeither Ġfade Ġout Ġor Ġdis s ape ar ĊĠĠĠĠ Ġ* ĠThis Ġtime Ġto Ġlive Ġis Ġset Ġfor Ġeach Ġconf et ti Ġindividually ĊĠĠĠĠ Ġ* ĠDefault Ġis Ġ 2 0 0 0 ms , Ġhow Ġhigher Ġthe Ġtime Ġto Ġlive Ġhow Ġmore Ġit Ġcould Ġimpact Ġthe Ġperformance ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset TimeTo Live ( time In Ms : ĠLong ): ĠParticle System Ġ{ ĊĠĠĠĠĠĠĠ Ġconf et ti Config . time To Live Ġ= Ġtime In Ms ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBur st Ġwill Ġcreate Ġand Ġshoot Ġall Ġconf et ti Ġat Ġonce ĊĠĠĠĠ Ġ* ĠCalling Ġthis Ġfunction Ġwill Ġstart Ġthe Ġsystem Ġrendering Ġthe Ġconf et ti ĊĠĠĠĠ Ġ* Ġ[ amount ] Ġ- Ġthe Ġamount Ġof Ġparticles Ġcreated Ġat Ġburst ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġburst ( amount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemitter Ġ= ĠBur st Emitter ( location , Ġvelocity , Ġsizes , Ġshapes , Ġcolors , Ġconf et ti Config ). burst ( amount ) ĊĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEmit Ġa Ġcertain Ġamount Ġof Ġparticles Ġper Ġsecond ĊĠĠĠĠ Ġ* Ġcalling Ġthis Ġfunction Ġwill Ġstart Ġthe Ġsystem Ġrendering Ġthe Ġconf et ti ĊĠĠĠĠ Ġ* Ġ[ particles PerSecond ] Ġamount Ġof Ġparticles Ġcreated Ġper Ġsecond ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstream ( particles PerSecond : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemitter Ġ= ĠStream Emitter ( location , Ġvelocity , Ġsizes , Ġshapes , Ġcolors , Ġconf et ti Config ). emit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles PerSecond Ġ= Ġparticles PerSecond ) ĊĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEmit Ġa Ġcertain Ġamount Ġof Ġparticles Ġper Ġsecond ĊĠĠĠĠ Ġ* Ġcalling Ġthis Ġfunction Ġwill Ġstart Ġthe Ġsystem Ġrendering Ġthe Ġconf et ti ĊĠĠĠĠ Ġ* Ġ[ particles PerSecond ] Ġamount Ġof Ġparticles Ġcreated Ġper Ġsecond ĊĠĠĠĠ Ġ* Ġ[ emit ting Time ] Ġmax Ġamount Ġof Ġtime Ġto Ġemit Ġin Ġmilliseconds ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstream ( particles PerSecond : ĠInt , Ġemit ting Time : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemitter Ġ= ĠStream Emitter ( location , Ġvelocity , Ġsizes , Ġshapes , Ġcolors , Ġconf et ti Config ). emit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles PerSecond Ġ= Ġparticles PerSecond , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ting Time Ġ= Ġemit ting Time ) ĊĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEmit Ġa Ġcertain Ġamount Ġof Ġparticles Ġper Ġsecond ĊĠĠĠĠ Ġ* Ġcalling Ġthis Ġfunction Ġwill Ġstart Ġthe Ġsystem Ġrendering Ġthe Ġconf et ti ĊĠĠĠĠ Ġ* Ġ[ particles PerSecond ] Ġamount Ġof Ġparticles Ġcreated Ġper Ġsecond ĊĠĠĠĠ Ġ* Ġ[ max Particles ] Ġmax Ġamount Ġof Ġparticles Ġto Ġemit ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstream ( particles PerSecond : ĠInt , Ġmax Particles : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemitter Ġ= ĠStream Emitter ( location , Ġvelocity , Ġsizes , Ġshapes , Ġcolors , Ġconf et ti Config ). emit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles PerSecond Ġ= Ġparticles PerSecond , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Particles Ġ= Ġmax Particles ) ĊĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEmit Ġa Ġcertain Ġamount Ġof Ġparticles Ġper Ġsecond ĊĠĠĠĠ Ġ* Ġcalling Ġthis Ġfunction Ġwill Ġstart Ġthe Ġsystem Ġrendering Ġthe Ġconf et ti ĊĠĠĠĠ Ġ* Ġ[ particles PerSecond ] Ġamount Ġof Ġparticles Ġcreated Ġper Ġsecond ĊĠĠĠĠ Ġ* Ġ[ emit ting Time ] Ġmax Ġamount Ġof Ġtime Ġto Ġemit Ġin Ġmilliseconds ĊĠĠĠĠ Ġ* Ġ[ max Particles ] Ġmax Ġamount Ġof Ġparticles Ġto Ġemit ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstream ( particles PerSecond : ĠInt , Ġemit ting Time : ĠLong , Ġmax Particles : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemitter Ġ= ĠStream Emitter ( location , Ġvelocity , Ġsizes , Ġshapes , Ġcolors , Ġconf et ti Config ). emit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticles PerSecond Ġ= Ġparticles PerSecond , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ting Time Ġ= Ġemit ting Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Particles Ġ= Ġmax Particles ) ĊĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdone Emit ting (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġemitter . is Done Emit ting () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġthe Ġsystem Ġto ĠKon f et ti View . ĠKon f et ti View Ġwill Ġinitiate Ġthe Ġrendering ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġkon f et ti View . start ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġactive Particles (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġemitter . getActive Particles () ĊĠĠĠ Ġ} Ċ Ċ } Ċ