package Ġcom . loading . view . core . systems Ċ Ċ import Ġcom . loading . view . core . Dot Ċ import Ġcom . loading . view . core . util . Vector Float Ċ import Ġkotlin . random . Random Ċ Ċ class ĠD ots System ( ĊĠĠĠ Ġprivate Ġval Ġwidth : ĠFloat , ĊĠĠĠ Ġprivate Ġval Ġheight : ĠFloat , ĊĠĠĠ Ġwidth Dp : ĠFloat , ĊĠĠĠ Ġheight Dp : ĠFloat , ĊĠĠĠ Ġdensity : ĠInt , ĊĠĠĠ Ġval Ġmin Radius : ĠFloat , ĊĠĠĠ Ġval Ġmax Radius : ĠFloat , ĊĠĠĠ Ġprivate Ġval Ġmin Speed : ĠFloat , ĊĠĠĠ Ġprivate Ġval Ġmax Speed : ĠFloat Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcount Ġ= Ġ( width Dp Ġ* Ġheight Dp Ġ/ Ġdensity ). toInt () ĊĠĠĠ Ġprivate Ġval Ġparticles : ĠMutable List < Dot > Ġ= ĠArrayList ( count ) ĊĊĠĠĠ Ġfun Ġget Particles (): ĠList < Dot > Ġ= Ġparticles ĊĊĠĠĠ Ġfun Ġupdate ( delta : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( particles . size Ġ!= Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill Particles () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġparticles . forEach Ġ{ Ġparticle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticle . position . x Ġ+= Ġparticle . speed . x Ġ* Ġdelta ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticle . position . y Ġ+= Ġparticle . speed . y Ġ* Ġdelta ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Bounds () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrotate () Ġ= Ġparticles . forEach Ġ{ Ġparticle Ġ-> ĊĠĠĠĠĠĠĠ Ġparticle . speed . x Ġ= ĠVector Float . random 3 6 0 ( min Speed , Ġmax Speed ) ĊĠĠĠĠĠĠĠ Ġparticle . speed . y Ġ= ĠVector Float . random 3 6 0 ( min Speed , Ġmax Speed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfill Particles () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i : ĠInt Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdot Ġ= ĠDot ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVector Float . random ( min Radius , Ġmax Radius ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVector Float ( 0 f , Ġ 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVector Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVector Float . random 3 6 0 ( min Speed , Ġmax Speed ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVector Float . random 3 6 0 ( min Speed , Ġmax Speed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticles Ġ+= Ġdot ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( particle Ġin Ġparticles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticle . position . x Ġ= ĠRandom . nextInt ( 0 , Ġwidth . toInt ()). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticle . position . y Ġ= ĠRandom . nextInt ( 0 , Ġheight . toInt ()). toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Bounds () Ġ= Ġparticles . forEach Ġ{ Ġparticle Ġ-> ĊĠĠĠĠĠĠĠ Ġwith ( particle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . x Ġ< Ġ 0 f Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . x Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed . x Ġ= Ġ- speed . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . x Ġ> Ġwidth Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . x Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed . x Ġ= Ġ- speed . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . y Ġ< Ġ 0 f Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . y Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed . y Ġ= Ġ- speed . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . y Ġ> Ġheight Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . y Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed . y Ġ= Ġ- speed . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }