commit fc286c71e5e98ab54348a7a73390e0e301b09c8a
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Apr 27 23:13:32 2020 +0100

    fix for centers of Matrix effects.

diff --git a/src/main/java/org/distorted/examples/generic/GenericActivity2.java b/src/main/java/org/distorted/examples/generic/GenericActivity2.java
index 67671a5..88f8dcd 100644
--- a/src/main/java/org/distorted/examples/generic/GenericActivity2.java
+++ b/src/main/java/org/distorted/examples/generic/GenericActivity2.java
@@ -198,16 +198,27 @@ public class GenericActivity2 extends AppCompatActivity
 
   public int getScreenWidth()
     {
-    GenericRenderer r = ((GenericSurfaceView)findViewById(R.id.genericSurfaceView)).getRenderer();
-    return r.getWidth();
+    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
+    GenericRenderer renderer = view.getRenderer();
+    return renderer.getWidth();
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public float getScaleFactor()
+    {
+    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
+    GenericRenderer renderer = view.getRenderer();
+    return renderer.getScaleFactor();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  void setCenter(Static3D center)
+  void setCenter(float x, float y, float z)
     {
     GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
-    view.getRenderer().setCenter( center.get0(), center.get1(), center.get2() );
+    GenericRenderer renderer = view.getRenderer();
+    renderer.setCenter(x,y,z);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -215,7 +226,8 @@ public class GenericActivity2 extends AppCompatActivity
   void setRegion(Static4D region)
     {
     GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
-    view.getRenderer().setRegion( region.get0(), region.get1(), region.get2(), region.get3() );
+    GenericRenderer renderer = view.getRenderer();
+    renderer.setRegion( region.get0(), region.get1(), region.get2(), region.get3() );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/generic/GenericEffect.java b/src/main/java/org/distorted/examples/generic/GenericEffect.java
index 6a9061d..7edb8b5 100644
--- a/src/main/java/org/distorted/examples/generic/GenericEffect.java
+++ b/src/main/java/org/distorted/examples/generic/GenericEffect.java
@@ -352,6 +352,14 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
     float y = (mInterCenter[1]*0.012f - 0.6f)*act.getHeight();
     float z = (mInterCenter[2]*0.012f - 0.6f)*act.getDepth();
 
+    if( mName.getType() == EffectType.MATRIX )
+      {
+      float factor = act.getScaleFactor();
+      x *= factor;
+      y *= factor;
+      z *= factor;
+      }
+
     mCenterSta.set(x,y,z);
     }
 
@@ -430,6 +438,14 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void setCenter(GenericActivity2 act)
+    {
+    float factor = ( mName.getType() == EffectType.MATRIX ? act.getScaleFactor() : 1.0f);
+    act.setCenter( mCenterSta.get0()/factor, mCenterSta.get1()/factor, mCenterSta.get2()/factor );
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   void setBackground(int pos)
@@ -707,7 +723,7 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
       seek[i].setProgress( mInterCenter[i] );
       }
 
-    act.setCenter(mCenterSta);
+    setCenter(act);
 
     return mCenter;
     }
@@ -768,7 +784,7 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
     if( fromUser )
       {
       GenericActivity2 act = mAct.get();
-      act.setCenter(mCenterSta);
+      setCenter(act);
       act.setRegion(mRegion4Sta);
       }
     }
diff --git a/src/main/java/org/distorted/examples/generic/GenericRenderer.java b/src/main/java/org/distorted/examples/generic/GenericRenderer.java
index fbf2456..bbb14e1 100644
--- a/src/main/java/org/distorted/examples/generic/GenericRenderer.java
+++ b/src/main/java/org/distorted/examples/generic/GenericRenderer.java
@@ -203,6 +203,13 @@ class GenericRenderer implements GLSurfaceView.Renderer
       return mWidth;
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    float getScaleFactor()
+      {
+      return mFactorObj;
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     void setCenter(float x, float y, float z)
