commit a15078bb261e36494cefe246b3c4c7895d6752c3
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Oct 16 17:31:32 2020 +0100

    Report to Crashlytics if we fail to restore preferencees (2)

diff --git a/src/main/java/org/distorted/objects/Cubit.java b/src/main/java/org/distorted/objects/Cubit.java
index f5443fb3..0cfe6daf 100644
--- a/src/main/java/org/distorted/objects/Cubit.java
+++ b/src/main/java/org/distorted/objects/Cubit.java
@@ -188,15 +188,7 @@ class Cubit
       return mQuatIndex;
       }
 
-    return -1;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  int returnPreferences(SharedPreferences preferences)
-    {
-    String number = mOrigPosition.get0()+"_"+mOrigPosition.get1()+"_"+mOrigPosition.get2();
-    return preferences.getInt("q_"+number, 0);
+    return -mQuatIndex;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/TwistyObject.java b/src/main/java/org/distorted/objects/TwistyObject.java
index 9e87ad4b..492e1de5 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -109,6 +109,7 @@ public abstract class TwistyObject extends DistortedNode
   private Dynamic1D mRotationAngle;
   private Static3D mRotationAxis;
   private Static3D mObjectScale;
+  private int[] mQuatDebug;
 
   float[] mRowChances;
   Static1D mRotationAngleStatic, mRotationAngleMiddle, mRotationAngleFinal;
@@ -143,6 +144,8 @@ public abstract class TwistyObject extends DistortedNode
     CUTS = getCuts(mNumLayers);
     NUM_CUTS = CUTS.length;
 
+    mQuatDebug = new int[NUM_CUBITS];
+
     if( mObjectScreenRatio>MAX_SIZE_CHANGE) mObjectScreenRatio = MAX_SIZE_CHANGE;
     if( mObjectScreenRatio<MIN_SIZE_CHANGE) mObjectScreenRatio = MIN_SIZE_CHANGE;
 
@@ -440,27 +443,41 @@ public abstract class TwistyObject extends DistortedNode
     {
     for(int i=0; i<NUM_CUBITS; i++)
       {
-      int index = CUBITS[i].restorePreferences(preferences);
+      mQuatDebug[i] = CUBITS[i].restorePreferences(preferences);
 
-      if( index<0 )
+      if( mQuatDebug[i]<0 )
         {
-        String debug = mList.name();
-
         for(int j=0; j<NUM_CUBITS; j++)
           {
-          debug += (CUBITS[i].returnPreferences(preferences)+" ");
           CUBITS[j].modifyCurrentPosition(QUATS[0]);
           mMesh.setEffectAssociation(j, CUBITS[j].computeAssociation(),0);
           }
-
-        FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
-        crashlytics.log("failed to restore preferences: "+debug);
+        recordQuatsState("Failed to restorePreferences");
 
         break;
         }
 
-      mMesh.setEffectAssociation(i, CUBITS[i].computeAssociation(),index);
+      mMesh.setEffectAssociation(i, CUBITS[i].computeAssociation(),mQuatDebug[i]);
+      }
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void recordQuatsState(String message)
+    {
+    StringBuilder quats = new StringBuilder();
+
+    for(int j=0; j<NUM_CUBITS; j++)
+      {
+      quats.append(mQuatDebug[j]);
+      quats.append(" ");
       }
+
+    Exception ex = new Exception(message);
+    FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
+    crashlytics.setCustomKey("quats" , quats.toString());
+    crashlytics.setCustomKey("object", mList.name()+"_"+mNumLayers );
+    crashlytics.recordException(ex);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
