commit 5b893eee94efeb4765bc65cc329964693e30b7c9
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Jun 26 01:08:35 2020 +0100

    Object node: size of screenWidth.

diff --git a/src/main/java/org/distorted/effects/objectchange/ObjectChangeEffect.java b/src/main/java/org/distorted/effects/objectchange/ObjectChangeEffect.java
index 101f3742..dac17f4d 100644
--- a/src/main/java/org/distorted/effects/objectchange/ObjectChangeEffect.java
+++ b/src/main/java/org/distorted/effects/objectchange/ObjectChangeEffect.java
@@ -72,8 +72,8 @@ public abstract class ObjectChangeEffect extends BaseEffect implements EffectLis
   private int[] mCubeEffectNumber, mNodeEffectNumber;
   private int[] mEffectFinished;
   private boolean[] mPhaseActive;
-  private RubikObject[] mObject;
 
+  RubikObject[] mObject;
   DistortedScreen mScreen;
   Effect[][] mCubeEffects;
   int[][] mCubeEffectPosition;
diff --git a/src/main/java/org/distorted/effects/objectchange/ObjectChangeEffectRound.java b/src/main/java/org/distorted/effects/objectchange/ObjectChangeEffectRound.java
index 5328d4e6..2b1c8eef 100644
--- a/src/main/java/org/distorted/effects/objectchange/ObjectChangeEffectRound.java
+++ b/src/main/java/org/distorted/effects/objectchange/ObjectChangeEffectRound.java
@@ -26,15 +26,13 @@ import org.distorted.library.type.Dynamic;
 import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.Static3D;
 
-import static org.distorted.objects.RubikObject.NODE_FBO_SIZE;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class ObjectChangeEffectRound extends ObjectChangeEffect
   {
   public int createEffectsPhase0(int duration)
     {
-    float X = NODE_FBO_SIZE /3;
+    float X = mObject[0].getNodeSize()/3.0f;
 
     mCubeEffectPosition[0] = new int[] {2,3};
     mCubeEffects[0]        = new Effect[mCubeEffectPosition[0].length];
@@ -58,7 +56,7 @@ class ObjectChangeEffectRound extends ObjectChangeEffect
 
   public int createEffectsPhase1(int duration)
     {
-    float X = NODE_FBO_SIZE /3;
+    float X = mObject[0].getNodeSize()/3.0f;
 
     mCubeEffectPosition[1] = new int[] {2,3};
     mCubeEffects[1]        = new Effect[mCubeEffectPosition[1].length];
diff --git a/src/main/java/org/distorted/effects/scramble/ScrambleEffect.java b/src/main/java/org/distorted/effects/scramble/ScrambleEffect.java
index 34d2125b..b2fea9a5 100644
--- a/src/main/java/org/distorted/effects/scramble/ScrambleEffect.java
+++ b/src/main/java/org/distorted/effects/scramble/ScrambleEffect.java
@@ -69,11 +69,11 @@ public abstract class ScrambleEffect extends BaseEffect implements EffectListene
   private int mLastVector;
   private long mDurationSingleTurn;
   private Random mRnd;
-  private RubikObject mObject;
   private int mNumAxis;
   private int mBasicAngle;
   private float[] mRowChances;
 
+  RubikObject mObject;
   Effect[] mNodeEffects;
   int[] mNodeEffectPosition;
   Effect[] mCubeEffects;
diff --git a/src/main/java/org/distorted/effects/scramble/ScrambleEffectRotations.java b/src/main/java/org/distorted/effects/scramble/ScrambleEffectRotations.java
index 6b5138c7..38ebc105 100644
--- a/src/main/java/org/distorted/effects/scramble/ScrambleEffectRotations.java
+++ b/src/main/java/org/distorted/effects/scramble/ScrambleEffectRotations.java
@@ -30,8 +30,6 @@ import org.distorted.library.type.Static4D;
 
 import java.util.Random;
 
-import static org.distorted.objects.RubikObject.NODE_FBO_SIZE;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class ScrambleEffectRotations extends ScrambleEffect
@@ -78,7 +76,7 @@ public class ScrambleEffectRotations extends ScrambleEffect
 
     mCubeEffects[0] = new MatrixEffectQuaternion(dq, new Static3D(0,0,0));
 
-    float Z = NODE_FBO_SIZE /3;
+    float Z = mObject.getNodeSize()/3.0f;
 
     Dynamic3D d0 = new Dynamic3D(duration, 0.5f);
     d0.setMode(Dynamic.MODE_PATH);
diff --git a/src/main/java/org/distorted/main/RubikPreRender.java b/src/main/java/org/distorted/main/RubikPreRender.java
index dd59a6d5..52c9da55 100644
--- a/src/main/java/org/distorted/main/RubikPreRender.java
+++ b/src/main/java/org/distorted/main/RubikPreRender.java
@@ -107,7 +107,7 @@ public class RubikPreRender implements EffectListener
     Context con = mView.getContext();
     Resources res = con.getResources();
 
-    mNewObject = object.create(size, mView.getQuat(), moves, res);
+    mNewObject = object.create(size, mView.getQuat(), moves, res, mScreenWidth);
 
     if( mNewObject!=null )
       {
diff --git a/src/main/java/org/distorted/main/RubikRenderer.java b/src/main/java/org/distorted/main/RubikRenderer.java
index 0399caa5..f0fe1a84 100644
--- a/src/main/java/org/distorted/main/RubikRenderer.java
+++ b/src/main/java/org/distorted/main/RubikRenderer.java
@@ -84,12 +84,13 @@ public class RubikRenderer implements GLSurfaceView.Renderer, DistortedLibrary.E
 
    RubikRenderer(RubikSurfaceView v)
      {
-     final float BRIGHTNESS = 0.1f;
+     final float BRIGHTNESS = 0.19f;
 
      mView = v;
      mFPS = new Fps();
      mScreen = new DistortedScreen();
      mScreen.glClearColor(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS, 1.0f);
+     //mScreen.showFPS();
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/RubikCube.java b/src/main/java/org/distorted/objects/RubikCube.java
index c069833b..0975d3ae 100644
--- a/src/main/java/org/distorted/objects/RubikCube.java
+++ b/src/main/java/org/distorted/objects/RubikCube.java
@@ -100,9 +100,9 @@ class RubikCube extends RubikObject
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   RubikCube(int size, Static4D quat, DistortedTexture texture,
-            MeshRectangles mesh, DistortedEffects effects, int[][] moves, Resources res)
+            MeshRectangles mesh, DistortedEffects effects, int[][] moves, Resources res, int scrWidth)
     {
-    super(size, 60, quat, texture, mesh, effects, moves, RubikObjectList.CUBE, res);
+    super(size, 60, quat, texture, mesh, effects, moves, RubikObjectList.CUBE, res, scrWidth);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index 2153a2f0..a487609c 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -54,7 +54,6 @@ public abstract class RubikObject extends DistortedNode
   {
   private static final Static3D CENTER = new Static3D(0,0,0);
   static final int INTERIOR_COLOR = 0xff000000;
-  public static final int NODE_FBO_SIZE = 600;
   private static final int POST_ROTATION_MILLISEC = 500;
   private static final int TEXTURE_HEIGHT = 128;
 
@@ -65,6 +64,7 @@ public abstract class RubikObject extends DistortedNode
   static float OBJECT_SCREEN_RATIO;
 
   private final int NUM_CUBITS;
+  private final int mNodeSize;
   private int mRotRowBitmap;
   private int mRotAxis;
   private Static3D[] mOrigPos;
@@ -90,11 +90,13 @@ public abstract class RubikObject extends DistortedNode
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   RubikObject(int size, int fov, Static4D quat, DistortedTexture nodeTexture, MeshRectangles nodeMesh,
-              DistortedEffects nodeEffects, int[][] moves, RubikObjectList list, Resources res)
+              DistortedEffects nodeEffects, int[][] moves, RubikObjectList list, Resources res, int screenWidth)
     {
     super(nodeTexture,nodeEffects,nodeMesh);
 
-    resizeFBO(NODE_FBO_SIZE, NODE_FBO_SIZE);
+    mNodeSize = screenWidth;
+
+    resizeFBO(mNodeSize, mNodeSize);
 
     mList = list;
     mOrigPos = getCubitPositions(size);
@@ -118,7 +120,7 @@ public abstract class RubikObject extends DistortedNode
     mRotationAngleMiddle = new Static1D(0);
     mRotationAngleFinal  = new Static1D(0);
 
-    float scale = OBJECT_SCREEN_RATIO*NODE_FBO_SIZE/mSize;
+    float scale = OBJECT_SCREEN_RATIO*mNodeSize/mSize;
     mScaleEffect = new MatrixEffectScale(new Static3D(scale,scale,scale));
     mQuatEffect  = new MatrixEffectQuaternion(quat, CENTER);
 
@@ -616,6 +618,13 @@ public abstract class RubikObject extends DistortedNode
     return speed> 1.3f ? NEAREST*(angle>0 ? 1:-1) : 0;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getNodeSize()
+    {
+    return mNodeSize;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public RubikObjectList getObjectList()
diff --git a/src/main/java/org/distorted/objects/RubikObjectList.java b/src/main/java/org/distorted/objects/RubikObjectList.java
index 99cda2e0..38ed9892 100644
--- a/src/main/java/org/distorted/objects/RubikObjectList.java
+++ b/src/main/java/org/distorted/objects/RubikObjectList.java
@@ -322,7 +322,7 @@ public enum RubikObjectList
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public RubikObject create(int size, Static4D quat, int[][] moves, Resources res)
+  public RubikObject create(int size, Static4D quat, int[][] moves, Resources res, int scrWidth)
     {
     DistortedTexture texture = new DistortedTexture();
     DistortedEffects effects = new DistortedEffects();
@@ -330,8 +330,8 @@ public enum RubikObjectList
 
     switch(ordinal())
       {
-      case 0: return new RubikCube    (size, quat, texture, mesh, effects, moves, res);
-      case 1: return new RubikPyraminx(size, quat, texture, mesh, effects, moves, res);
+      case 0: return new RubikCube    (size, quat, texture, mesh, effects, moves, res, scrWidth);
+      case 1: return new RubikPyraminx(size, quat, texture, mesh, effects, moves, res, scrWidth);
       }
 
     return null;
diff --git a/src/main/java/org/distorted/objects/RubikPyraminx.java b/src/main/java/org/distorted/objects/RubikPyraminx.java
index 1f01f079..50bf3d8c 100644
--- a/src/main/java/org/distorted/objects/RubikPyraminx.java
+++ b/src/main/java/org/distorted/objects/RubikPyraminx.java
@@ -100,9 +100,9 @@ public class RubikPyraminx extends RubikObject
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   RubikPyraminx(int size, Static4D quat, DistortedTexture texture,
-                MeshRectangles mesh, DistortedEffects effects, int[][] moves, Resources res)
+                MeshRectangles mesh, DistortedEffects effects, int[][] moves, Resources res, int scrWidth)
     {
-    super(size, 30, quat, texture, mesh, effects, moves, RubikObjectList.PYRA, res);
+    super(size, 30, quat, texture, mesh, effects, moves, RubikObjectList.PYRA, res, scrWidth);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/states/RubikStatePlay.java b/src/main/java/org/distorted/states/RubikStatePlay.java
index 1efb218f..ad26e6af 100644
--- a/src/main/java/org/distorted/states/RubikStatePlay.java
+++ b/src/main/java/org/distorted/states/RubikStatePlay.java
@@ -299,6 +299,7 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
       public void onClick(View v)
         {
         act.getPreRender().solveObject();
+        mMoves.clear();
         }
       });
     }
