commit 8cccfb1064d762aa0ca3e768a73a23da781b4e21
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Jun 7 18:18:10 2020 +0100

    More progreess porting RubikCube.

diff --git a/src/main/java/org/distorted/objects/Cubit.java b/src/main/java/org/distorted/objects/Cubit.java
index 736ed329..29b89e52 100644
--- a/src/main/java/org/distorted/objects/Cubit.java
+++ b/src/main/java/org/distorted/objects/Cubit.java
@@ -21,8 +21,6 @@ package org.distorted.objects;
 
 import android.content.SharedPreferences;
 
-import org.distorted.library.effect.MatrixEffectQuaternion;
-import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 import org.distorted.main.RubikSurfaceView;
@@ -31,15 +29,12 @@ import org.distorted.main.RubikSurfaceView;
 
 class Cubit
   {
-  private static final Static3D MATRIX_CENTER = new Static3D(0,0,0);
-
   private final Static3D mOrigPosition;
 
   private RubikObject mParent;
   private Static3D mCurrentPosition;
   private int mNumAxis;
 
-  DistortedEffects mEffect;
   Static4D mQuatScramble;
   float[] mRotationRow;
 
@@ -60,9 +55,6 @@ class Cubit
     mNumAxis     = mParent.ROTATION_AXIS.length;
     mRotationRow = new float[mNumAxis];
     computeRotationRow();
-
-    mEffect = new DistortedEffects();
-    mEffect.apply( new MatrixEffectQuaternion(mQuatScramble, MATRIX_CENTER));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -180,7 +172,7 @@ class Cubit
       {
       row = (int)(mRotationRow[axis]+0.5f);
       result += (1<<(row+accumulativeShift));
-      accumulativeShift += RubikObjectList.MAX_SIZE;
+      accumulativeShift += RubikObjectList.MAX_OBJECT_SIZE;
       }
 
     return result;
diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index afc60742..a0e61f8f 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -47,7 +47,7 @@ import org.distorted.library.type.Static4D;
 
 public abstract class RubikObject extends DistortedNode
   {
-  private static final Static3D VERTEX_CENTER = new Static3D(0,0,0);
+  private static final Static3D CENTER = new Static3D(0,0,0);
   static final int INTERIOR_COLOR = 0xff000000;
   public static final int NODE_FBO_SIZE = 600;
   private static final int POST_ROTATION_MILLISEC = 500;
@@ -108,17 +108,16 @@ public abstract class RubikObject extends DistortedNode
 
     mRotationAngle= new Dynamic1D();
     mRotationAxis = new Static3D(1,0,0);
-    mRotateEffect = new VertexEffectRotate(mRotationAngle, mRotationAxis, VERTEX_CENTER);
+    mRotateEffect = new VertexEffectRotate(mRotationAngle, mRotationAxis, CENTER);
 
     mRotationAngleStatic = new Static1D(0);
     mRotationAngleMiddle = new Static1D(0);
     mRotationAngleFinal  = new Static1D(0);
 
-    Static3D center = new Static3D(0,0,0);
     float scale = OBJECT_SCREEN_RATIO*NODE_FBO_SIZE/mSize;
     mScaleEffect = new MatrixEffectScale(new Static3D(scale,scale,scale));
-    mQuatCEffect = new MatrixEffectQuaternion(quatCur, center);
-    mQuatAEffect = new MatrixEffectQuaternion(quatAcc, center);
+    mQuatCEffect = new MatrixEffectQuaternion(quatCur, CENTER);
+    mQuatAEffect = new MatrixEffectQuaternion(quatAcc, CENTER);
 
     MatrixEffectScale nodeScaleEffect = new MatrixEffectScale(mNodeScale);
     nodeEffects.apply(nodeScaleEffect);
@@ -392,14 +391,14 @@ public abstract class RubikObject extends DistortedNode
 
   public void apply(Effect effect, int position)
     {
-    for(int i=0; i<NUM_CUBITS; i++) mCubits[i].mEffect.apply(effect, position);
+    mEffects.apply(effect, position);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void remove(long effectID)
     {
-    for(int i=0; i<NUM_CUBITS; i++) mCubits[i].mEffect.abortById(effectID);
+    mEffects.abortById(effectID);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -473,7 +472,7 @@ public abstract class RubikObject extends DistortedNode
     mRotationAngleStatic.set0(0.0f);
     mRotationAxis.set( ROTATION_AXIS[axis] );
     mRotationAngle.add(mRotationAngleStatic);
-    mRotateEffect.setMeshAssociation( mRotRowBitmap<<(axis*RubikObjectList.MAX_SIZE) , -1);
+    mRotateEffect.setMeshAssociation( mRotRowBitmap<<(axis*RubikObjectList.MAX_OBJECT_SIZE) , -1);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -489,7 +488,7 @@ public abstract class RubikObject extends DistortedNode
     mRotationAngle.resetToBeginning();
     mRotationAngle.add(new Static1D(0));
     mRotationAngle.add(new Static1D(angle));
-    mRotateEffect.setMeshAssociation( mRotRowBitmap<<(axis*RubikObjectList.MAX_SIZE) , -1);
+    mRotateEffect.setMeshAssociation( mRotRowBitmap<<(axis*RubikObjectList.MAX_OBJECT_SIZE) , -1);
     mRotateEffect.notifyWhenFinished(listener);
 
     return mRotateEffect.getID();
diff --git a/src/main/java/org/distorted/objects/RubikObjectList.java b/src/main/java/org/distorted/objects/RubikObjectList.java
index bfaad1bf..15543ff2 100644
--- a/src/main/java/org/distorted/objects/RubikObjectList.java
+++ b/src/main/java/org/distorted/objects/RubikObjectList.java
@@ -54,8 +54,9 @@ public enum RubikObjectList
   ;
 
   public static final int NUM_OBJECTS = values().length;
-  public static final int MAX_SIZE;
+  public static final int MAX_NUM_OBJECTS;
   public static final int MAX_LEVEL;
+  public static final int MAX_OBJECT_SIZE;
 
   private final int[] mObjectSizes, mMaxLevels, mIconIDs;
   private final Class<? extends RubikObject> mObjectClass;
@@ -66,27 +67,30 @@ public enum RubikObjectList
   static
     {
     mNumAll = 0;
-    int size, i = 0;
+    int num, i = 0;
     objects = new RubikObjectList[NUM_OBJECTS];
-    int maxSize  = Integer.MIN_VALUE;
-    int maxLevel = Integer.MIN_VALUE;
+    int maxNum  = Integer.MIN_VALUE;
+    int maxLevel= Integer.MIN_VALUE;
+    int maxSize = Integer.MIN_VALUE;
 
     for(RubikObjectList object: RubikObjectList.values())
       {
       objects[i] = object;
       i++;
-      size = object.mObjectSizes.length;
-      mNumAll += size;
-      if( size> maxSize ) maxSize = size;
+      num = object.mObjectSizes.length;
+      mNumAll += num;
+      if( num> maxNum ) maxNum = num;
 
-      for(int j=0; j<size; j++)
+      for(int j=0; j<num; j++)
         {
         if( object.mMaxLevels[j] > maxLevel ) maxLevel = object.mMaxLevels[j];
+        if( object.mObjectSizes[j] > maxSize) maxSize  = object.mObjectSizes[j];
         }
       }
 
-    MAX_SIZE = maxSize;
-    MAX_LEVEL= maxLevel;
+    MAX_NUM_OBJECTS = maxNum;
+    MAX_LEVEL       = maxLevel;
+    MAX_OBJECT_SIZE = maxSize;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/scores/RubikScores.java b/src/main/java/org/distorted/scores/RubikScores.java
index 54ed4661..fdcbfe6a 100644
--- a/src/main/java/org/distorted/scores/RubikScores.java
+++ b/src/main/java/org/distorted/scores/RubikScores.java
@@ -27,7 +27,7 @@ import org.distorted.objects.RubikObjectList;
 
 import java.util.UUID;
 
-import static org.distorted.objects.RubikObjectList.MAX_SIZE;
+import static org.distorted.objects.RubikObjectList.MAX_NUM_OBJECTS;
 import static org.distorted.objects.RubikObjectList.NUM_OBJECTS;
 import static org.distorted.objects.RubikObjectList.MAX_LEVEL;
 
@@ -52,11 +52,11 @@ public class RubikScores
 
   private RubikScores()
     {
-    mRecords   = new long[NUM_OBJECTS][MAX_SIZE][MAX_LEVEL];
-    mSubmitted = new int [NUM_OBJECTS][MAX_SIZE][MAX_LEVEL];
+    mRecords   = new long[NUM_OBJECTS][MAX_NUM_OBJECTS][MAX_LEVEL];
+    mSubmitted = new int [NUM_OBJECTS][MAX_NUM_OBJECTS][MAX_LEVEL];
 
     for(int i=0; i<NUM_OBJECTS; i++)
-      for(int j=0; j<MAX_SIZE; j++)
+      for(int j=0; j<MAX_NUM_OBJECTS; j++)
         for(int k=0; k<MAX_LEVEL; k++)
           {
           mRecords[i][j][k]   = NO_RECORD;
@@ -235,7 +235,7 @@ public class RubikScores
             time = Long.parseLong(timeStr);
             subm = Integer.parseInt(submStr);
 
-            if( sizeIndex>=0 && sizeIndex<MAX_SIZE && subm>=0 && subm<=1 )
+            if( sizeIndex>=0 && sizeIndex<MAX_NUM_OBJECTS && subm>=0 && subm<=1 )
               {
               mRecords  [object][sizeIndex][level] = time;
               mSubmitted[object][sizeIndex][level] = subm;
@@ -309,7 +309,7 @@ public class RubikScores
     mNameIsVerified = true;
 
     for(int i=0; i<NUM_OBJECTS; i++)
-      for(int j=0; j<MAX_SIZE   ; j++)
+      for(int j=0; j<MAX_NUM_OBJECTS; j++)
         for(int k=0; k<MAX_LEVEL; k++)
           {
           mSubmitted[i][j][k]=1;
