commit f5c134c39d77faa30a55e3778d1e11f75f73542c
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Dec 11 11:28:02 2020 +0100

    Fixes for the Rex Cube (still doesn't work)

diff --git a/src/main/java/org/distorted/main/RubikPreRender.java b/src/main/java/org/distorted/main/RubikPreRender.java
index 1483205f..abd17412 100644
--- a/src/main/java/org/distorted/main/RubikPreRender.java
+++ b/src/main/java/org/distorted/main/RubikPreRender.java
@@ -382,7 +382,7 @@ public class RubikPreRender implements EffectController
     final RubikScores scores = RubikScores.getInstance();
     int numWins = scores.incrementNumWins();
 
-    if( numWins==8 || numWins==35 || numWins==100 || numWins==200)
+    if( numWins==7 || numWins==30 || numWins==100 || numWins==200)
       {
       final long timeBegin = System.currentTimeMillis();
       final RubikActivity act = (RubikActivity)mView.getContext();
diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index 8521327f..1f519e51 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -1178,8 +1178,8 @@ class FactoryCubit
     final float D = 0.5f - REX_D;
     final float F = H*D;
 
-    Static3D move  = new Static3D(0.0f, 0.5f - F, 0.0f);
-    Static3D center= new Static3D(0.0f, F, 0.0f);
+    Static3D move  = new Static3D(0.0f,   -F, 0.0f);
+    Static3D center= new Static3D(0.0f, 0.0f, 0.0f);
     Static3D axisX = new Static3D(1.0f, 0.0f, 0.0f);
     Static3D axisY = new Static3D(0.0f, 1.0f, 0.0f);
 
@@ -1188,12 +1188,12 @@ class FactoryCubit
 
     VertexEffect[] effect = new VertexEffect[3];
 
-    effect[0] = new VertexEffectRotate(angle180, axisY, center);
-    effect[1] = new VertexEffectRotate(angle90 , axisX, center);
-    effect[2] = new VertexEffectMove(move);
+    effect[0] = new VertexEffectMove(move);
+    effect[1] = new VertexEffectRotate(angle180, axisY, center);
+    effect[2] = new VertexEffectRotate(angle90 , axisX, center);
 
-    effect[0].setMeshAssociation(10,-1);  // meshes 1 & 3
     effect[1].setMeshAssociation(10,-1);  // meshes 1 & 3
+    effect[2].setMeshAssociation(10,-1);  // meshes 1 & 3
 
     return effect;
     }
@@ -1202,16 +1202,12 @@ class FactoryCubit
 
   VertexEffect[] createVertexEffectsRexCorner()
     {
-    float F = SQ3/6*(1.0f-2*REX_D);
-    Static3D move  = new Static3D(F,F,0.0f);
     Static3D center= new Static3D(0.0f, 0.0f, 0.0f);
     Static3D axisZ = new Static3D(0.0f, 0.0f, 1.0f);
     Static1D angle = new Static1D(45);
 
-    VertexEffect[] effect = new VertexEffect[2];
-
+    VertexEffect[] effect = new VertexEffect[1];
     effect[0] = new VertexEffectRotate(angle, axisZ, center);
-    effect[1] = new VertexEffectMove(move);
 
     return effect;
     }
diff --git a/src/main/java/org/distorted/objects/TwistyRex.java b/src/main/java/org/distorted/objects/TwistyRex.java
index 0a8f37c2..d1838f67 100644
--- a/src/main/java/org/distorted/objects/TwistyRex.java
+++ b/src/main/java/org/distorted/objects/TwistyRex.java
@@ -36,6 +36,7 @@ import org.distorted.main.RubikSurfaceView;
 import java.util.Random;
 
 import static org.distorted.effects.scramble.ScrambleEffect.START_AXIS;
+import static org.distorted.objects.FactoryCubit.REX_D;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -191,54 +192,54 @@ public class TwistyRex extends TwistyObject
   Static3D[] getCubitPositions(int numLayers)
     {
     final float DIST = 0.50f;
-    final float E    = SQ3/3;
+    final float DIST2= SQ3/6*(1.0f-2*REX_D);
 
     final Static3D[] CENTERS = new Static3D[42];
 
-    CENTERS[ 0] = new Static3D( +DIST  , +DIST*E, +DIST*E);
-    CENTERS[ 1] = new Static3D( +DIST  , +DIST*E, -DIST*E);
-    CENTERS[ 2] = new Static3D( +DIST  , -DIST*E, -DIST*E);
-    CENTERS[ 3] = new Static3D( +DIST  , -DIST*E, +DIST*E);
-    CENTERS[ 4] = new Static3D( -DIST  , +DIST*E, +DIST*E);
-    CENTERS[ 5] = new Static3D( -DIST  , +DIST*E, -DIST*E);
-    CENTERS[ 6] = new Static3D( -DIST  , -DIST*E, -DIST*E);
-    CENTERS[ 7] = new Static3D( -DIST  , -DIST*E, +DIST*E);
-    CENTERS[ 8] = new Static3D( +DIST*E, +DIST  , +DIST*E);
-    CENTERS[ 9] = new Static3D( +DIST*E, +DIST  , -DIST*E);
-    CENTERS[10] = new Static3D( -DIST*E, +DIST  , -DIST*E);
-    CENTERS[11] = new Static3D( -DIST*E, +DIST  , +DIST*E);
-    CENTERS[12] = new Static3D( +DIST*E, -DIST  , +DIST*E);
-    CENTERS[13] = new Static3D( +DIST*E, -DIST  , -DIST*E);
-    CENTERS[14] = new Static3D( -DIST*E, -DIST  , -DIST*E);
-    CENTERS[15] = new Static3D( -DIST*E, -DIST  , +DIST*E);
-    CENTERS[16] = new Static3D( +DIST*E, +DIST*E, +DIST  );
-    CENTERS[17] = new Static3D( +DIST*E, -DIST*E, +DIST  );
-    CENTERS[18] = new Static3D( -DIST*E, -DIST*E, +DIST  );
-    CENTERS[19] = new Static3D( -DIST*E, +DIST*E, +DIST  );
-    CENTERS[20] = new Static3D( +DIST*E, +DIST*E, -DIST  );
-    CENTERS[21] = new Static3D( +DIST*E, -DIST*E, -DIST  );
-    CENTERS[22] = new Static3D( -DIST*E, -DIST*E, -DIST  );
-    CENTERS[23] = new Static3D( -DIST*E, +DIST*E, -DIST  );
-
-    CENTERS[24] = new Static3D( +DIST  , +0.00f , +0.00f );
-    CENTERS[25] = new Static3D( -DIST  , +0.00f , +0.00f );
-    CENTERS[26] = new Static3D( +0.00f , +DIST  , +0.00f );
-    CENTERS[27] = new Static3D( +0.00f , -DIST  , +0.00f );
-    CENTERS[28] = new Static3D( +0.00f , +0.00f , +DIST  );
-    CENTERS[29] = new Static3D( +0.00f , +0.00f , -DIST  );
-
-    CENTERS[30] = new Static3D( +0.00f , +DIST  , +DIST  );
-    CENTERS[31] = new Static3D( +DIST  , +0.00f , +DIST  );
-    CENTERS[32] = new Static3D( +0.00f , -DIST  , +DIST  );
-    CENTERS[33] = new Static3D( -DIST  , +0.00f , +DIST  );
-    CENTERS[34] = new Static3D( +DIST  , +DIST  , +0.00f );
-    CENTERS[35] = new Static3D( +DIST  , -DIST  , +0.00f );
-    CENTERS[36] = new Static3D( -DIST  , -DIST  , +0.00f );
-    CENTERS[37] = new Static3D( -DIST  , +DIST  , +0.00f );
-    CENTERS[38] = new Static3D( +0.00f , +DIST  , -DIST  );
-    CENTERS[39] = new Static3D( +DIST  , +0.00f , -DIST  );
-    CENTERS[40] = new Static3D( +0.00f , -DIST  , -DIST  );
-    CENTERS[41] = new Static3D( -DIST  , +0.00f , -DIST  );
+    CENTERS[ 0] = new Static3D( +DIST , +DIST2, +DIST2);
+    CENTERS[ 1] = new Static3D( +DIST , +DIST2, -DIST2);
+    CENTERS[ 2] = new Static3D( +DIST , -DIST2, -DIST2);
+    CENTERS[ 3] = new Static3D( +DIST , -DIST2, +DIST2);
+    CENTERS[ 4] = new Static3D( -DIST , +DIST2, +DIST2);
+    CENTERS[ 5] = new Static3D( -DIST , +DIST2, -DIST2);
+    CENTERS[ 6] = new Static3D( -DIST , -DIST2, -DIST2);
+    CENTERS[ 7] = new Static3D( -DIST , -DIST2, +DIST2);
+    CENTERS[ 8] = new Static3D( +DIST2, +DIST , +DIST2);
+    CENTERS[ 9] = new Static3D( +DIST2, +DIST , -DIST2);
+    CENTERS[10] = new Static3D( -DIST2, +DIST , -DIST2);
+    CENTERS[11] = new Static3D( -DIST2, +DIST , +DIST2);
+    CENTERS[12] = new Static3D( +DIST2, -DIST , +DIST2);
+    CENTERS[13] = new Static3D( +DIST2, -DIST , -DIST2);
+    CENTERS[14] = new Static3D( -DIST2, -DIST , -DIST2);
+    CENTERS[15] = new Static3D( -DIST2, -DIST , +DIST2);
+    CENTERS[16] = new Static3D( +DIST2, +DIST2, +DIST );
+    CENTERS[17] = new Static3D( +DIST2, -DIST2, +DIST );
+    CENTERS[18] = new Static3D( -DIST2, -DIST2, +DIST );
+    CENTERS[19] = new Static3D( -DIST2, +DIST2, +DIST );
+    CENTERS[20] = new Static3D( +DIST2, +DIST2, -DIST );
+    CENTERS[21] = new Static3D( +DIST2, -DIST2, -DIST );
+    CENTERS[22] = new Static3D( -DIST2, -DIST2, -DIST );
+    CENTERS[23] = new Static3D( -DIST2, +DIST2, -DIST );
+
+    CENTERS[24] = new Static3D( +DIST , +0.00f, +0.00f);
+    CENTERS[25] = new Static3D( -DIST , +0.00f, +0.00f);
+    CENTERS[26] = new Static3D( +0.00f, +DIST , +0.00f);
+    CENTERS[27] = new Static3D( +0.00f, -DIST , +0.00f);
+    CENTERS[28] = new Static3D( +0.00f, +0.00f, +DIST );
+    CENTERS[29] = new Static3D( +0.00f, +0.00f, -DIST );
+
+    CENTERS[30] = new Static3D( +0.00f, +DIST , +DIST );
+    CENTERS[31] = new Static3D( +DIST , +0.00f, +DIST );
+    CENTERS[32] = new Static3D( +0.00f, -DIST , +DIST );
+    CENTERS[33] = new Static3D( -DIST , +0.00f, +DIST );
+    CENTERS[34] = new Static3D( +DIST , +DIST , +0.00f);
+    CENTERS[35] = new Static3D( +DIST , -DIST , +0.00f);
+    CENTERS[36] = new Static3D( -DIST , -DIST , +0.00f);
+    CENTERS[37] = new Static3D( -DIST , +DIST , +0.00f);
+    CENTERS[38] = new Static3D( +0.00f, +DIST , -DIST );
+    CENTERS[39] = new Static3D( +DIST , +0.00f, -DIST );
+    CENTERS[40] = new Static3D( +0.00f, -DIST , -DIST );
+    CENTERS[41] = new Static3D( -DIST , +0.00f, -DIST );
 
     return CENTERS;
     }
@@ -316,12 +317,12 @@ public class TwistyRex extends TwistyObject
     {
     MeshBase mesh;
 
-    if( cubit<12 )
+    if( cubit<24 )
       {
       if( mCornerMesh==null ) mCornerMesh = FactoryCubit.getInstance().createRexCornerMesh();
       mesh = mCornerMesh.copy(true);
       }
-    else if( cubit<18 )
+    else if( cubit<30 )
       {
       if( mFaceMesh==null ) mFaceMesh = FactoryCubit.getInstance().createRexFaceMesh();
       mesh = mFaceMesh.copy(true);
