commit 6e7146dfd698a8bc598c0dfdaffa541ff9e87cc0
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Jan 20 15:26:30 2021 +0100

    Progress with Megaminx.

diff --git a/src/main/java/org/distorted/objects/TwistyMegaminx.java b/src/main/java/org/distorted/objects/TwistyMegaminx.java
index c1fe0264..78308c9a 100644
--- a/src/main/java/org/distorted/objects/TwistyMegaminx.java
+++ b/src/main/java/org/distorted/objects/TwistyMegaminx.java
@@ -180,13 +180,13 @@ public class TwistyMegaminx extends TwistyMinx
       {
       float E = 2.0f*(numLayers/6.0f - MEGA_D)/(0.5f*(numLayers-1));
       int N = (numCubitsPerCorner-1)/3;
-      int b1 = (part-1) % N;
-      int b2 = (part-1) / N;
-      Static4D pri = mCurrV[b2];
-      Static4D sec = mCurrV[(b2+2)%3];
+      int block = (part-1) % N;
+      int index = (part-1) / N;
+      Static4D pri = mCurrV[index];
+      Static4D sec = mCurrV[(index+2)%3];
 
-      int multP = (b1 % ((numLayers-3)/2)) + 1;
-      int multS = (b1 / ((numLayers-3)/2));
+      int multP = (block % ((numLayers-3)/2)) + 1;
+      int multS = (block / ((numLayers-3)/2));
 
       pos.set( corn.get0()*D + (pri.get0()*multP + sec.get0()*multS)*E,
                corn.get1()*D + (pri.get1()*multP + sec.get1()*multS)*E,
@@ -318,29 +318,43 @@ public class TwistyMegaminx extends TwistyMinx
 
   int getFaceColor(int cubit, int cubitface, int numLayers)
     {
+    if( cubitface<0 || cubitface>2 ) return NUM_TEXTURES*NUM_FACES;
+
     int numCubitsPerCorner = numCubitsPerCorner(numLayers);
-    int type  = cubit % numCubitsPerCorner;
+    int part  = cubit % numCubitsPerCorner;
     int corner= cubit / numCubitsPerCorner;
 
-    if( type==0 )
+    if( part==0 )
       {
-      return cubitface>=0 && cubitface<3 ? mCornerFaceMap[corner][cubitface] : NUM_TEXTURES*NUM_FACES;
+      return mCornerFaceMap[corner][cubitface];
       }
     else
       {
       int N = (numCubitsPerCorner-1)/3;
-      int block = (type-1) % N;
-      int index = (type-1) / N;
+      int block = (part-1) % N;
+      int index = (part-1) / N;
 
-      if( index< (numLayers-1)/2 )
+      if( block< (numLayers-1)/2 )
         {
-        return ( cubitface>2 || cubitface==((block+2)%3) ) ? NUM_TEXTURES*NUM_FACES : mCornerFaceMap[corner][cubitface];
+        switch(index)
+          {
+          case 0: return cubitface==1 ? NUM_TEXTURES*NUM_FACES : mCornerFaceMap[corner][cubitface];
+          case 1: return cubitface==0 ? NUM_TEXTURES*NUM_FACES : mCornerFaceMap[corner][cubitface];
+          case 2: return cubitface==2 ? NUM_TEXTURES*NUM_FACES : mCornerFaceMap[corner][cubitface];
+          }
         }
       else
         {
-        return ( cubitface>2 || cubitface==block         ) ? NUM_TEXTURES*NUM_FACES : mCornerFaceMap[corner][cubitface];
+        switch(index)
+          {
+          case 0: return cubitface==0 ? mCornerFaceMap[corner][cubitface] : NUM_TEXTURES*NUM_FACES;
+          case 1: return cubitface==2 ? mCornerFaceMap[corner][cubitface] : NUM_TEXTURES*NUM_FACES;
+          case 2: return cubitface==1 ? mCornerFaceMap[corner][cubitface] : NUM_TEXTURES*NUM_FACES;
+          }
         }
       }
+
+    return NUM_TEXTURES*NUM_FACES;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
