commit b5347187957678f71996b3f2ab4040b3a44ca228
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Apr 1 13:02:51 2021 +0200

    Progress with any size Kilominx.

diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index e41fa743..74413526 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -37,33 +37,34 @@ import static org.distorted.objects.TwistyMegaminx.MEGA_D;
 
 class FactoryCubit
   {
-  static final float IVY_D = 0.003f;
-  static final float IVY_C = 0.59f;
-  static final float IVY_M = 0.35f;
-  static final float REX_D = 0.2f;
-
   private static final float SQ2 = (float)Math.sqrt(2);
   private static final float SQ3 = (float)Math.sqrt(3);
   private static final float SQ5 = (float)Math.sqrt(5);
   private static final float SQ6 = (float)Math.sqrt(6);
 
+  private static final Static1D RADIUS = new Static1D(1);
+  private static FactoryCubit mThis;
+
+  // IVY
+  static final float IVY_D = 0.003f;
+  static final float IVY_C = 0.59f;
+  static final float IVY_M = 0.35f;
+  private static final int IVY_N = 8;
+
+  // REX
+  static final float REX_D = 0.2f;
+
+  // KILO / MEGAMINX
   static final float SIN54    = (SQ5+1)/4;
   static final float COS54    = (float)(Math.sqrt(10-2*SQ5)/4);
   static final float SIN18    = (SQ5-1)/4;
   static final float COS18    = (float)(0.25f*Math.sqrt(10.0f+2.0f*SQ5));
   static final float COS_HALFD= (float)(Math.sqrt(0.5f-0.1f*SQ5)); // cos(half the dihedral angle)
   static final float SIN_HALFD= (float)(Math.sqrt(0.5f+0.1f*SQ5)); // sin(half the dihedral angle)
-
   static final float DIHEDRAL1= (float)(Math.acos(-SQ5/5)*180/Math.PI);
   static final float DIHEDRAL2= (float)((180/Math.PI)*Math.asin((2*SIN54*SIN54-1)/COS54) - 90);
-
   static final float MINX_SC  = 0.5f;
 
-  private static final int IVY_N = 8;
-
-  private static final Static1D RADIUS = new Static1D(1);
-  private static FactoryCubit mThis;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private FactoryCubit()
@@ -1356,7 +1357,7 @@ class FactoryCubit
 
   VertexEffect[] createVertexEffectsKilominxCenter(float width)
     {
-    VertexEffect[] effect = new VertexEffect[10];
+    VertexEffect[] effect = new VertexEffect[11];
 
     float H = 0.5f*(SIN54/COS54);
     float Y1= 0.5f*SIN_HALFD;
@@ -1391,6 +1392,7 @@ class FactoryCubit
     effect[7] = new VertexEffectRotate(angle4, axisC, center);
     effect[8] = new VertexEffectRotate(angle5, axisC, center);
     effect[9] = new VertexEffectRotate(angle6, axisY, center);
+    effect[10]= new VertexEffectScale(width/0.5f);
 
     effect[0].setMeshAssociation( 7,-1);  // meshes 0,1,2
     effect[1].setMeshAssociation(56,-1);  // meshes 3,4,5
diff --git a/src/main/java/org/distorted/objects/ObjectList.java b/src/main/java/org/distorted/objects/ObjectList.java
index 5c2ffbc2..b8c554d4 100644
--- a/src/main/java/org/distorted/objects/ObjectList.java
+++ b/src/main/java/org/distorted/objects/ObjectList.java
@@ -143,6 +143,7 @@ public enum ObjectList
   KILO (
          new int[][] {
                        {3 , 18, R.raw.kilo3, R.drawable.ui_small_kilo3, R.drawable.ui_medium_kilo3, R.drawable.ui_big_kilo3, R.drawable.ui_huge_kilo3} ,
+                       {5 , 31, R.raw.kilo3, R.drawable.ui_small_kilo3, R.drawable.ui_medium_kilo3, R.drawable.ui_big_kilo3, R.drawable.ui_huge_kilo3} ,
                      },
          TwistyKilominx.class,
          new MovementMinx(),
diff --git a/src/main/java/org/distorted/objects/TwistyKilominx.java b/src/main/java/org/distorted/objects/TwistyKilominx.java
index e36d6d9c..03d88aeb 100644
--- a/src/main/java/org/distorted/objects/TwistyKilominx.java
+++ b/src/main/java/org/distorted/objects/TwistyKilominx.java
@@ -250,7 +250,7 @@ public class TwistyKilominx extends TwistyMinx
         }
       }
 
-    for(int center=0; center<NUM_CENTERS; center++, index++)
+    for(int center=0; center<NUM_CENTERS; center++)
       {
       for(int part=0; part<numCubitsPerCenter; part++, index++)
         {
@@ -309,7 +309,7 @@ public class TwistyKilominx extends TwistyMinx
     if( mNumCornerEdgeVariants>0 )
       {
       if( mCornerMeshes==null ) mCornerMeshes = new MeshBase[mNumCornerEdgeVariants];
-      if( mEdgeMeshes  ==null ) mEdgeMeshes   = new MeshBase[mNumCornerEdgeVariants][(highestSize-3)/2];
+      if( mEdgeMeshes  ==null ) mEdgeMeshes   = new MeshBase[mNumCornerEdgeVariants][highestSize-3];
       }
 
     if( mCenterMeshes==null ) mCenterMeshes = new MeshBase[variants];
@@ -362,7 +362,12 @@ public class TwistyKilominx extends TwistyMinx
 
   int getFaceColor(int cubit, int cubitface, int numLayers)
     {
-    return cubitface>=0 && cubitface<3 ? mCornerFaceMap[cubit][cubitface] : NUM_TEXTURES*NUM_FACES;
+    if( numLayers==3 )
+      {
+      return cubitface>=0 && cubitface<3 ? mCornerFaceMap[cubit][cubitface] : NUM_TEXTURES*NUM_FACES;
+      }
+
+    return 0;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -381,7 +386,7 @@ public class TwistyKilominx extends TwistyMinx
     float[] vertices = { -X1, Y2, 0, -A*Y1, X1, Y2, 0, Y1 };
 
     FactorySticker factory = FactorySticker.getInstance();
-    factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face], R);
+    factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face%NUM_FACES], R);
 
     float MID = TEXTURE_HEIGHT*0.5f;
     float WID = TEXTURE_HEIGHT*0.1f;
