commit a9716c0fca4d8f6134822bc8aecfb62faf9567ea
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Mon Jun 12 14:19:30 2017 +0100

    Further progress with Apps: 27 (out of 31) compile now.

diff --git a/src/main/java/org/distorted/examples/wind/WindEffectsManager.java b/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
index 9cf28a1..67a25d5 100644
--- a/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
+++ b/src/main/java/org/distorted/examples/wind/WindEffectsManager.java
@@ -21,10 +21,13 @@ package org.distorted.examples.wind;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
+import org.distorted.library.effect.MatrixEffectScale;
+import org.distorted.library.effect.MatrixEffectShear;
+import org.distorted.library.effect.VertexEffectDeform;
+import org.distorted.library.effect.VertexEffectWave;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedTexture;
 import org.distorted.library.type.Dynamic;
-import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.Dynamic5D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
@@ -35,9 +38,7 @@ class WindEffectsManager
   private int mHeight, mWidth;
 
   private Static3D  shearFactor;
-  private Dynamic3D shearDynamic;
   private Static3D  scaleFactor;
-  private Dynamic3D scaleDynamic;
   private Static3D  deformForce;
   private Static5D  windFactor11, windFactor12;
   private Dynamic5D windDynamic1;
@@ -54,13 +55,7 @@ class WindEffectsManager
     mWidth  = texture.getWidth();
 
     shearFactor = new Static3D(0,0,0);
-    shearDynamic= new Dynamic3D();
-    shearDynamic.add(shearFactor);
-
     scaleFactor = new Static3D(1,1,1);
-    scaleDynamic= new Dynamic3D();
-    scaleDynamic.add(scaleFactor);
-
     deformForce = new Static3D(mWidth/3,0,0);
 
     windFactor11 = new Static5D(mHeight/10,mHeight/5, 180, 0, 90);
@@ -90,7 +85,7 @@ class WindEffectsManager
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  synchronized void apply(DistortedEffects effects, int wind)
+  void apply(DistortedEffects effects, int wind)
     {
     Static3D midLeft = new Static3D(0,mHeight/2,0);
     Static3D midRight = new Static3D(mWidth,mHeight/2,0);
@@ -98,12 +93,12 @@ class WindEffectsManager
 
     setWind(wind);
 
-    effects.shear(shearDynamic,midLeft);
-    effects.scale(scaleDynamic);
-    effects.deform(deformForce,midRight);
-    effects.wave(windDynamic1, midRight, windRegion);
-    effects.wave(windDynamic2, midRight, windRegion);
-    effects.wave(windDynamic3, midRight, windRegion);
+    effects.apply( new MatrixEffectShear(shearFactor,midLeft) );
+    effects.apply( new MatrixEffectScale(scaleFactor) );
+    effects.apply( new VertexEffectDeform(deformForce,midRight) );
+    effects.apply( new VertexEffectWave(windDynamic1, midRight, windRegion) );
+    effects.apply( new VertexEffectWave(windDynamic2, midRight, windRegion) );
+    effects.apply( new VertexEffectWave(windDynamic3, midRight, windRegion) );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/wind/WindRenderer.java b/src/main/java/org/distorted/examples/wind/WindRenderer.java
index d4d9741..a3c01ba 100644
--- a/src/main/java/org/distorted/examples/wind/WindRenderer.java
+++ b/src/main/java/org/distorted/examples/wind/WindRenderer.java
@@ -24,9 +24,12 @@ import android.graphics.BitmapFactory;
 import android.opengl.GLSurfaceView;
 
 import org.distorted.examples.R;
+import org.distorted.library.effect.EffectName;
+import org.distorted.library.effect.MatrixEffectMove;
+import org.distorted.library.effect.MatrixEffectRotate;
+import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.main.Distorted;
 import org.distorted.library.main.DistortedScreen;
-import org.distorted.library.EffectNames;
 import org.distorted.library.main.MeshCubes;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedTexture;
@@ -48,6 +51,7 @@ class WindRenderer implements GLSurfaceView.Renderer
    private DistortedTexture mTexture;
    private DistortedScreen mScreen;
    private WindEffectsManager mManager;
+   private Static3D mMove, mScale;
    private int mObjWidth, mObjHeight;
    private int mWind;
 
@@ -66,6 +70,18 @@ class WindRenderer implements GLSurfaceView.Renderer
 
       mObjWidth = mTexture.getWidth();
       mObjHeight= mTexture.getHeight();
+
+      mMove = new Static3D(0,0,0);
+      mScale= new Static3D(1,1,1);
+      mEffects.apply( new MatrixEffectMove(mMove));
+      mEffects.apply( new MatrixEffectScale(mScale));
+
+      Static1D angle = new Static1D(-45);
+      Static3D axis  = new Static3D(0,0,1);
+      Static3D center= new Static3D(0,mObjHeight/2,0);
+
+      mEffects.apply( new MatrixEffectRotate(angle, axis, center) );
+      mManager.apply(mEffects,mWind);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -87,19 +103,9 @@ class WindRenderer implements GLSurfaceView.Renderer
     
    public void onSurfaceChanged(GL10 glUnused, int width, int height) 
       {
-      mEffects.abortAllEffects();
-
       float factor = ( (float)(width<height? width:height) )/(mObjHeight + 1.4f*mObjWidth);
-
-      mEffects.move( new Static3D( factor*mObjHeight*0.58f , factor*mObjHeight*0.08f , 0) );
-      mEffects.scale(factor);
-
-      Static1D angle = new Static1D(-45);
-      Static3D axis  = new Static3D(0,0,1);
-      Static3D center= new Static3D(0,mObjHeight/2,0);
-
-      mEffects.rotate(angle, axis, center);
-      mManager.apply(mEffects,mWind);
+      mMove.set( factor*mObjHeight*0.58f , factor*mObjHeight*0.08f , 0 );
+      mScale.set(factor,factor,factor);
       mScreen.resize(width, height);
       }
 
@@ -125,8 +131,8 @@ class WindRenderer implements GLSurfaceView.Renderer
 
       mTexture.setTexture(bitmap);
 
-      DistortedEffects.enableEffect(EffectNames.DEFORM);
-      DistortedEffects.enableEffect(EffectNames.WAVE);
+      DistortedEffects.enableEffect(EffectName.DEFORM);
+      DistortedEffects.enableEffect(EffectName.WAVE);
 
       try
         {
