Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 878e9509 authored by Yein Jo's avatar Yein Jo
Browse files

Have TurbulenceNoiseController respect config noise moves.

TurbulenceNoiseController was assigning its own noise move values. With
the recent config updates, it now should respect the config values.
also the class variable random is now a local to the config creation
function in MediaControlPanel.

Bug: 325079325
Test: MediaControlPanelTest, TurbulenceNoiseControllerTest
Flag: NA
Change-Id: I2a3415bfa2913a78d4d96d33f21e063a60eb78b8
parent a38c05d6
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@ package com.android.systemui.surfaceeffects.turbulencenoise

import android.view.View
import androidx.annotation.VisibleForTesting
import java.util.Random

/** Plays [TurbulenceNoiseView] in ease-in, main (no easing), and ease-out order. */
class TurbulenceNoiseController(private val turbulenceNoiseView: TurbulenceNoiseView) {
@@ -37,8 +36,6 @@ class TurbulenceNoiseController(private val turbulenceNoiseView: TurbulenceNoise
        }
    }

    private val random = Random()

    /** Current state of the animation. */
    @VisibleForTesting
    var state: AnimationState = AnimationState.NOT_PLAYING
@@ -95,12 +92,7 @@ class TurbulenceNoiseController(private val turbulenceNoiseView: TurbulenceNoise
        }
        state = AnimationState.EASE_IN

        // Add offset to avoid repetitive noise.
        turbulenceNoiseView.playEaseIn(
            offsetX = random.nextFloat(),
            offsetY = random.nextFloat(),
            this::playMainAnimation
        )
        turbulenceNoiseView.playEaseIn(this::playMainAnimation)
    }

    private fun playMainAnimation() {
+3 −3
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ class TurbulenceNoiseView(context: Context?, attrs: AttributeSet?) : View(contex

    /** Plays the turbulence noise with linear ease-in. */
    @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
    fun playEaseIn(offsetX: Float = 0f, offsetY: Float = 0f, onAnimationEnd: Runnable? = null) {
    fun playEaseIn(onAnimationEnd: Runnable? = null) {
        if (noiseConfig == null) {
            return
        }
@@ -129,8 +129,8 @@ class TurbulenceNoiseView(context: Context?, attrs: AttributeSet?) : View(contex
            val progress = updateListener.animatedValue as Float

            shader.setNoiseMove(
                offsetX + initialX + timeInSec * config.noiseMoveSpeedX,
                offsetY + initialY + timeInSec * config.noiseMoveSpeedY,
                initialX + timeInSec * config.noiseMoveSpeedX,
                initialY + timeInSec * config.noiseMoveSpeedY,
                initialZ + timeInSec * config.noiseMoveSpeedZ
            )

+4 −4
Original line number Diff line number Diff line
@@ -260,7 +260,6 @@ public class MediaControlPanel {
    private TurbulenceNoiseController mTurbulenceNoiseController;
    private LoadingEffect mLoadingEffect;
    private final GlobalSettings mGlobalSettings;
    private final Random mRandom = new Random();
    private TurbulenceNoiseAnimationConfig mTurbulenceNoiseAnimationConfig;
    private boolean mWasPlaying = false;
    private boolean mButtonClicked = false;
@@ -1294,13 +1293,14 @@ public class MediaControlPanel {
                mMediaViewHolder.getTurbulenceNoiseView();
        int width = targetView.getWidth();
        int height = targetView.getHeight();
        Random random = new Random();

        return new TurbulenceNoiseAnimationConfig(
                /* gridCount= */ 2.14f,
                TurbulenceNoiseAnimationConfig.DEFAULT_LUMINOSITY_MULTIPLIER,
                /* noiseOffsetX= */ mRandom.nextFloat(),
                /* noiseOffsetY= */ mRandom.nextFloat(),
                /* noiseOffsetZ= */ mRandom.nextFloat(),
                /* noiseOffsetX= */ random.nextFloat(),
                /* noiseOffsetY= */ random.nextFloat(),
                /* noiseOffsetZ= */ random.nextFloat(),
                /* noiseMoveSpeedX= */ 0.42f,
                /* noiseMoveSpeedY= */ 0f,
                TurbulenceNoiseAnimationConfig.DEFAULT_NOISE_SPEED_Z,
+24 −0
Original line number Diff line number Diff line
@@ -166,4 +166,28 @@ class TurbulenceNoiseControllerTest : SysuiTestCase() {
            assertThat(config.color).isEqualTo(expectedColor)
        }
    }

    @Test
    fun play_initializesShader() {
        val expectedNoiseOffset = floatArrayOf(0.1f, 0.2f, 0.3f)
        val config =
            TurbulenceNoiseAnimationConfig(
                noiseOffsetX = expectedNoiseOffset[0],
                noiseOffsetY = expectedNoiseOffset[1],
                noiseOffsetZ = expectedNoiseOffset[2]
            )
        val turbulenceNoiseView = TurbulenceNoiseView(context, null)
        val turbulenceNoiseController = TurbulenceNoiseController(turbulenceNoiseView)

        fakeExecutor.execute {
            turbulenceNoiseController.play(SIMPLEX_NOISE, config)

            assertThat(turbulenceNoiseView.noiseConfig).isNotNull()
            val shader = turbulenceNoiseView.turbulenceNoiseShader!!
            assertThat(shader).isNotNull()
            assertThat(shader.noiseOffsetX).isEqualTo(expectedNoiseOffset[0])
            assertThat(shader.noiseOffsetY).isEqualTo(expectedNoiseOffset[1])
            assertThat(shader.noiseOffsetZ).isEqualTo(expectedNoiseOffset[2])
        }
    }
}