class Droplet : ActionRole { val velocity = Vector2() override fun begin() { super.begin() actor.position.y -= 20 velocity.x = Rand.plusMinus( 1.0 ) velocity.y = Rand.between( 1.0, 2.0 ) } override fun tick() { super.tick() velocity.y -= 0.05 actor.position += velocity } override fun createAction() = Fade( actor.color, 3, 0 ).then( Kill( actor ) ) } class BigDroplet : ActionRole { val velocity = Vector2() override fun begin() { super.begin() velocity.x = Rand.plusMinus( 2.0 ) velocity.y = Rand.plusMinus( 4.0 ) } override fun tick() { super.tick() velocity.y -= 0.05 actor.position += velocity } override fun createAction() = Fade( actor.color, 4, 0 ).then( Kill( actor ) ) }