commit 8197c92dd97b5130d6b9b88e78203bd593a68d52
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Apr 10 00:16:29 2019 +0100

    App: minor.

diff --git a/src/main/java/org/distorted/magic/RubikCube.java b/src/main/java/org/distorted/magic/RubikCube.java
index 248c189a..1e780938 100644
--- a/src/main/java/org/distorted/magic/RubikCube.java
+++ b/src/main/java/org/distorted/magic/RubikCube.java
@@ -393,7 +393,7 @@ class RubikCube
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    float getSize()
+    int getSize()
       {
       return mSize;
       }
diff --git a/src/main/java/org/distorted/magic/RubikRenderer.java b/src/main/java/org/distorted/magic/RubikRenderer.java
index 907ff220..8f2cb935 100644
--- a/src/main/java/org/distorted/magic/RubikRenderer.java
+++ b/src/main/java/org/distorted/magic/RubikRenderer.java
@@ -71,8 +71,6 @@ class RubikRenderer implements GLSurfaceView.Renderer, EffectListener
       mFinishDragAccumulated = false;
 
       mCanRotate = true;
-
-      mCube = new RubikCube( RubikActivity.DEFAULT_SIZE, mMove, mScale, mQuatCurrent, mQuatAccumulated);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -164,62 +162,87 @@ class RubikRenderer implements GLSurfaceView.Renderer, EffectListener
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    private float computeFOV(float cameraDistance, int screenHeight)
-      {
-      double halfFOVInRadians = Math.atan( screenHeight/(2*cameraDistance) );
-      return (float)(2*halfFOVInRadians*(180/Math.PI));
-      }
+   private float computeFOV(float cameraDistance, int screenHeight)
+     {
+     double halfFOVInRadians = Math.atan( screenHeight/(2*cameraDistance) );
+     return (float)(2*halfFOVInRadians*(180/Math.PI));
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // no this will not race with onDrawFrame
 
-    void finishRotation()
-      {
-      mFinishRotation = true;
-      }
+   void finishRotation()
+     {
+     mFinishRotation = true;
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    float returnCubeSizeInScreenSpace()
-      {
-      return mCubeSizeInScreenSpace;
-      }
+   void createCube(int newSize)
+     {
+     int oldSize = mCube==null ? 0 : mCube.getSize();
+
+     if( oldSize!=newSize )
+       {
+       if( mCube!=null )
+         {
+         mScreen.detachAll();
+         }
+
+       mCube = new RubikCube(newSize, mMove, mScale, mQuatCurrent, mQuatAccumulated);
+       mCube.attachToScreen(mScreen);
+       }
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    boolean canRotate()
-      {
-      return mCanRotate;
-      }
+   void scrambleCube()
+     {
+
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    RubikCube getCube()
-      {
-      return mCube;
-      }
+   float returnCubeSizeInScreenSpace()
+     {
+     return mCubeSizeInScreenSpace;
+     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+   boolean canRotate()
+     {
+     return mCanRotate;
+     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+   RubikCube getCube()
+     {
+     return mCube;
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Initial rotation of the cube. Something semi-random that looks good.
 
-    Static4D initializeQuat()
-      {
-      return new Static4D(-0.25189602f,0.3546389f,0.009657208f,0.90038127f);
-      }
+   Static4D initializeQuat()
+     {
+     return new Static4D(-0.25189602f,0.3546389f,0.009657208f,0.90038127f);
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    void setQuatCurrent(Static4D current)
-      {
-      mTempCurrent.set(current);
-      mFinishDragCurrent = true;
-      }
+   void setQuatCurrent(Static4D current)
+     {
+     mTempCurrent.set(current);
+     mFinishDragCurrent = true;
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    void setQuatAccumulated(Static4D accumulated)
-      {
-      mTempAccumulated.set(accumulated);
-      mFinishDragAccumulated = true;
-      }
+   void setQuatAccumulated(Static4D accumulated)
+     {
+     mTempAccumulated.set(accumulated);
+     mFinishDragAccumulated = true;
+     }
 }
diff --git a/src/main/java/org/distorted/magic/RubikSurfaceView.java b/src/main/java/org/distorted/magic/RubikSurfaceView.java
index ca446443..6b68eb7b 100644
--- a/src/main/java/org/distorted/magic/RubikSurfaceView.java
+++ b/src/main/java/org/distorted/magic/RubikSurfaceView.java
@@ -32,6 +32,10 @@ import org.distorted.library.type.Static4D;
 
 class RubikSurfaceView extends GLSurfaceView
 {
+    // Moving the finger from the middle of the vertical screen to the right edge will rotate a
+    // given face by SWIPING_SENSITIVITY/2 degrees.
+    private final static int SWIPING_SENSITIVITY = 240;
+
     private final static int NONE   =-1;
     private final static int FRONT  = 0;  // has to be 6 consecutive ints
     private final static int BACK   = 1;  // FRONT ... BOTTOM
@@ -41,7 +45,7 @@ class RubikSurfaceView extends GLSurfaceView
     private final static int BOTTOM = 5;  //
 
     static final int VECTX = 0;  //
-    static final int VECTY = 1;  // dont change this
+    static final int VECTY = 1;  // don't change this
     static final int VECTZ = 2;  //
 
     private static final int[] VECT = {VECTX,VECTY,VECTZ};
@@ -77,6 +81,7 @@ class RubikSurfaceView extends GLSurfaceView
         mScreenWidth = mScreenHeight = mScreenMin = 0;
 
         mRenderer = new RubikRenderer(this);
+        mRenderer.createCube(RubikActivity.DEFAULT_SIZE);
         mCube = mRenderer.getCube();
 
         mQuatCurrent     = new Static4D(0,0,0,1);
@@ -89,13 +94,6 @@ class RubikSurfaceView extends GLSurfaceView
         }
       }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-    public RubikRenderer getRenderer()
-      {
-      return mRenderer;
-      }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     @Override
@@ -168,14 +166,14 @@ class RubikSurfaceView extends GLSurfaceView
 
     void setNewCubeSize(int newCubeSize)
       {
-      android.util.Log.e("view", "new size="+newCubeSize);
+      mRenderer.createCube(newCubeSize);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     void scrambleCube()
       {
-      android.util.Log.e("view", "scrambling...");
+      mRenderer.scrambleCube();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -254,8 +252,6 @@ class RubikSurfaceView extends GLSurfaceView
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// 240 --> moving finger from the middle of the vertical screen to the right edge will rotate a
-// given face by 240/2 = 120 degrees.
 
     private void continueRotation(int x, int y)
       {
@@ -270,7 +266,7 @@ class RubikSurfaceView extends GLSurfaceView
       int sign = retFaceRotationSign(mLastTouchedFace);
       float angle = (mRotationVect==xAxis ? mDiff[yAxis] : -mDiff[xAxis]);
 
-      mCube.continueRotation(240.0f*sign*angle/mScreenMin);
+      mCube.continueRotation(SWIPING_SENSITIVITY*sign*angle/mScreenMin);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
