Skip to content

ijiwon0/explosion

Repository files navigation

Explosion Composable

Particle.updateProgress()

fun updateProgress(progress: Float) {
    if (progress < visibilityThresholdLow || progress > (1 - visibilityThresholdHigh)) {
        alpha = 0F

        return
    }

    val trajectoryProgress = (progress - visibilityThresholdLow).mapInRange(
        inMin = 0F,
        inMax = 1F - visibilityThresholdHigh - visibilityThresholdLow,
        outMin = 0F,
        outMax = 1F
    )

    alpha = if (trajectoryProgress < 0.7F) {
        1F
    } else {
        (trajectoryProgress - 0.7F).mapInRange(
            inMin = 0F,
            inMax = 0.3F,
            outMin = 1F,
            outMax = 0F
        )
    }

    radius = minRadius + (maxRadius - minRadius) * trajectoryProgress

    val time = trajectoryProgress.mapInRange(0F, 1F, 0F, 1.4F)

    val verticalDisplacement = (time * velocity + 0.5 * acceleration * time.toDouble().pow(2)).toFloat()

    x = startXPosition + initialXDisplacement + maxHorizontalDisplacement * trajectoryProgress
    y = startYPosition + initialYDisplacement - verticalDisplacement
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages