commit ce366b42927951d002a9200d891357e08da36d62
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Mar 18 12:55:00 2021 +0100

    Make manual scrambling work.

diff --git a/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java b/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
index 34ddf731..a69631b0 100644
--- a/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
+++ b/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
@@ -314,6 +314,26 @@ abstract class TwistyBandagedAbstract extends TwistyObject
     return reaches ? stickerIndex*NUM_FACES + face : NUM_STICKERS*NUM_FACES;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  int computeBitmapFromRow(int rowBitmap, int axis)
+    {
+    int bitmap, initBitmap=0;
+
+    while( initBitmap!=rowBitmap )
+      {
+      initBitmap = rowBitmap;
+
+      for(int cubit=0; cubit<NUM_CUBITS; cubit++)
+        {
+        bitmap = CUBITS[cubit].mRotationRow[axis];
+        if( (rowBitmap & bitmap) != 0 ) rowBitmap |= bitmap;
+        }
+      }
+
+    return rowBitmap;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   float returnMultiplier()
diff --git a/src/main/java/org/distorted/objects/TwistyObject.java b/src/main/java/org/distorted/objects/TwistyObject.java
index a1631017..f1262f44 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -408,6 +408,14 @@ public abstract class TwistyObject extends DistortedNode
     return (mNumTexRows-1-y)*NUM_STICKERS_IN_ROW + x;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// normal, not bandaged, object.
+
+  int computeBitmapFromRow(int rowBitmap, int axis)
+    {
+    return rowBitmap;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Clamp all rotated positions to one of those original ones to avoid accumulating errors.
 
@@ -719,7 +727,7 @@ public abstract class TwistyObject extends DistortedNode
       }
 
     mRotAxis     = axis;
-    mRotRowBitmap= (1<<row);
+    mRotRowBitmap= computeBitmapFromRow( (1<<row),axis );
     mRotationAngleStatic.set0(0.0f);
     mRotationAxis.set( ROTATION_AXIS[axis] );
     mRotationAngle.add(mRotationAngleStatic);
@@ -733,7 +741,7 @@ public abstract class TwistyObject extends DistortedNode
     if( wasRotateApplied() )
       {
       mRotAxis     = axis;
-      mRotRowBitmap= rowBitmap;
+      mRotRowBitmap= computeBitmapFromRow( rowBitmap,axis );
 
       mRotationAngleStatic.set0(0.0f);
       mRotationAxis.set( ROTATION_AXIS[axis] );
