Only take vertical, upward velocity into account for escaping the dismiss target.

Fixes: 157180669
Test: manual
Change-Id: I407ccc7d74906c83c65a93f2e12ad6423b161a32
This commit is contained in:
Josh Tsuji
2020-06-18 11:32:37 -04:00
parent f21036b4e7
commit 4ca06c1e8e

View File

@@ -229,7 +229,7 @@ abstract class MagnetizedObject<T : Any>(
* to the target. If this velocity is reached, the object will be freed even if it wasn't moved
* outside the magnetic field radius.
*/
var flingUnstuckFromTargetMinVelocity = 1000f
var flingUnstuckFromTargetMinVelocity = 4000f
/**
* Sets the maximum X velocity above which the object will not stick to the target. Even if the
@@ -402,9 +402,10 @@ abstract class MagnetizedObject<T : Any>(
cancelAnimations()
if (objectStuckToTarget) {
if (hypot(velX, velY) > flingUnstuckFromTargetMinVelocity) {
// If the object is stuck, but it was forcefully flung away from the target,
// tell the listener so the object can be animated out of the target.
if (-velY > flingUnstuckFromTargetMinVelocity) {
// If the object is stuck, but it was forcefully flung away from the target in
// the upward direction, tell the listener so the object can be animated out of
// the target.
magnetListener.onUnstuckFromTarget(
targetObjectIsStuckTo!!, velX, velY, wasFlungOut = true)
} else {