commit b30695c67adec88f1727bf339b9b788937bb11a4
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Sep 23 12:23:14 2020 +0100

    Do not forget the amount an Object has been changed in size when we switch between Objects.

diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index 27bbeb19..1f2a1aba 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -76,7 +76,8 @@ public abstract class RubikObject extends DistortedNode
   final int NUM_CUBITS;
   final float BASIC_STEP;
 
-  private static float mInitScreenRatio,mObjectScreenRatio;
+  private static float mInitScreenRatio;
+  private static float mObjectScreenRatio = 1.0f;
 
   private final int mNodeSize;
   private int mRotRowBitmap;
@@ -120,13 +121,15 @@ public abstract class RubikObject extends DistortedNode
     NUM_CUBITS  = mOrigPos.length;
     ROTATION_AXIS = getRotationAxis();
     NUM_AXIS = ROTATION_AXIS.length;
-    mObjectScreenRatio = getScreenRatio();
-    mInitScreenRatio = mObjectScreenRatio;
+    mInitScreenRatio = getScreenRatio();
     NUM_FACES = getNumFaces();
     NUM_CUBIT_FACES = getNumCubitFaces();
     NUM_TEXTURES = getNumStickerTypes()*NUM_FACES;
     BASIC_STEP = getBasicStep();
 
+    if( mObjectScreenRatio>MAX_SIZE_CHANGE) mObjectScreenRatio = MAX_SIZE_CHANGE;
+    if( mObjectScreenRatio<MIN_SIZE_CHANGE) mObjectScreenRatio = MIN_SIZE_CHANGE;
+
     mSize = size;
     computeStartAndStep(mOrigPos);
     mNodeScale= new Static3D(1,NODE_RATIO,1);
@@ -142,7 +145,7 @@ public abstract class RubikObject extends DistortedNode
     mRotationAngleMiddle = new Static1D(0);
     mRotationAngleFinal  = new Static1D(0);
 
-    float scale  = mObjectScreenRatio*mNodeSize/mSize;
+    float scale  = mObjectScreenRatio*mInitScreenRatio*mNodeSize/mSize;
     mObjectScale = new Static3D(scale,scale,scale);
     mScaleEffect = new MatrixEffectScale(mObjectScale);
     mQuatEffect  = new MatrixEffectQuaternion(quat, CENTER);
@@ -230,16 +233,10 @@ public abstract class RubikObject extends DistortedNode
     {
     mObjectScreenRatio *= (1.0f+sizeChange)/2;
 
-    if( mObjectScreenRatio > MAX_SIZE_CHANGE*mInitScreenRatio)
-      {
-      mObjectScreenRatio = MAX_SIZE_CHANGE*mInitScreenRatio;
-      }
-    if( mObjectScreenRatio < MIN_SIZE_CHANGE*mInitScreenRatio)
-      {
-      mObjectScreenRatio = MIN_SIZE_CHANGE*mInitScreenRatio;
-      }
+    if( mObjectScreenRatio>MAX_SIZE_CHANGE) mObjectScreenRatio = MAX_SIZE_CHANGE;
+    if( mObjectScreenRatio<MIN_SIZE_CHANGE) mObjectScreenRatio = MIN_SIZE_CHANGE;
 
-    float scale = mObjectScreenRatio*mNodeSize/mSize;
+    float scale = mObjectScreenRatio*mInitScreenRatio*mNodeSize/mSize;
     mObjectScale.set(scale,scale,scale);
     }
 
@@ -247,7 +244,7 @@ public abstract class RubikObject extends DistortedNode
 
   static float getObjectRatio()
     {
-    return mObjectScreenRatio;
+    return mObjectScreenRatio*mInitScreenRatio;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
