commit 8bbac3c2807e215691e4e0d255617970c5f2263b
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Jun 21 13:02:19 2020 +0100

    Improve rotations of the Pyraminx; synchronize begin/add/finish Rotation in the RubikObject (now it is possible to begin new rotation when an old one didn't finish yet!)

diff --git a/src/main/java/org/distorted/objects/RubikObject.java b/src/main/java/org/distorted/objects/RubikObject.java
index 4fa4629e..963ac90e 100644
--- a/src/main/java/org/distorted/objects/RubikObject.java
+++ b/src/main/java/org/distorted/objects/RubikObject.java
@@ -239,7 +239,7 @@ public abstract class RubikObject extends DistortedNode
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void setupPosition(int[][] moves)
+  private synchronized void setupPosition(int[][] moves)
     {
     if( moves!=null )
       {
@@ -366,7 +366,7 @@ public abstract class RubikObject extends DistortedNode
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void restorePreferences(SharedPreferences preferences)
+  public synchronized void restorePreferences(SharedPreferences preferences)
     {
     for(int i=0; i<NUM_CUBITS; i++)
       {
@@ -398,7 +398,7 @@ public abstract class RubikObject extends DistortedNode
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void solve()
+  public synchronized void solve()
     {
     for(int i=0; i<NUM_CUBITS; i++)
       {
@@ -475,7 +475,7 @@ public abstract class RubikObject extends DistortedNode
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void beginNewRotation(int axis, int row )
+  public synchronized void beginNewRotation(int axis, int row )
     {
     if( axis<0 || axis>=ROTATION_AXIS.length )
       {
@@ -498,7 +498,7 @@ public abstract class RubikObject extends DistortedNode
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public long addNewRotation( int axis, int rowBitmap, int angle, long durationMillis, EffectListener listener )
+  public synchronized long addNewRotation( int axis, int rowBitmap, int angle, long durationMillis, EffectListener listener )
     {
     mRotAxis     = axis;
     mRotRowBitmap= rowBitmap;
@@ -556,7 +556,7 @@ public abstract class RubikObject extends DistortedNode
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void removeRotationNow()
+  public synchronized void removeRotationNow()
     {
     float angle = getAngle();
     double nearestAngleInRadians = angle*Math.PI/180;
diff --git a/src/main/java/org/distorted/objects/RubikPyraminx.java b/src/main/java/org/distorted/objects/RubikPyraminx.java
index 60f83a21..1f01f079 100644
--- a/src/main/java/org/distorted/objects/RubikPyraminx.java
+++ b/src/main/java/org/distorted/objects/RubikPyraminx.java
@@ -384,10 +384,11 @@ public class RubikPyraminx extends RubikObject
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// I don't quite understand it, but 0.82 works better than the theoretically correct SQ3/2 ( 0.866 )
 
   public float returnMultiplier()
     {
-    return getSize()/(SQ3/2);
+    return getSize()/0.82f;//(SQ3/2);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
