mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Remove scrollable animation workaround (#9690)
Reverts ba93060e59
Related https://android-review.googlesource.com/c/platform/frameworks/support/+/2239762
			
			
This commit is contained in:
		@@ -2,6 +2,7 @@ package eu.kanade.presentation.browse
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.material3.MaterialTheme
 | 
			
		||||
import androidx.compose.material3.Text
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
@@ -19,7 +20,6 @@ import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchState
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
 | 
			
		||||
import tachiyomi.domain.manga.model.Manga
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.material.Scaffold
 | 
			
		||||
import tachiyomi.presentation.core.components.material.padding
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package eu.kanade.presentation.browse
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.State
 | 
			
		||||
import eu.kanade.presentation.browse.components.GlobalSearchCardRow
 | 
			
		||||
@@ -14,7 +15,6 @@ import eu.kanade.tachiyomi.ui.browse.migration.search.MigrateSearchState
 | 
			
		||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.LocaleHelper
 | 
			
		||||
import tachiyomi.domain.manga.model.Manga
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.material.Scaffold
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package eu.kanade.presentation.browse.components
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.collectAsState
 | 
			
		||||
import androidx.compose.runtime.getValue
 | 
			
		||||
@@ -12,7 +13,6 @@ import eu.kanade.presentation.library.components.MangaListItem
 | 
			
		||||
import kotlinx.coroutines.flow.StateFlow
 | 
			
		||||
import tachiyomi.domain.manga.model.Manga
 | 
			
		||||
import tachiyomi.domain.manga.model.MangaCover
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.util.plus
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ package eu.kanade.presentation.category
 | 
			
		||||
import androidx.compose.foundation.layout.Arrangement
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyListState
 | 
			
		||||
import androidx.compose.foundation.lazy.itemsIndexed
 | 
			
		||||
import androidx.compose.foundation.lazy.rememberLazyListState
 | 
			
		||||
@@ -16,7 +17,6 @@ import eu.kanade.presentation.components.AppBar
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.ui.category.CategoryScreenState
 | 
			
		||||
import tachiyomi.domain.category.model.Category
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.material.Scaffold
 | 
			
		||||
import tachiyomi.presentation.core.components.material.padding
 | 
			
		||||
import tachiyomi.presentation.core.components.material.topSmallPaddingValues
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
 | 
			
		||||
import androidx.compose.foundation.layout.only
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.layout.systemBars
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyListScope
 | 
			
		||||
import androidx.compose.foundation.lazy.items
 | 
			
		||||
import androidx.compose.foundation.lazy.rememberLazyListState
 | 
			
		||||
@@ -69,7 +70,6 @@ import tachiyomi.domain.chapter.service.missingChaptersCount
 | 
			
		||||
import tachiyomi.domain.library.service.LibraryPreferences
 | 
			
		||||
import tachiyomi.domain.manga.model.Manga
 | 
			
		||||
import tachiyomi.domain.source.model.StubSource
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.TwoPanelBox
 | 
			
		||||
import tachiyomi.presentation.core.components.VerticalFastScroller
 | 
			
		||||
import tachiyomi.presentation.core.components.material.ExtendedFloatingActionButton
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import androidx.annotation.StringRes
 | 
			
		||||
import androidx.compose.foundation.background
 | 
			
		||||
import androidx.compose.foundation.isSystemInDarkTheme
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.itemsIndexed
 | 
			
		||||
import androidx.compose.foundation.lazy.rememberLazyListState
 | 
			
		||||
import androidx.compose.foundation.shape.RoundedCornerShape
 | 
			
		||||
@@ -49,7 +50,6 @@ import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
 | 
			
		||||
import eu.kanade.presentation.util.LocalBackPress
 | 
			
		||||
import eu.kanade.presentation.util.Screen
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.material.Scaffold
 | 
			
		||||
import cafe.adriel.voyager.core.screen.Screen as VoyagerScreen
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import android.content.Context
 | 
			
		||||
import androidx.compose.foundation.horizontalScroll
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.rememberScrollState
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.filled.ArrowBack
 | 
			
		||||
@@ -39,7 +40,6 @@ import eu.kanade.tachiyomi.util.system.workManager
 | 
			
		||||
import kotlinx.coroutines.flow.SharingStarted
 | 
			
		||||
import kotlinx.coroutines.flow.map
 | 
			
		||||
import kotlinx.coroutines.flow.stateIn
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.material.Scaffold
 | 
			
		||||
import tachiyomi.presentation.core.util.plus
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Row
 | 
			
		||||
import androidx.compose.foundation.layout.defaultMinSize
 | 
			
		||||
import androidx.compose.foundation.layout.fillMaxWidth
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.itemsIndexed
 | 
			
		||||
import androidx.compose.foundation.lazy.rememberLazyListState
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
@@ -28,7 +29,6 @@ import androidx.compose.ui.draw.clip
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.material.Divider
 | 
			
		||||
import tachiyomi.presentation.core.util.isScrolledToEnd
 | 
			
		||||
import tachiyomi.presentation.core.util.isScrolledToStart
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ package eu.kanade.presentation.more.stats
 | 
			
		||||
import androidx.compose.foundation.layout.Arrangement
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.layout.Row
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.rememberLazyListState
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.outlined.CollectionsBookmark
 | 
			
		||||
@@ -19,7 +20,6 @@ import eu.kanade.presentation.more.stats.components.StatsSection
 | 
			
		||||
import eu.kanade.presentation.more.stats.data.StatsData
 | 
			
		||||
import eu.kanade.presentation.util.toDurationString
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.material.padding
 | 
			
		||||
import java.util.Locale
 | 
			
		||||
import kotlin.time.DurationUnit
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Column
 | 
			
		||||
import androidx.compose.foundation.layout.Row
 | 
			
		||||
import androidx.compose.foundation.layout.Spacer
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.items
 | 
			
		||||
import androidx.compose.material3.LocalTextStyle
 | 
			
		||||
import androidx.compose.material3.MaterialTheme
 | 
			
		||||
@@ -24,7 +25,6 @@ import tachiyomi.domain.manga.model.TriStateFilter
 | 
			
		||||
import tachiyomi.presentation.core.components.CheckboxItem
 | 
			
		||||
import tachiyomi.presentation.core.components.CollapsibleBox
 | 
			
		||||
import tachiyomi.presentation.core.components.HeadingItem
 | 
			
		||||
import tachiyomi.presentation.core.components.LazyColumn
 | 
			
		||||
import tachiyomi.presentation.core.components.SortItem
 | 
			
		||||
import tachiyomi.presentation.core.components.TextItem
 | 
			
		||||
import tachiyomi.presentation.core.components.material.Button
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
package tachiyomi.presentation.core.components
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.gestures.FlingBehavior
 | 
			
		||||
import androidx.compose.foundation.layout.Arrangement
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.lazy.grid.GridCells
 | 
			
		||||
@@ -14,7 +13,6 @@ import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.compose.ui.graphics.Color
 | 
			
		||||
import androidx.compose.ui.unit.Dp
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import tachiyomi.presentation.core.util.flingBehaviorIgnoringMotionScale
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun FastScrollLazyVerticalGrid(
 | 
			
		||||
@@ -31,7 +29,6 @@ fun FastScrollLazyVerticalGrid(
 | 
			
		||||
    verticalArrangement: Arrangement.Vertical =
 | 
			
		||||
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
 | 
			
		||||
    horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
 | 
			
		||||
    flingBehavior: FlingBehavior = flingBehaviorIgnoringMotionScale(),
 | 
			
		||||
    userScrollEnabled: Boolean = true,
 | 
			
		||||
    content: LazyGridScope.() -> Unit,
 | 
			
		||||
) {
 | 
			
		||||
@@ -54,7 +51,6 @@ fun FastScrollLazyVerticalGrid(
 | 
			
		||||
            reverseLayout = reverseLayout,
 | 
			
		||||
            verticalArrangement = verticalArrangement,
 | 
			
		||||
            horizontalArrangement = horizontalArrangement,
 | 
			
		||||
            flingBehavior = flingBehavior,
 | 
			
		||||
            userScrollEnabled = userScrollEnabled,
 | 
			
		||||
            content = content,
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
package tachiyomi.presentation.core.components
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.gestures.FlingBehavior
 | 
			
		||||
import androidx.compose.foundation.layout.Arrangement
 | 
			
		||||
import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.layout.calculateEndPadding
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyListScope
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyListState
 | 
			
		||||
import androidx.compose.foundation.lazy.rememberLazyListState
 | 
			
		||||
@@ -15,38 +15,6 @@ import androidx.compose.ui.platform.LocalDensity
 | 
			
		||||
import androidx.compose.ui.platform.LocalLayoutDirection
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import tachiyomi.presentation.core.util.drawVerticalScrollbar
 | 
			
		||||
import tachiyomi.presentation.core.util.flingBehaviorIgnoringMotionScale
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LazyColumn with fling animation fix
 | 
			
		||||
 *
 | 
			
		||||
 * @see flingBehaviorIgnoringMotionScale
 | 
			
		||||
 */
 | 
			
		||||
@Composable
 | 
			
		||||
fun LazyColumn(
 | 
			
		||||
    modifier: Modifier = Modifier,
 | 
			
		||||
    state: LazyListState = rememberLazyListState(),
 | 
			
		||||
    contentPadding: PaddingValues = PaddingValues(0.dp),
 | 
			
		||||
    reverseLayout: Boolean = false,
 | 
			
		||||
    verticalArrangement: Arrangement.Vertical =
 | 
			
		||||
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
 | 
			
		||||
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
 | 
			
		||||
    flingBehavior: FlingBehavior = flingBehaviorIgnoringMotionScale(),
 | 
			
		||||
    userScrollEnabled: Boolean = true,
 | 
			
		||||
    content: LazyListScope.() -> Unit,
 | 
			
		||||
) {
 | 
			
		||||
    androidx.compose.foundation.lazy.LazyColumn(
 | 
			
		||||
        modifier = modifier,
 | 
			
		||||
        state = state,
 | 
			
		||||
        contentPadding = contentPadding,
 | 
			
		||||
        reverseLayout = reverseLayout,
 | 
			
		||||
        verticalArrangement = verticalArrangement,
 | 
			
		||||
        horizontalAlignment = horizontalAlignment,
 | 
			
		||||
        flingBehavior = flingBehavior,
 | 
			
		||||
        userScrollEnabled = userScrollEnabled,
 | 
			
		||||
        content = content,
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * LazyColumn with scrollbar.
 | 
			
		||||
@@ -60,7 +28,6 @@ fun ScrollbarLazyColumn(
 | 
			
		||||
    verticalArrangement: Arrangement.Vertical =
 | 
			
		||||
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
 | 
			
		||||
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
 | 
			
		||||
    flingBehavior: FlingBehavior = flingBehaviorIgnoringMotionScale(),
 | 
			
		||||
    userScrollEnabled: Boolean = true,
 | 
			
		||||
    content: LazyListScope.() -> Unit,
 | 
			
		||||
) {
 | 
			
		||||
@@ -81,7 +48,6 @@ fun ScrollbarLazyColumn(
 | 
			
		||||
        reverseLayout = reverseLayout,
 | 
			
		||||
        verticalArrangement = verticalArrangement,
 | 
			
		||||
        horizontalAlignment = horizontalAlignment,
 | 
			
		||||
        flingBehavior = flingBehavior,
 | 
			
		||||
        userScrollEnabled = userScrollEnabled,
 | 
			
		||||
        content = content,
 | 
			
		||||
    )
 | 
			
		||||
@@ -99,7 +65,6 @@ fun FastScrollLazyColumn(
 | 
			
		||||
    verticalArrangement: Arrangement.Vertical =
 | 
			
		||||
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
 | 
			
		||||
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
 | 
			
		||||
    flingBehavior: FlingBehavior = flingBehaviorIgnoringMotionScale(),
 | 
			
		||||
    userScrollEnabled: Boolean = true,
 | 
			
		||||
    content: LazyListScope.() -> Unit,
 | 
			
		||||
) {
 | 
			
		||||
@@ -115,7 +80,6 @@ fun FastScrollLazyColumn(
 | 
			
		||||
            reverseLayout = reverseLayout,
 | 
			
		||||
            verticalArrangement = verticalArrangement,
 | 
			
		||||
            horizontalAlignment = horizontalAlignment,
 | 
			
		||||
            flingBehavior = flingBehavior,
 | 
			
		||||
            userScrollEnabled = userScrollEnabled,
 | 
			
		||||
            content = content,
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.PaddingValues
 | 
			
		||||
import androidx.compose.foundation.layout.height
 | 
			
		||||
import androidx.compose.foundation.layout.size
 | 
			
		||||
import androidx.compose.foundation.layout.width
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyColumn
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyItemScope
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyListItemInfo
 | 
			
		||||
import androidx.compose.foundation.lazy.LazyListState
 | 
			
		||||
 
 | 
			
		||||
@@ -1,60 +0,0 @@
 | 
			
		||||
package tachiyomi.presentation.core.util
 | 
			
		||||
 | 
			
		||||
import androidx.compose.animation.core.AnimationState
 | 
			
		||||
import androidx.compose.animation.core.DecayAnimationSpec
 | 
			
		||||
import androidx.compose.animation.core.animateDecay
 | 
			
		||||
import androidx.compose.animation.rememberSplineBasedDecay
 | 
			
		||||
import androidx.compose.foundation.gestures.FlingBehavior
 | 
			
		||||
import androidx.compose.foundation.gestures.ScrollScope
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.remember
 | 
			
		||||
import androidx.compose.ui.MotionDurationScale
 | 
			
		||||
import kotlinx.coroutines.withContext
 | 
			
		||||
import kotlin.math.abs
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * FlingBehavior that always uses the default motion scale.
 | 
			
		||||
 *
 | 
			
		||||
 * This makes the scrolling animation works like View's lists
 | 
			
		||||
 * when "Remove animation" settings is on.
 | 
			
		||||
 */
 | 
			
		||||
@Composable
 | 
			
		||||
fun flingBehaviorIgnoringMotionScale(): FlingBehavior {
 | 
			
		||||
    val flingSpec = rememberSplineBasedDecay<Float>()
 | 
			
		||||
    return remember(flingSpec) {
 | 
			
		||||
        DefaultFlingBehavior(flingSpec)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
private val DefaultMotionDurationScale = object : MotionDurationScale {
 | 
			
		||||
    // Use default motion scale factor
 | 
			
		||||
    override val scaleFactor: Float = 1f
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
private class DefaultFlingBehavior(
 | 
			
		||||
    private val flingDecay: DecayAnimationSpec<Float>,
 | 
			
		||||
) : FlingBehavior {
 | 
			
		||||
    override suspend fun ScrollScope.performFling(initialVelocity: Float): Float {
 | 
			
		||||
        // come up with the better threshold, but we need it since spline curve gives us NaNs
 | 
			
		||||
        return if (abs(initialVelocity) > 1f) {
 | 
			
		||||
            var velocityLeft = initialVelocity
 | 
			
		||||
            var lastValue = 0f
 | 
			
		||||
            withContext(DefaultMotionDurationScale) {
 | 
			
		||||
                AnimationState(
 | 
			
		||||
                    initialValue = 0f,
 | 
			
		||||
                    initialVelocity = initialVelocity,
 | 
			
		||||
                ).animateDecay(flingDecay) {
 | 
			
		||||
                    val delta = value - lastValue
 | 
			
		||||
                    val consumed = scrollBy(delta)
 | 
			
		||||
                    lastValue = value
 | 
			
		||||
                    velocityLeft = this.velocity
 | 
			
		||||
                    // avoid rounding errors and stop if anything is unconsumed
 | 
			
		||||
                    if (abs(delta - consumed) > 0.5f) this.cancelAnimation()
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            velocityLeft
 | 
			
		||||
        } else {
 | 
			
		||||
            initialVelocity
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user