commit 771f6dfa312dfbe7574d805abad483e478ff5eb7
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat Sep 18 22:09:31 2021 +0200

    Move actual solving the object to PreRender.
    
    (before we had a 'solveObejct()' in preRender already, but that one just starts the Solve Effect!)

diff --git a/src/main/java/org/distorted/effects/EffectController.java b/src/main/java/org/distorted/effects/EffectController.java
index 873566dc..856dc46b 100644
--- a/src/main/java/org/distorted/effects/EffectController.java
+++ b/src/main/java/org/distorted/effects/EffectController.java
@@ -21,7 +21,6 @@ package org.distorted.effects;
 
 import org.distorted.helpers.MovesFinished;
 import org.distorted.library.message.EffectListener;
-import org.distorted.main.RubikPreRender;
 import org.distorted.objects.TwistyObject;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -32,4 +31,5 @@ public interface EffectController extends EffectListener
   TwistyObject getOldObject();
   TwistyObject getObject();
   int getNumScrambles();
+  void solve();
   }
diff --git a/src/main/java/org/distorted/effects/scramble/ScrambleEffect.java b/src/main/java/org/distorted/effects/scramble/ScrambleEffect.java
index 296c914a..6723fed3 100644
--- a/src/main/java/org/distorted/effects/scramble/ScrambleEffect.java
+++ b/src/main/java/org/distorted/effects/scramble/ScrambleEffect.java
@@ -25,7 +25,6 @@ import org.distorted.library.effect.Effect;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedScreen;
 import org.distorted.library.message.EffectListener;
-import org.distorted.main.RubikPreRender;
 import org.distorted.effects.EffectController;
 import org.distorted.objects.ObjectList;
 import org.distorted.objects.TwistyObject;
@@ -267,7 +266,7 @@ public abstract class ScrambleEffect extends BaseEffect implements EffectListene
     mObject    = cont.getObject();
     mController= cont;
 
-    mObject.solve();
+    mController.solve();
 
     mBasicAngle = mObject.getBasicAngle();
 
diff --git a/src/main/java/org/distorted/effects/solve/SolveEffect.java b/src/main/java/org/distorted/effects/solve/SolveEffect.java
index 98bf2e78..ed2f1d4e 100644
--- a/src/main/java/org/distorted/effects/solve/SolveEffect.java
+++ b/src/main/java/org/distorted/effects/solve/SolveEffect.java
@@ -66,7 +66,7 @@ public abstract class SolveEffect extends BaseEffect implements EffectListener
   private EffectController mController;
   private int mDuration;
   private int mEffectReturned;
-  private int[] mCubeEffectNumber, mNodeEffectNumber;
+  private final int[] mCubeEffectNumber, mNodeEffectNumber;
   private int mPhase;
 
   TwistyObject mObject;
@@ -130,7 +130,7 @@ public abstract class SolveEffect extends BaseEffect implements EffectListener
       {
       case 0: mEffectReturned = 0;
               mPhase          = 1;
-              mObject.solve();
+              mController.solve();
               createEffectsPhase1(mDuration);
               assignEffects(mPhase);
               break;
diff --git a/src/main/java/org/distorted/main/RubikPreRender.java b/src/main/java/org/distorted/main/RubikPreRender.java
index ce689035..205d3e57 100644
--- a/src/main/java/org/distorted/main/RubikPreRender.java
+++ b/src/main/java/org/distorted/main/RubikPreRender.java
@@ -56,7 +56,7 @@ public class RubikPreRender implements EffectController, TwistyPreRender
   private final RubikSurfaceView mView;
   private boolean mFinishRotation, mRemoveRotation, mRemovePatternRotation, mAddRotation,
                   mSetQuat, mChangeObject, mSetupObject, mSolveObject, mScrambleObject,
-                  mInitializeObject, mSetTextureMap, mResetAllTextureMaps;
+                  mInitializeObject, mSetTextureMap, mResetAllTextureMaps, mSolve;
   private boolean mUIBlocked, mTouchBlocked;
   private boolean mIsSolved;
   private ObjectList mNextObject;
@@ -94,6 +94,7 @@ public class RubikPreRender implements EffectController, TwistyPreRender
     mChangeObject         = false;
     mSetupObject          = false;
     mSolveObject          = false;
+    mSolve                = false;
     mScrambleObject       = false;
 
     mOldObject = null;
@@ -299,6 +300,14 @@ public class RubikPreRender implements EffectController, TwistyPreRender
     doEffectNow( BaseEffect.Type.SOLVE );
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void solveNow()
+    {
+    mSolve = false;
+    mNewObject.solve();
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void initializeObjectNow()
@@ -599,6 +608,7 @@ public class RubikPreRender implements EffectController, TwistyPreRender
 
   void preRender()
     {
+    if( mSolve                 ) solveNow();
     if( mSetQuat               ) setQuatNow();
     if( mFinishRotation        ) finishRotationNow();
     if( mRemoveRotation        ) removeRotationNow();
@@ -655,6 +665,7 @@ public class RubikPreRender implements EffectController, TwistyPreRender
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// this starts the Solve Effect
 
   public void solveObject()
     {
@@ -664,6 +675,14 @@ public class RubikPreRender implements EffectController, TwistyPreRender
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// this only sets the cubits state to solved
+
+  public void solve()
+    {
+    mSolve = true;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void resetAllTextureMaps()
diff --git a/src/main/java/org/distorted/objects/Cubit.java b/src/main/java/org/distorted/objects/Cubit.java
index 90d44562..02207cbd 100644
--- a/src/main/java/org/distorted/objects/Cubit.java
+++ b/src/main/java/org/distorted/objects/Cubit.java
@@ -123,13 +123,6 @@ class Cubit
       }
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  float[] getOrigPosition()
-    {
-    return mOrigPosition;
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   void modifyCurrentPosition(Static4D quat)
diff --git a/src/main/java/org/distorted/tutorials/TutorialPreRender.java b/src/main/java/org/distorted/tutorials/TutorialPreRender.java
index 990508f2..95075191 100644
--- a/src/main/java/org/distorted/tutorials/TutorialPreRender.java
+++ b/src/main/java/org/distorted/tutorials/TutorialPreRender.java
@@ -38,7 +38,7 @@ public class TutorialPreRender implements EffectController, TwistyPreRender
   private final TutorialSurfaceView mView;
   private boolean mFinishRotation, mRemoveRotation, mAddRotation,
                   mSetQuat, mChangeObject, mSetupObject, mSolveObject, mScrambleObject,
-                  mInitializeObject, mResetAllTextureMaps, mRemovePatternRotation;
+                  mInitializeObject, mResetAllTextureMaps, mRemovePatternRotation, mSolve;
   private boolean mUIBlocked, mTouchBlocked;
   private boolean mIsSolved;
   private ObjectList mNextObject;
@@ -66,6 +66,7 @@ public class TutorialPreRender implements EffectController, TwistyPreRender
     mChangeObject   = false;
     mSetupObject    = false;
     mSolveObject    = false;
+    mSolve          = false;
     mScrambleObject = false;
 
     mOldObject      = null;
@@ -238,6 +239,14 @@ public class TutorialPreRender implements EffectController, TwistyPreRender
     doEffectNow( BaseEffect.Type.SOLVE );
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void solveNow()
+    {
+    mSolve = false;
+    mNewObject.solve();
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void initializeObjectNow()
@@ -309,6 +318,7 @@ public class TutorialPreRender implements EffectController, TwistyPreRender
 
   void preRender()
     {
+    if( mSolve                 ) solveNow();
     if( mSetQuat               ) setQuatNow();
     if( mFinishRotation        ) finishRotationNow();
     if( mRemoveRotation        ) removeRotationNow();
@@ -403,6 +413,7 @@ public class TutorialPreRender implements EffectController, TwistyPreRender
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// this starts the SolveEffect
 
   public void solveObject()
     {
@@ -412,6 +423,14 @@ public class TutorialPreRender implements EffectController, TwistyPreRender
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// this only solves the object
+
+  public void solve()
+    {
+    mSolve = true;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void scrambleObject(int num)
