commit f0450fcc78ff81b8a6985cfed413acce0c900577
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Mar 17 16:37:33 2021 +0100

    Change Cubit.mRotationRow[] from an index pointing at a single rotating layer to a bitmap potentially pointing at several layers.
    (in preparation for bandaged objects)

diff --git a/src/main/java/org/distorted/objects/Cubit.java b/src/main/java/org/distorted/objects/Cubit.java
index 8fd1fbac..8b202e63 100644
--- a/src/main/java/org/distorted/objects/Cubit.java
+++ b/src/main/java/org/distorted/objects/Cubit.java
@@ -159,7 +159,7 @@ class Cubit
 
     for(int axis=0; axis<mNumAxis; axis++)
       {
-      result += (1<<(mRotationRow[axis]+accumulativeShift));
+      result += (mRotationRow[axis]<<accumulativeShift);
       accumulativeShift += ObjectList.MAX_OBJECT_SIZE;
       }
 
diff --git a/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java b/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
index 18640838..19c1a2aa 100644
--- a/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
+++ b/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
@@ -306,16 +306,7 @@ abstract class TwistyBandagedAbstract extends TwistyObject
     int dimIndex     = mAxisMap[posIndex][quatIndex];
     boolean reaches  = multiplier*pos[posIndex] + dim[dimIndex]*0.5f > (numLayers-1)*0.5f;
 
-    int ret=  reaches ? stickerIndex*NUM_FACES + face : NUM_STICKERS*NUM_FACES;
-
-if( cubit==0 )
-  {
-android.util.Log.e("DISTORTED", "cubit="+cubit+" cubitface="+cubitface+" ret="+ret+" stickerIndex="+stickerIndex+" face="+face);
-android.util.Log.e("DISTORTED", "reaches="+reaches+" border="+((numLayers-1)*0.5f)+" left="+(multiplier*pos[posIndex] + dim[dimIndex]*0.5f));
-android.util.Log.e("DISTORTED", "posIndex="+posIndex+" dimIndex="+dimIndex);
-
-  }
-    return ret;
+    return reaches ? stickerIndex*NUM_FACES + face : NUM_STICKERS*NUM_FACES;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/TwistyCube.java b/src/main/java/org/distorted/objects/TwistyCube.java
index 927e2394..a6c06031 100644
--- a/src/main/java/org/distorted/objects/TwistyCube.java
+++ b/src/main/java/org/distorted/objects/TwistyCube.java
@@ -215,7 +215,7 @@ class TwistyCube extends TwistyObject
 
   int getFaceColor(int cubit, int cubitface, int size)
     {
-    return CUBITS[cubit].mRotationRow[cubitface/2] == (cubitface%2==0 ? size-1:0) ? cubitface : NUM_FACES;
+    return CUBITS[cubit].mRotationRow[cubitface/2] == (cubitface%2==0 ? 1<<(size-1):1) ? cubitface : NUM_FACES;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/TwistyObject.java b/src/main/java/org/distorted/objects/TwistyObject.java
index 72b9f452..b4209584 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -290,10 +290,10 @@ public abstract class TwistyObject extends DistortedNode
 
     for(int i=0; i<NUM_CUTS; i++)
       {
-      if( tmp<CUTS[i] ) return i;
+      if( tmp<CUTS[i] ) return (1<<i);
       }
 
-    return NUM_CUTS;
+    return (1<<NUM_CUTS);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -307,7 +307,7 @@ public abstract class TwistyObject extends DistortedNode
 
   private boolean belongsToRotation( int cubit, int axis, int rowBitmap)
     {
-    return ((1<<CUBITS[cubit].mRotationRow[axis]) & rowBitmap) != 0;
+    return (CUBITS[cubit].mRotationRow[axis] & rowBitmap) != 0;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -411,13 +411,11 @@ public abstract class TwistyObject extends DistortedNode
     if ( cubit.mQuatIndex == quatIndex ) return false;
 
     int belongsToHowManyFaces = 0;
-    int lastLayer = getNumLayers()-1;
-    int row;
+    int bitmap = (1<<(getNumLayers()-1)) + 1;
 
     for(int i=0; i<NUM_AXIS; i++)
       {
-      row = cubit.mRotationRow[i];
-      if( row==0 || row==lastLayer ) belongsToHowManyFaces++;
+      if( (cubit.mRotationRow[i] & bitmap) != 0 ) belongsToHowManyFaces++;
       }
 
     switch(belongsToHowManyFaces)
@@ -432,7 +430,7 @@ public abstract class TwistyObject extends DistortedNode
                Static4D rotated1 = RubikSurfaceView.rotateVectorByQuat( cubitCenter, quat1 );
                Static4D rotated2 = RubikSurfaceView.rotateVectorByQuat( cubitCenter, quat2 );
 
-               float row1, row2;
+               int row1, row2;
                float x1 = rotated1.get0();
                float y1 = rotated1.get1();
                float z1 = rotated1.get2();
@@ -445,7 +443,7 @@ public abstract class TwistyObject extends DistortedNode
                  row1 = computeRow(x1,y1,z1,i);
                  row2 = computeRow(x2,y2,z2,i);
 
-                 if( (row1==0 && row2==0) || (row1==lastLayer && row2==lastLayer) ) return false;
+                 if( ((row1 & row2) & bitmap) != 0 ) return false;
                  }
                return true;
 
diff --git a/src/main/java/org/distorted/objects/TwistyPyraminx.java b/src/main/java/org/distorted/objects/TwistyPyraminx.java
index b108b9c0..8ad49d2c 100644
--- a/src/main/java/org/distorted/objects/TwistyPyraminx.java
+++ b/src/main/java/org/distorted/objects/TwistyPyraminx.java
@@ -192,7 +192,7 @@ public class TwistyPyraminx extends TwistyObject
 
   private int faceColor(int cubit, int axis)
     {
-    return CUBITS[cubit].mRotationRow[axis] == 0 ? axis : NUM_FACES;
+    return CUBITS[cubit].mRotationRow[axis] == 1 ? axis : NUM_FACES;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
