commit 6a224bdcd20de792a885ac69a9b3d1f7b9f2fafb
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Oct 20 00:14:24 2020 +0100

    1) Progress with the Ivy
    2) further refine defense against failing to restore preferences.

diff --git a/src/main/java/org/distorted/objects/Cubit.java b/src/main/java/org/distorted/objects/Cubit.java
index f0ea0fba..0cfe6daf 100644
--- a/src/main/java/org/distorted/objects/Cubit.java
+++ b/src/main/java/org/distorted/objects/Cubit.java
@@ -187,12 +187,8 @@ class Cubit
       modifyCurrentPosition(mParent.QUATS[mQuatIndex]);
       return mQuatIndex;
       }
-    else
-      {
-      int q = mQuatIndex;
-      mQuatIndex = 0;
-      return -q;
-      }
+
+    return -mQuatIndex;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index 8992033d..71653524 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -35,15 +35,14 @@ import org.distorted.library.type.Static4D;
 
 class FactoryCubit
   {
+  static final float IVY_D = 0.02f;
+
   private static final float SQ2 = (float)Math.sqrt(2);
   private static final float SQ3 = (float)Math.sqrt(3);
   private static final float SQ6 = (float)Math.sqrt(6);
 
-  private static final float IVY_D = 0.02f;
-  private static final int   IVY_N = 8;
-
+  private static final int IVY_N = 8;
   private static final Static1D RADIUS = new Static1D(1);
-
   private static FactoryCubit mThis;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -505,7 +504,7 @@ class FactoryCubit
     MeshBase[] meshes = new MeshBase[6];
 
     final float angle = (float)Math.PI/(2*IVY_N);
-    final float CORR  = 1.0f - IVY_D*SQ2;
+    final float CORR  = 1.0f - 2*IVY_D;
     final float DIST  = 0.4f;
     final float DIST2 = -0.5f*CORR;
     final float CORR2 = 0.5f;
@@ -554,7 +553,7 @@ class FactoryCubit
     MeshBase[] meshes = new MeshBase[2];
 
     final float angle = (float)Math.PI/(2*IVY_N);
-    final float CORR  = 1.0f - IVY_D*SQ2;
+    final float CORR  = 0.25f - 0.5f*IVY_D;
     float[] vertices = new float[4*IVY_N];
 
     for(int i=0; i<IVY_N; i++)
@@ -568,8 +567,8 @@ class FactoryCubit
       vertices[2*i+1+2*IVY_N] = CORR*(sin-0.5f);
       }
 
-    float[] bands0 = computeBands(+0.05f,35,0.5f,0.5f,5);
-    float[] bands1 = computeBands(-0.10f,45,0.5f,0.0f,2);
+    float[] bands0 = computeBands(+0.0125f,35,0.125f,0.5f,5);
+    float[] bands1 = computeBands(-0.0250f,45,0.125f,0.0f,2);
 
     meshes[0] = new MeshPolygon(vertices,bands0,0,0);
     meshes[0].setEffectAssociation(0,1,0);
@@ -1008,6 +1007,15 @@ class FactoryCubit
     return effect;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  VertexEffect[] createVertexEffectsIvyFace()
+    {
+    VertexEffect[] effect = new VertexEffect[1];
+    effect[0] = new VertexEffectScale(4.0f);
+    return effect;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // OBJECTS
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1269,17 +1277,9 @@ class FactoryCubit
     for( VertexEffect effect : effects ) mesh.apply(effect);
 
     Static3D center = new Static3D(-0.5f,-0.5f,-0.5f);
-    Static3D[] vertices1 = new Static3D[1];
-    vertices1[0] = new Static3D(+0.0f,+0.0f,+0.0f);
-
-    Static3D[] vertices2 = new Static3D[3];
-    float DIST = IVY_D-1.0f;
-    vertices2[0] = new Static3D( DIST,+0.0f,+0.0f);
-    vertices2[1] = new Static3D(+0.0f, DIST,+0.0f);
-    vertices2[2] = new Static3D(+0.0f,+0.0f, DIST);
-
-    roundCorners(mesh,center,vertices1,0.04f,0.20f);
-  //  roundCorners(mesh,center,vertices2,0.02f,0.20f);
+    Static3D[] vertices = new Static3D[1];
+    vertices[0] = new Static3D(+0.0f,+0.0f,+0.0f);
+    roundCorners(mesh,center,vertices,0.04f,0.20f);
 
     mesh.mergeEffComponents();
 
@@ -1291,14 +1291,8 @@ class FactoryCubit
   MeshBase createIvyFaceMesh()
     {
     MeshBase mesh = createFacesIvyFace();
-
-    float DIST = SQ2*(0.5f-IVY_D);
-    Static3D center = new Static3D(0.0f,0.0f,-0.0f);
-    Static3D[] vertices = new Static3D[2];
-    vertices[0] = new Static3D(+DIST,-DIST,+0.0f);
-    vertices[1] = new Static3D(-DIST,+DIST,+0.0f);
-
-    roundCorners(mesh,center,vertices,0.05f,0.30f);
+    VertexEffect[] effects = createVertexEffectsIvyFace();
+    for( VertexEffect effect : effects ) mesh.apply(effect);
 
     mesh.mergeEffComponents();
     mesh.addEmptyTexComponent();
diff --git a/src/main/java/org/distorted/objects/FactorySticker.java b/src/main/java/org/distorted/objects/FactorySticker.java
index b8c32eed..c18775a0 100644
--- a/src/main/java/org/distorted/objects/FactorySticker.java
+++ b/src/main/java/org/distorted/objects/FactorySticker.java
@@ -24,6 +24,7 @@ import android.graphics.Paint;
 
 import static org.distorted.objects.TwistyObject.TEXTURE_HEIGHT;
 import static org.distorted.objects.TwistyObject.COLOR_BLACK;
+import static org.distorted.objects.FactoryCubit.IVY_D;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -161,23 +162,41 @@ class FactorySticker
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // TODO
 
-  void drawIvyCornerSticker(Canvas canvas, Paint paint, int left, int top, int color, float R)
+  void drawIvyCornerSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke)
     {
     paint.setColor(color);
     paint.setStyle(Paint.Style.FILL);
-
     canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint);
 
+    paint.setColor(COLOR_BLACK);
+    paint.setStyle(Paint.Style.STROKE);
+    paint.setStrokeWidth(stroke);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // TODO
 
-  void drawIvyCenterSticker(Canvas canvas, Paint paint, int left, int top, int color, float R)
+  void drawIvyCenterSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke)
     {
     paint.setColor(color);
     paint.setStyle(Paint.Style.FILL);
-
     canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint);
+
+    paint.setColor(COLOR_BLACK);
+    paint.setStyle(Paint.Style.STROKE);
+    paint.setStrokeWidth(stroke*TEXTURE_HEIGHT);
+
+    float cx = 0.075f*TEXTURE_HEIGHT;
+    float cy = 0.075f*TEXTURE_HEIGHT;
+
+    float c2 = TEXTURE_HEIGHT*(1.0f-0.0f*IVY_D);
+    float halfL = TEXTURE_HEIGHT*(0.7f - 0.5f*IVY_D);
+
+android.util.Log.e("sitck", "left="+left+" top="+top);
+
+    canvas.drawArc( left+cx-halfL, top+cy-halfL, left+cx+halfL, top+cy+halfL, 280, 80, false, paint);
+   // canvas.drawArc( left+c2-halfL, top+c2-halfL, left+c2+halfL, top+c2+halfL,  90, 90, false, paint);
+
+
     }
   }
diff --git a/src/main/java/org/distorted/objects/TwistyIvy.java b/src/main/java/org/distorted/objects/TwistyIvy.java
index eb273c72..11857e46 100644
--- a/src/main/java/org/distorted/objects/TwistyIvy.java
+++ b/src/main/java/org/distorted/objects/TwistyIvy.java
@@ -234,7 +234,7 @@ public class TwistyIvy extends TwistyObject
     {
     int COLORS = FACE_COLORS.length;
     FactorySticker factory = FactorySticker.getInstance();
-    float R = 0.05f;
+    float R = 0.01f;
 
     if( face<COLORS )
       {
diff --git a/src/main/java/org/distorted/objects/TwistyObject.java b/src/main/java/org/distorted/objects/TwistyObject.java
index 21835322..7db622bd 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -466,6 +466,7 @@ public abstract class TwistyObject extends DistortedNode
         {
         for(int j=0; j<NUM_CUBITS; j++)
           {
+          CUBITS[j].mQuatIndex = 0;
           CUBITS[j].modifyCurrentPosition(QUATS[0]);
           mMesh.setEffectAssociation(j, CUBITS[j].computeAssociation(),0);
           }
