commit a595ee16a9d0e84bef8998115d1af1c7af3dd603
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Fri Jun 17 22:34:21 2016 +0100

    New API tested.

diff --git a/src/main/java/org/distorted/library/EffectQueue.java b/src/main/java/org/distorted/library/EffectQueue.java
index 08958bd..540cb32 100644
--- a/src/main/java/org/distorted/library/EffectQueue.java
+++ b/src/main/java/org/distorted/library/EffectQueue.java
@@ -234,9 +234,9 @@ abstract class EffectQueue
     for(int j=effect; j<mNumEffects; j++ ) 
       {
       mType[j]            = mType[j+1];
-      mInter[0][j]          = mInter[0][j+1];
-      mInter[1][j]          = mInter[1][j+1];
-      mInter[2][j]          = mInter[2][j+1];
+      mInter[0][j]        = mInter[0][j+1];
+      mInter[1][j]        = mInter[1][j+1];
+      mInter[2][j]        = mInter[2][j+1];
       mCurrentDuration[j] = mCurrentDuration[j+1];
       mID[j]              = mID[j+1];
     
diff --git a/src/main/java/org/distorted/library/EffectQueueFragment.java b/src/main/java/org/distorted/library/EffectQueueFragment.java
index 8c690cf..9014422 100644
--- a/src/main/java/org/distorted/library/EffectQueueFragment.java
+++ b/src/main/java/org/distorted/library/EffectQueueFragment.java
@@ -72,11 +72,7 @@ class EffectQueueFragment extends EffectQueue
    
     for(int i=0; i<mNumEffects; i++)
       {
-      if( mInter[0][i]==null ) continue;
-      
-      if( mInter[1][i]!=null ) mInter[1][i].interpolateMain(mBuf, 4*i, mCurrentDuration[i]);
-        
-      if( mInter[0][i].interpolateMain(mUniforms ,NUM_UNIFORMS*i, mCurrentDuration[i], step) )
+      if( mInter[0][i]!=null && mInter[0][i].interpolateMain(mUniforms ,NUM_UNIFORMS*i, mCurrentDuration[i], step) )
         {
         for(int j=0; j<mNumListeners; j++)   
           EffectMessageSender.newMessage( mListeners.elementAt(j),
@@ -93,7 +89,9 @@ class EffectQueueFragment extends EffectQueue
           continue;
           }
         }
-           
+
+      if( mInter[1][i]!=null ) mInter[1][i].interpolateMain(mBuf, 4*i, mCurrentDuration[i]);
+
       mCurrentDuration[i] += step;
       }
    
diff --git a/src/main/java/org/distorted/library/EffectQueueMatrix.java b/src/main/java/org/distorted/library/EffectQueueMatrix.java
index 665cd54..e7a8b9c 100644
--- a/src/main/java/org/distorted/library/EffectQueueMatrix.java
+++ b/src/main/java/org/distorted/library/EffectQueueMatrix.java
@@ -105,31 +105,29 @@ class EffectQueueMatrix extends EffectQueue
    
     for(int i=0; i<mNumEffects; i++)
       {
-      if( mInter[0][i]==null ) continue;
-           
-      if( mInter[1][i]!=null )
+      if( mInter[0][i]!=null && mInter[0][i].interpolateMain(mUniforms ,NUM_UNIFORMS*i+3, mCurrentDuration[i], step) )
         {
-        mInter[1][i].interpolateMain(mUniforms, NUM_UNIFORMS*i, mCurrentDuration[i]);
-        }
-        
-      if( mInter[0][i].interpolateMain(mUniforms ,NUM_UNIFORMS*i+3, mCurrentDuration[i], step) )
-        {   
-        for(int j=0; j<mNumListeners; j++)   
+        for(int j=0; j<mNumListeners; j++)
           EffectMessageSender.newMessage( mListeners.elementAt(j),
                                           EffectMessage.EFFECT_FINISHED,
                                          (mID[i]<<EffectTypes.LENGTH)+EffectTypes.MATRIX.type,
-                                          mType[i], 
+                                          mType[i],
                                           mBitmapID,
                                           null);
-       
+
         if( EffectNames.isUnity(mType[i], mUniforms, NUM_UNIFORMS*i+3) )
-          {  
+          {
           remove(i);
           i--;
           continue;
           }
         }
-    
+
+      if( mInter[1][i]!=null )
+        {
+        mInter[1][i].interpolateMain(mUniforms, NUM_UNIFORMS*i, mCurrentDuration[i]);
+        }
+
       mCurrentDuration[i] += step;
       }
      
@@ -157,7 +155,7 @@ class EffectQueueMatrix extends EffectQueue
     Matrix.setIdentityM(viewMatrix, 0);
     Matrix.translateM(viewMatrix, 0, -dp.width/2, dp.height/2, -dp.distance);
     
-    float x,y,z, sx,sy,sz=1.0f;
+    float x,y,z, sx,sy,sz;
    
     for(int i=0; i<mNumEffects; i++)
       {
diff --git a/src/main/java/org/distorted/library/EffectQueueVertex.java b/src/main/java/org/distorted/library/EffectQueueVertex.java
index 9c5311c..43c3eb6 100644
--- a/src/main/java/org/distorted/library/EffectQueueVertex.java
+++ b/src/main/java/org/distorted/library/EffectQueueVertex.java
@@ -71,31 +71,16 @@ class EffectQueueVertex extends EffectQueue
    
     for(int i=0; i<mNumEffects; i++)
       {
-      if( mInter[0][i]==null ) continue;
-      
-      if( mInter[1][i]!=null )
-        {
-        mInter[1][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+7, mCurrentDuration[i]);
-      
-        mUniforms[NUM_UNIFORMS*i+7] = mUniforms[NUM_UNIFORMS*i+7]-mObjHalfX;
-        mUniforms[NUM_UNIFORMS*i+8] =-mUniforms[NUM_UNIFORMS*i+8]+mObjHalfY;
-        }
-
-      if( mInter[2][i]!=null )
-        {
-        mInter[2][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+3, mCurrentDuration[i]);
-        }
-
-      if( mInter[0][i].interpolateMain(mUniforms ,NUM_UNIFORMS*i, mCurrentDuration[i], step) )
+      if( mInter[0][i]!=null && mInter[0][i].interpolateMain(mUniforms ,NUM_UNIFORMS*i, mCurrentDuration[i], step) )
         {
-        for(int j=0; j<mNumListeners; j++)   
+        for(int j=0; j<mNumListeners; j++)
           EffectMessageSender.newMessage( mListeners.elementAt(j),
                                           EffectMessage.EFFECT_FINISHED,
                                          (mID[i]<<EffectTypes.LENGTH)+EffectTypes.VERTEX.type,
-                                          mType[i], 
+                                          mType[i],
                                           mBitmapID,
                                           null);
-      
+
         if( EffectNames.isUnity(mType[i], mUniforms, NUM_UNIFORMS*i) )
           {
           remove(i);
@@ -103,7 +88,22 @@ class EffectQueueVertex extends EffectQueue
           continue;
           }
         }
-     
+
+      if( mInter[1][i]!=null )
+        {
+        mInter[1][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+3, mCurrentDuration[i]);
+        }
+
+      if( mInter[2][i]!=null )
+        {
+        mInter[2][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+7, mCurrentDuration[i]);
+
+        mUniforms[NUM_UNIFORMS*i+7] = mUniforms[NUM_UNIFORMS*i+7]-mObjHalfX;
+        mUniforms[NUM_UNIFORMS*i+8] =-mUniforms[NUM_UNIFORMS*i+8]+mObjHalfY;
+
+        //android.util.Log.e("queue", "computing dynamic center, x="+(mUniforms[NUM_UNIFORMS*i+7]));
+        }
+
       mCurrentDuration[i] += step;
       }
      
@@ -265,20 +265,11 @@ class EffectQueueVertex extends EffectQueue
   
   private long addPriv(EffectNames eln, Data2D center, Data4D region)
     {
-    if( center instanceof Dynamic2D)
-      mInter[1][mNumEffects] = (Dynamic2D)center;
-    else if( center instanceof Static2D)
-      {
-      mInter[1][mNumEffects] = null;
-      mUniforms[NUM_UNIFORMS*mNumEffects+7] = ((Static2D)center).getX()-mObjHalfX;
-      mUniforms[NUM_UNIFORMS*mNumEffects+8] =-((Static2D)center).getY()+mObjHalfY;
-      }
-
     if( region!=null )
       {
       if( region instanceof Dynamic4D)
         {
-        mInter[2][mNumEffects] = (Dynamic4D)region;
+        mInter[1][mNumEffects] = (Dynamic4D)region;
         }
       else if ( region instanceof Static4D)
         {
@@ -290,7 +281,7 @@ class EffectQueueVertex extends EffectQueue
         mUniforms[NUM_UNIFORMS*mNumEffects+4] =-tmp.getY();   // invert y already
         mUniforms[NUM_UNIFORMS*mNumEffects+5] = z<=0.0f ? 1000*mObjHalfX : z;
         mUniforms[NUM_UNIFORMS*mNumEffects+6] = tmp.getW();
-        mInter[2][mNumEffects] = null;
+        mInter[1][mNumEffects] = null;
         }
       else return -1;
       }
@@ -300,9 +291,18 @@ class EffectQueueVertex extends EffectQueue
       mUniforms[NUM_UNIFORMS*mNumEffects+4] = 0.0f;
       mUniforms[NUM_UNIFORMS*mNumEffects+5] = 1000*mObjHalfX;
       mUniforms[NUM_UNIFORMS*mNumEffects+6] = 0.0f;
+      mInter[1][mNumEffects] = null;
+      }
+
+    if( center instanceof Dynamic2D)
+      mInter[2][mNumEffects] = (Dynamic2D)center;
+    else if( center instanceof Static2D)
+      {
       mInter[2][mNumEffects] = null;
+      mUniforms[NUM_UNIFORMS*mNumEffects+7] = ((Static2D)center).getX()-mObjHalfX;
+      mUniforms[NUM_UNIFORMS*mNumEffects+8] =-((Static2D)center).getY()+mObjHalfY;
       }
-    
+
     return addBase(eln);
     }
 
