commit db9903e87a2f5f94ac05106e46ec1c2daa07260d
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun May 23 16:02:32 2021 +0200

    2 Skewb Ultimate cubits.

diff --git a/src/main/java/org/distorted/examples/meshfile/FactoryCubit.java b/src/main/java/org/distorted/examples/meshfile/FactoryCubit.java
index 215148d..cf27c26 100644
--- a/src/main/java/org/distorted/examples/meshfile/FactoryCubit.java
+++ b/src/main/java/org/distorted/examples/meshfile/FactoryCubit.java
@@ -705,10 +705,13 @@ class FactoryCubit
         center.set( centers[cent][0], centers[cent][1], centers[cent][2]);
 
         int corn = cornerIndexes[v];
-        float strength = corners[corn][0];
-        float radius   = corners[corn][1];
 
-        roundCorners(mesh, center, staticVert, strength, radius);
+        if( corn>=0 )
+          {
+          float strength = corners[corn][0];
+          float radius   = corners[corn][1];
+          roundCorners(mesh, center, staticVert, strength, radius);
+          }
         }
       }
     }
diff --git a/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java b/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
index a089cc3..11ce513 100644
--- a/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
+++ b/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
@@ -57,6 +57,7 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Excep
 {
     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 final float DEFAULT_SCALE = 0.3f;
 
     private final GLSurfaceView mView;
@@ -252,7 +253,7 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Excep
 
     private void createMesh()
       {
-      int mode = 6;
+      int mode = 8;
       int numComponents = 0;
       double[][] vertices = null;
       int[][] vertIndexes = null;
@@ -690,6 +691,120 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Excep
         numComponents = 2;
         }
 
+      ///// SKEWB Ultimate SMALL  /////////////////////////////////////////////////////////////
+
+      else if( mode==7 )
+        {
+        double S = (SQ5+1)/4;
+
+        vertices = new double[][]
+          {
+              { 0.0       ,  0.0      , 0.0       },
+              { -0.5*S    , 0.5*S+0.25, -0.25     },
+              {-0.25      , -S/2      , (-2*S-1)/4},
+              { 0.5*S+0.25, 0.25      , -S/2      },
+              { 0.0       , 0.5       , -S-0.5    },
+              { 0.0       , 0.5       , 0.0       },
+              { -0.5*S    ,-0.5*S+0.25, -0.25     },
+              {  0.5*S    ,-0.5*S+0.25, -0.25     }
+          };
+
+        vertIndexes = new int[][]
+          {
+              {6,0,5,1},   // counterclockwise!
+              {0,7,3,5},
+              {0,6,2,7},
+              {4,3,5,1},
+              {4,2,7,3},
+              {4,1,6,2},
+          };
+
+        bands = new float[][]
+          {
+             {0.04f,17,0.5f,0.2f,5,  2,2},
+             {0.01f, 1,0.5f,0.2f,5,  2,2}
+          };
+
+        bandIndexes = new int[] { 0,0,0,1,1,1 };
+
+        corners = new float[][]
+          {
+              { 0.013f, 0.08f }
+          };
+
+        cornerIndexes = new int[] { 0, 0, 0, 0,-1,0,0,0 };
+
+        centers = new float[][]
+          {
+              { 0.0f,-0.5f, (float)(-S-0.5) }
+          };
+
+        centerIndexes = new int[] { 0,0,0,0,0,0,0,0 };
+
+        numComponents = 8;
+        }
+
+      ///// SKEWB Ultimate BIG ///////////////////////////////////////////////////////////////
+
+      else if( mode==8 )
+        {
+        double S = (SQ5+1)/4;
+
+        vertices = new double[][]
+          {
+              {-S/2     ,-S/2+0.25,     0.25},
+              { S/2     , S/2-0.25,    -0.25},
+              {-S       ,     0.00,     0.00},
+              {     0.25, S/2     ,-S/2-0.25},
+              {-S/2     ,-S/2-0.25,     0.25},
+              { S/2+0.25,    -0.25,-S/2     },
+              {-S       ,    -0.50,     0.00},
+              {     0.50,     0.00,-S       },
+              {-S  +0.25, S/2     ,-S/2-0.25},
+              {     0.25,-S/2-0.50,-S/2+0.25},
+              {-S/2     ,-S/2-0.25,-S  -0.25}
+          };
+
+        vertIndexes = new int[][]
+          {
+              {0,1,3,8,2},   // counterclockwise!
+              {0,4,9,5,1},
+              { 0,2,6,4},
+              { 1,5,7,3},
+              {10,9,4,6},
+              {10,9,5,7},
+              {10,8,3,7},
+              {10,8,2,6}
+          };
+
+        bands = new float[][]
+          {
+             {0.04f,17,0.5f,0.2f,5,  2,2},
+             {0.04f,17,0.5f,0.2f,5,  2,2},
+             {0.01f, 1,0.5f,0.2f,5,  2,2}
+          };
+
+        bandIndexes = new int[] { 0,0,1,1,2,2,2,2 };
+
+        corners = new float[][]
+          {
+              { 0.013f, 0.08f }
+          };
+
+        cornerIndexes = new int[] { 0,0,0,0,0,0,0,0,0,0,-1 };
+
+        centers = new float[][]
+          {
+              { (float)(-S/2), 0.25f, (float)(-S/2-0.5) }
+          };
+
+        centerIndexes = new int[] { 0,0,0,0,0,0,0,0,0,0,0 };
+
+        numComponents = 8;
+        }
+
+      ///// END DEFINITIONS /////////////////////////////////////////////////////////////////
+
       FactoryCubit factory = FactoryCubit.getInstance();
 
       factory.clear();
