commit eac805bd2866cdee19de00b77d22f6d054f55f87
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Jan 24 13:06:36 2020 +0000

    RubikCube: further fix for dragging.

diff --git a/src/main/java/org/distorted/magic/RubikSurfaceView.java b/src/main/java/org/distorted/magic/RubikSurfaceView.java
index 7ffbcebb..13195c99 100644
--- a/src/main/java/org/distorted/magic/RubikSurfaceView.java
+++ b/src/main/java/org/distorted/magic/RubikSurfaceView.java
@@ -39,6 +39,9 @@ class RubikSurfaceView extends GLSurfaceView
     // Moving the finger by 1/12 the distance of min(scrWidth,scrHeight) will start a Rotation.
     private final static int ROTATION_SENSITIVITY=  12;
 
+    // Every 1/12 the distance of min(scrWidth,scrHeight) the direction of cube rotation will reset.
+    private final static int DIRECTION_SENSITIVITY=  12;
+
     private final static int NONE   =-1;
     private final static int FRONT  = 0;  // has to be 6 consecutive ints
     private final static int BACK   = 1;  // FRONT ... BOTTOM
@@ -123,6 +126,18 @@ class RubikSurfaceView extends GLSurfaceView
                                          {
                                          mTempCurrent.set(quatFromDrag(mX-x,mY-y));
                                          mRenderer.setQuatCurrentOnNextRender();
+
+                                         int minimumDist = (mScreenMin*mScreenMin)/(DIRECTION_SENSITIVITY*DIRECTION_SENSITIVITY);
+
+                                         if( (mX-x)*(mX-x) + (mY-y)*(mY-y) > minimumDist )
+                                           {
+                                           mX = x;
+                                           mY = y;
+                                           mTempAccumulated.set(quatMultiply(mQuatCurrent, mQuatAccumulated));
+                                           mTempCurrent.set(0f, 0f, 0f, 1f);
+                                           mRenderer.setQuatCurrentOnNextRender();
+                                           mRenderer.setQuatAccumulatedOnNextRender();
+                                           }
                                          }
                                        if( mBeginningRotation )
                                          {
