commit 5e2541155a49a2e13115bcd6ed21d182f338da0a
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Aug 26 22:39:07 2021 +0200

    auto-compute the bandaged status from dimension of the CENTERS. Make 'computeBitmapFromRow' generic for bandageed and not bandaged objects.

diff --git a/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java b/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
index f4120fff..4433b3d7 100644
--- a/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
+++ b/src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
@@ -433,28 +433,6 @@ abstract class TwistyBandagedAbstract extends TwistyObject
     return reaches ? stickerIndex*NUM_FACES + face : NUM_STICKERS*NUM_FACES;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// this implements the fact that certain cubits have multiple 'centers' and this means the cubit
-// might span more than one layer along a given axis - i.e. that this is a bandaged puzzle.
-
-  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 37a26d9c..446c74af 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -116,6 +116,7 @@ public abstract class TwistyObject extends DistortedNode
   private final DistortedTexture mTexture;
   private final float mInitScreenRatio;
   private final int mSolvedFunctionIndex;
+  private final boolean mIsBandaged;
   private float mObjectScreenRatio;
   private int[][] mSolvedQuats;
   private int[][] mQuatMult;
@@ -163,6 +164,19 @@ public abstract class TwistyObject extends DistortedNode
     NUM_TEXTURES = getNumStickerTypes(mNumLayers)*NUM_FACES;
     NUM_AXIS = mAxis.length;
 
+    boolean bandaged=false;
+
+    for(int c=0; c<NUM_CUBITS; c++)
+      {
+      if( mOrigPos[c].length>3 )
+        {
+        bandaged=true;
+        break;
+        }
+      }
+
+    mIsBandaged = bandaged;
+
     mQuatDebug = new int[NUM_CUBITS];
 
     if( mObjectScreenRatio>MAX_SIZE_CHANGE) mObjectScreenRatio = MAX_SIZE_CHANGE;
@@ -655,10 +669,25 @@ public abstract class TwistyObject extends DistortedNode
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// normal, not bandaged, object.
 
   int computeBitmapFromRow(int rowBitmap, int axis)
     {
+    if( mIsBandaged )
+      {
+      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;
     }
 
diff --git a/src/main/java/org/distorted/objects/TwistySquare1.java b/src/main/java/org/distorted/objects/TwistySquare1.java
index fd436eb4..f58f8532 100644
--- a/src/main/java/org/distorted/objects/TwistySquare1.java
+++ b/src/main/java/org/distorted/objects/TwistySquare1.java
@@ -275,28 +275,6 @@ class TwistySquare1 extends TwistySquare
     return mStickerType[variant][cubitface]*FACE_COLORS.length + mStickerColor[cubit][cubitface];
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// this implements the fact that corner cubits have multiple 'centers' and this means the cubit
-// might span more than one layer along a given axis - i.e. that this is a bandaged puzzle.
-
-  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;
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private boolean cornerIsUp(int index)
