commit a1d92a36f382b50249df1650be0a3bb082a55e8e
Author: leszek <leszek@koltunski.pl>
Date:   Thu Jun 15 23:46:27 2017 +0100

    Beginnings of support for the unified Data data type.

diff --git a/src/main/java/org/distorted/library/effect/FragmentEffect.java b/src/main/java/org/distorted/library/effect/FragmentEffect.java
index 4bf07cc..d0b50f1 100644
--- a/src/main/java/org/distorted/library/effect/FragmentEffect.java
+++ b/src/main/java/org/distorted/library/effect/FragmentEffect.java
@@ -19,11 +19,6 @@
 
 package org.distorted.library.effect;
 
-import org.distorted.library.type.Dynamic;
-import org.distorted.library.type.Dynamic4D;
-import org.distorted.library.type.Static;
-import org.distorted.library.type.Static4D;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // FRAGMENT EFFECTS
 // 8 Uniforms: 4-per effect interpolated values, 4 dimensional Region.
@@ -32,11 +27,6 @@ public abstract class FragmentEffect extends Effect
   {
   public static final int NUM_UNIFORMS = 8;
 
-  Dynamic mDynamic0, mDynamic1;
-  Static mStatic0, mStatic1;
-  Dynamic4D mDynamicRegion;
-  Static4D mStaticRegion;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public FragmentEffect(EffectName name)
diff --git a/src/main/java/org/distorted/library/effect/FragmentEffectAlpha.java b/src/main/java/org/distorted/library/effect/FragmentEffectAlpha.java
index 47caf9a..41efbc4 100644
--- a/src/main/java/org/distorted/library/effect/FragmentEffectAlpha.java
+++ b/src/main/java/org/distorted/library/effect/FragmentEffectAlpha.java
@@ -21,15 +21,15 @@ package org.distorted.library.effect;
 
 import org.distorted.library.type.Data1D;
 import org.distorted.library.type.Data4D;
-import org.distorted.library.type.Dynamic1D;
-import org.distorted.library.type.Dynamic4D;
-import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static4D;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class FragmentEffectAlpha extends FragmentEffect
   {
+  private Data1D mAlpha;
+  private Data4D mRegion;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * Makes a certain sub-region of the Object smoothly change its transparency level.
@@ -44,30 +44,8 @@ public class FragmentEffectAlpha extends FragmentEffect
     {
     super(smooth? EffectName.SMOOTH_ALPHA:EffectName.ALPHA);
 
-    if( alpha instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)alpha;
-      }
-    else if ( alpha instanceof Static1D )
-      {
-      mStatic0 = (Static1D)alpha;
-      }
-
-    if( region == null )
-      {
-      mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
-      }
-    else
-      {
-      if (region instanceof Static4D)
-        {
-        mStaticRegion = (Static4D) region;
-        }
-      else if (region instanceof Dynamic4D)
-        {
-        mDynamicRegion = (Dynamic4D) region;
-        }
-      }
+    mAlpha = alpha;
+    mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -82,42 +60,15 @@ public class FragmentEffectAlpha extends FragmentEffect
     {
     super(EffectName.ALPHA);
 
-    if( alpha instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)alpha;
-      }
-    else if ( alpha instanceof Static1D )
-      {
-      mStatic0 = (Static1D)alpha;
-      }
-
-    mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
+    mAlpha = alpha;
+    mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public boolean compute(float[] uniforms, int index, long currentDuration, long step )
     {
-    if( mDynamicRegion!=null )
-      {
-      mDynamicRegion.interpolateMain(uniforms,index+4,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index+4] = mStaticRegion.getX();
-      uniforms[index+5] = mStaticRegion.getY();
-      uniforms[index+6] = mStaticRegion.getZ();
-      uniforms[index+7] = mStaticRegion.getW();
-      }
-
-    if( mDynamic0!=null )
-      {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index] = ((Static1D)mStatic0).getX();
-      return false;
-      }
+    mRegion.get(uniforms, index+4, currentDuration, step);
+    return mAlpha.get(uniforms,index, currentDuration, step);
     }
   }
diff --git a/src/main/java/org/distorted/library/effect/FragmentEffectBrightness.java b/src/main/java/org/distorted/library/effect/FragmentEffectBrightness.java
index 7602cb5..dc8a8f2 100644
--- a/src/main/java/org/distorted/library/effect/FragmentEffectBrightness.java
+++ b/src/main/java/org/distorted/library/effect/FragmentEffectBrightness.java
@@ -30,6 +30,9 @@ import org.distorted.library.type.Static4D;
 
 public class FragmentEffectBrightness extends FragmentEffect
   {
+  private Data1D mBrightness;
+  private Data4D mRegion;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * Makes a certain sub-region of the Object smoothly change its brightness level.
@@ -43,30 +46,8 @@ public class FragmentEffectBrightness extends FragmentEffect
     {
     super(smooth?EffectName.SMOOTH_BRIGHTNESS:EffectName.BRIGHTNESS);
 
-    if( brightness instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)brightness;
-      }
-    else if ( brightness instanceof Static1D )
-      {
-      mStatic0 = (Static1D)brightness;
-      }
-
-    if( region == null )
-      {
-      mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
-      }
-    else
-      {
-      if (region instanceof Static4D)
-        {
-        mStaticRegion = (Static4D) region;
-        }
-      else if (region instanceof Dynamic4D)
-        {
-        mDynamicRegion = (Dynamic4D) region;
-        }
-      }
+    mBrightness = brightness;
+    mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -80,42 +61,15 @@ public class FragmentEffectBrightness extends FragmentEffect
     {
     super(EffectName.BRIGHTNESS);
 
-    if( brightness instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)brightness;
-      }
-    else if ( brightness instanceof Static1D )
-      {
-      mStatic0 = (Static1D)brightness;
-      }
-
-    mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
+    mBrightness = brightness;
+    mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public boolean compute(float[] uniforms, int index, long currentDuration, long step )
     {
-    if( mDynamicRegion!=null )
-      {
-      mDynamicRegion.interpolateMain(uniforms,index+4,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index+4] = mStaticRegion.getX();
-      uniforms[index+5] = mStaticRegion.getY();
-      uniforms[index+6] = mStaticRegion.getZ();
-      uniforms[index+7] = mStaticRegion.getW();
-      }
-
-    if( mDynamic0!=null )
-      {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index] = ((Static1D)mStatic0).getX();
-      return false;
-      }
+    mRegion.get(uniforms,index+4,currentDuration,step);
+    return mBrightness.get(uniforms,index,currentDuration,step);
     }
   }
diff --git a/src/main/java/org/distorted/library/effect/FragmentEffectChroma.java b/src/main/java/org/distorted/library/effect/FragmentEffectChroma.java
index 1e124ba..779709b 100644
--- a/src/main/java/org/distorted/library/effect/FragmentEffectChroma.java
+++ b/src/main/java/org/distorted/library/effect/FragmentEffectChroma.java
@@ -33,6 +33,10 @@ import org.distorted.library.type.Static4D;
 
 public class FragmentEffectChroma extends FragmentEffect
   {
+  private Data1D mBlend;
+  private Data3D mColor;
+  private Data4D mRegion;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * Makes a certain sub-region of the Object smoothly change all three of its RGB components.
@@ -48,39 +52,9 @@ public class FragmentEffectChroma extends FragmentEffect
     {
     super(smooth?EffectName.SMOOTH_CHROMA:EffectName.CHROMA);
 
-    if( blend instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)blend;
-      }
-    else if ( blend instanceof Static1D )
-      {
-      mStatic0 = (Static1D)blend;
-      }
-
-    if( color instanceof Dynamic3D )
-      {
-      mDynamic1 = (Dynamic3D)color;
-      }
-    else if ( color instanceof Static3D)
-      {
-      mStatic1 = (Static3D)color;
-      }
-
-    if( region == null )
-      {
-      mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
-      }
-    else
-      {
-      if (region instanceof Static4D)
-        {
-        mStaticRegion = (Static4D) region;
-        }
-      else if (region instanceof Dynamic4D)
-        {
-        mDynamicRegion = (Dynamic4D) region;
-        }
-      }
+    mBlend = blend;
+    mColor = color;
+    mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -96,62 +70,17 @@ public class FragmentEffectChroma extends FragmentEffect
     {
     super(EffectName.CHROMA);
 
-    if( blend instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)blend;
-      }
-    else if ( blend instanceof Static1D )
-      {
-      mStatic0 = (Static1D)blend;
-      }
-
-    if( color instanceof Dynamic3D )
-      {
-      mDynamic1 = (Dynamic3D)color;
-      }
-    else if ( color instanceof Static3D)
-      {
-      mStatic1 = (Static3D)color;
-      }
-
-    mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
+    mBlend = blend;
+    mColor = color;
+    mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public boolean compute(float[] uniforms, int index, long currentDuration, long step )
     {
-    if( mDynamicRegion!=null )
-      {
-      mDynamicRegion.interpolateMain(uniforms,index+4,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index+4] = mStaticRegion.getX();
-      uniforms[index+5] = mStaticRegion.getY();
-      uniforms[index+6] = mStaticRegion.getZ();
-      uniforms[index+7] = mStaticRegion.getW();
-      }
-
-    if( mDynamic1!=null )
-      {
-      mDynamic1.interpolateMain(uniforms,index+1,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index+1] = ((Static3D)mStatic1).getX();
-      uniforms[index+2] = ((Static3D)mStatic1).getY();
-      uniforms[index+3] = ((Static3D)mStatic1).getZ();
-      }
-
-    if( mDynamic0!=null )
-      {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index  ] = ((Static1D)mStatic0).getX();
-      return false;
-      }
+    mRegion.get(uniforms,index+4,currentDuration,step);
+    mColor.get(uniforms,index+1,currentDuration,step);
+    return mBlend.get(uniforms,index,currentDuration,step);
     }
   }
diff --git a/src/main/java/org/distorted/library/effect/FragmentEffectContrast.java b/src/main/java/org/distorted/library/effect/FragmentEffectContrast.java
index e5f3581..d562129 100644
--- a/src/main/java/org/distorted/library/effect/FragmentEffectContrast.java
+++ b/src/main/java/org/distorted/library/effect/FragmentEffectContrast.java
@@ -30,6 +30,9 @@ import org.distorted.library.type.Static4D;
 
 public class FragmentEffectContrast extends FragmentEffect
   {
+  private Data1D mContrast;
+  private Data4D mRegion;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * Makes a certain sub-region of the Object smoothly change its contrast level.
@@ -43,30 +46,8 @@ public class FragmentEffectContrast extends FragmentEffect
     {
     super(smooth?EffectName.SMOOTH_CONTRAST:EffectName.CONTRAST);
 
-    if( contrast instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)contrast;
-      }
-    else if ( contrast instanceof Static1D )
-      {
-      mStatic0 = (Static1D)contrast;
-      }
-
-    if( region == null )
-      {
-      mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
-      }
-    else
-      {
-      if (region instanceof Static4D)
-        {
-        mStaticRegion = (Static4D) region;
-        }
-      else if (region instanceof Dynamic4D)
-        {
-        mDynamicRegion = (Dynamic4D) region;
-        }
-      }
+    mContrast = contrast;
+    mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -80,42 +61,15 @@ public class FragmentEffectContrast extends FragmentEffect
     {
     super(EffectName.CONTRAST);
 
-    if( contrast instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)contrast;
-      }
-    else if ( contrast instanceof Static1D )
-      {
-      mStatic0 = (Static1D)contrast;
-      }
-
-    mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
+    mContrast = contrast;
+    mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public boolean compute(float[] uniforms, int index, long currentDuration, long step )
     {
-    if( mDynamicRegion!=null )
-      {
-      mDynamicRegion.interpolateMain(uniforms,index+4,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index+4] = mStaticRegion.getX();
-      uniforms[index+5] = mStaticRegion.getY();
-      uniforms[index+6] = mStaticRegion.getZ();
-      uniforms[index+7] = mStaticRegion.getW();
-      }
-
-    if( mDynamic0!=null )
-      {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index] = ((Static1D)mStatic0).getX();
-      return false;
-      }
+    mRegion.get(uniforms,index+4,currentDuration,step);
+    return mContrast.get(uniforms,index,currentDuration,step);
     }
   }
diff --git a/src/main/java/org/distorted/library/effect/FragmentEffectSaturation.java b/src/main/java/org/distorted/library/effect/FragmentEffectSaturation.java
index 1a4c860..41a7122 100644
--- a/src/main/java/org/distorted/library/effect/FragmentEffectSaturation.java
+++ b/src/main/java/org/distorted/library/effect/FragmentEffectSaturation.java
@@ -30,6 +30,9 @@ import org.distorted.library.type.Static4D;
 
 public class FragmentEffectSaturation extends FragmentEffect
   {
+  private Data1D mSaturation;
+  private Data4D mRegion;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * Makes a certain sub-region of the Object smoothly change its saturation level.
@@ -43,30 +46,8 @@ public class FragmentEffectSaturation extends FragmentEffect
     {
     super(smooth?EffectName.SMOOTH_SATURATION:EffectName.SATURATION);
 
-    if( saturation instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)saturation;
-      }
-    else if ( saturation instanceof Static1D )
-      {
-      mStatic0 = (Static1D)saturation;
-      }
-
-    if( region == null )
-      {
-      mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
-      }
-    else
-      {
-      if (region instanceof Static4D)
-        {
-        mStaticRegion = (Static4D) region;
-        }
-      else if (region instanceof Dynamic4D)
-        {
-        mDynamicRegion = (Dynamic4D) region;
-        }
-      }
+    mSaturation = saturation;
+    mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -80,42 +61,15 @@ public class FragmentEffectSaturation extends FragmentEffect
     {
     super(EffectName.SATURATION);
 
-    if( saturation instanceof Dynamic1D )
-      {
-      mDynamic0 = (Dynamic1D)saturation;
-      }
-    else if ( saturation instanceof Static1D )
-      {
-      mStatic0 = (Static1D)saturation;
-      }
-
-    mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
+    mSaturation = saturation;
+    mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public boolean compute(float[] uniforms, int index, long currentDuration, long step )
     {
-    if( mDynamicRegion!=null )
-      {
-      mDynamicRegion.interpolateMain(uniforms,index+4,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index+4] = mStaticRegion.getX();
-      uniforms[index+5] = mStaticRegion.getY();
-      uniforms[index+6] = mStaticRegion.getZ();
-      uniforms[index+7] = mStaticRegion.getW();
-      }
-
-    if( mDynamic0!=null )
-      {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
-      }
-    else
-      {
-      uniforms[index] = ((Static1D)mStatic0).getX();
-      return false;
-      }
+    mRegion.get(uniforms,index+4,currentDuration,step);
+    return mSaturation.get(uniforms,index,currentDuration,step);
     }
   }
diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectMove.java b/src/main/java/org/distorted/library/effect/MatrixEffectMove.java
index 5510eb4..d461150 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectMove.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectMove.java
@@ -54,7 +54,7 @@ public class MatrixEffectMove extends MatrixEffect
     {
     if( mDynamic0!=null )
       {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      return mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java b/src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java
index 6033a7f..530f4f9 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java
@@ -22,7 +22,6 @@ package org.distorted.library.effect;
 import org.distorted.library.type.Data3D;
 import org.distorted.library.type.Data4D;
 import org.distorted.library.type.Dynamic3D;
-import org.distorted.library.type.Dynamic4D;
 import org.distorted.library.type.DynamicQuat;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
@@ -67,7 +66,7 @@ public class MatrixEffectQuaternion extends MatrixEffect
     {
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+4,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+4,currentDuration,step);
       }
     else
       {
@@ -78,7 +77,7 @@ public class MatrixEffectQuaternion extends MatrixEffect
 
     if( mDynamic0!=null )
       {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      return mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectRotate.java b/src/main/java/org/distorted/library/effect/MatrixEffectRotate.java
index e5ef657..d794f12 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectRotate.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectRotate.java
@@ -104,7 +104,7 @@ public class MatrixEffectRotate extends MatrixEffect
     {
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+4,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+4,currentDuration,step);
       }
     else
       {
@@ -122,7 +122,7 @@ public class MatrixEffectRotate extends MatrixEffect
 
     if( mDynamic0!=null )
       {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      return mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectScale.java b/src/main/java/org/distorted/library/effect/MatrixEffectScale.java
index a7faee3..cdefa17 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectScale.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectScale.java
@@ -67,7 +67,7 @@ public class MatrixEffectScale extends MatrixEffect
     {
     if( mDynamic0!=null )
       {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      return mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/MatrixEffectShear.java b/src/main/java/org/distorted/library/effect/MatrixEffectShear.java
index f40b4ce..f809bc8 100644
--- a/src/main/java/org/distorted/library/effect/MatrixEffectShear.java
+++ b/src/main/java/org/distorted/library/effect/MatrixEffectShear.java
@@ -66,7 +66,7 @@ public class MatrixEffectShear extends MatrixEffect
     {
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+4,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+4,currentDuration,step);
       }
     else
       {
@@ -77,7 +77,7 @@ public class MatrixEffectShear extends MatrixEffect
 
     if( mDynamic0!=null )
       {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      return mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/PostprocessEffectBlur.java b/src/main/java/org/distorted/library/effect/PostprocessEffectBlur.java
index 896133b..831ecfe 100644
--- a/src/main/java/org/distorted/library/effect/PostprocessEffectBlur.java
+++ b/src/main/java/org/distorted/library/effect/PostprocessEffectBlur.java
@@ -54,7 +54,7 @@ public class PostprocessEffectBlur extends PostprocessEffect
     {
     if( mDynamic0!=null )
       {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      return mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/PostprocessEffectGlow.java b/src/main/java/org/distorted/library/effect/PostprocessEffectGlow.java
index b30c80d..bf13db7 100644
--- a/src/main/java/org/distorted/library/effect/PostprocessEffectGlow.java
+++ b/src/main/java/org/distorted/library/effect/PostprocessEffectGlow.java
@@ -67,7 +67,7 @@ public class PostprocessEffectGlow extends PostprocessEffect
     {
     if( mDynamic1!=null )
       {
-      mDynamic1.interpolateMain(uniforms,index+1,currentDuration,step);
+      mDynamic1.get(uniforms,index+1,currentDuration,step);
       }
     else
       {
@@ -79,7 +79,7 @@ public class PostprocessEffectGlow extends PostprocessEffect
 
     if( mDynamic0!=null )
       {
-      return mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      return mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectDeform.java b/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
index ea93f9c..d6111ac 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectDeform.java
@@ -119,7 +119,7 @@ public class VertexEffectDeform extends VertexEffect
 
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+5,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+5,currentDuration,step);
       }
     else
       {
@@ -130,7 +130,7 @@ public class VertexEffectDeform extends VertexEffect
 
     if( mDynamicRegion!=null )
       {
-      mDynamicRegion.interpolateMain(uniforms,index+8,currentDuration,step);
+      mDynamicRegion.get(uniforms,index+8,currentDuration,step);
       }
     else
       {
@@ -142,7 +142,7 @@ public class VertexEffectDeform extends VertexEffect
 
     if( mDynamic0!=null )
       {
-      ret = mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      ret = mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectDistort.java b/src/main/java/org/distorted/library/effect/VertexEffectDistort.java
index 871866b..71ad0da 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectDistort.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectDistort.java
@@ -119,7 +119,7 @@ public class VertexEffectDistort extends VertexEffect
 
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+5,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+5,currentDuration,step);
       }
     else
       {
@@ -130,7 +130,7 @@ public class VertexEffectDistort extends VertexEffect
 
     if( mDynamicRegion!=null )
       {
-      mDynamicRegion.interpolateMain(uniforms,index+8,currentDuration,step);
+      mDynamicRegion.get(uniforms,index+8,currentDuration,step);
       }
     else
       {
@@ -142,7 +142,7 @@ public class VertexEffectDistort extends VertexEffect
 
     if( mDynamic0!=null )
       {
-      ret = mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      ret = mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectPinch.java b/src/main/java/org/distorted/library/effect/VertexEffectPinch.java
index fb886ea..5ed1ecf 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectPinch.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectPinch.java
@@ -122,7 +122,7 @@ public class VertexEffectPinch extends VertexEffect
 
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+5,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+5,currentDuration,step);
       }
     else
       {
@@ -133,7 +133,7 @@ public class VertexEffectPinch extends VertexEffect
 
     if( mDynamicRegion!=null )
       {
-      mDynamicRegion.interpolateMain(uniforms,index+8,currentDuration,step);
+      mDynamicRegion.get(uniforms,index+8,currentDuration,step);
       }
     else
       {
@@ -145,7 +145,7 @@ public class VertexEffectPinch extends VertexEffect
 
     if( mDynamic0!=null )
       {
-      ret = mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      ret = mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectSink.java b/src/main/java/org/distorted/library/effect/VertexEffectSink.java
index 89b7714..218a299 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectSink.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectSink.java
@@ -122,7 +122,7 @@ public class VertexEffectSink extends VertexEffect
 
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+5,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+5,currentDuration,step);
       }
     else
       {
@@ -133,7 +133,7 @@ public class VertexEffectSink extends VertexEffect
 
     if( mDynamicRegion!=null )
       {
-      mDynamicRegion.interpolateMain(uniforms,index+8,currentDuration,step);
+      mDynamicRegion.get(uniforms,index+8,currentDuration,step);
       }
     else
       {
@@ -145,7 +145,7 @@ public class VertexEffectSink extends VertexEffect
 
     if( mDynamic0!=null )
       {
-      ret = mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      ret = mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectSwirl.java b/src/main/java/org/distorted/library/effect/VertexEffectSwirl.java
index 8bfe564..4230739 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectSwirl.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectSwirl.java
@@ -120,7 +120,7 @@ public class VertexEffectSwirl extends VertexEffect
 
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+5,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+5,currentDuration,step);
       }
     else
       {
@@ -131,7 +131,7 @@ public class VertexEffectSwirl extends VertexEffect
 
     if( mDynamicRegion!=null )
       {
-      mDynamicRegion.interpolateMain(uniforms,index+8,currentDuration,step);
+      mDynamicRegion.get(uniforms,index+8,currentDuration,step);
       }
     else
       {
@@ -143,7 +143,7 @@ public class VertexEffectSwirl extends VertexEffect
 
     if( mDynamic0!=null )
       {
-      ret = mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      ret = mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/effect/VertexEffectWave.java b/src/main/java/org/distorted/library/effect/VertexEffectWave.java
index 41c2090..3b23d0e 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffectWave.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffectWave.java
@@ -141,7 +141,7 @@ public class VertexEffectWave extends VertexEffect
 
     if( mDynamicCenter!=null )
       {
-      mDynamicCenter.interpolateMain(uniforms,index+5,currentDuration,step);
+      mDynamicCenter.get(uniforms,index+5,currentDuration,step);
       }
     else
       {
@@ -152,7 +152,7 @@ public class VertexEffectWave extends VertexEffect
 
     if( mDynamicRegion!=null )
       {
-      mDynamicRegion.interpolateMain(uniforms,index+8,currentDuration,step);
+      mDynamicRegion.get(uniforms,index+8,currentDuration,step);
       }
     else
       {
@@ -164,7 +164,7 @@ public class VertexEffectWave extends VertexEffect
 
     if( mDynamic0!=null )
       {
-      ret = mDynamic0.interpolateMain(uniforms,index,currentDuration,step);
+      ret = mDynamic0.get(uniforms,index,currentDuration,step);
       }
     else
       {
diff --git a/src/main/java/org/distorted/library/type/Data1D.java b/src/main/java/org/distorted/library/type/Data1D.java
index 8c974a9..2ea7db1 100644
--- a/src/main/java/org/distorted/library/type/Data1D.java
+++ b/src/main/java/org/distorted/library/type/Data1D.java
@@ -27,5 +27,5 @@ package org.distorted.library.type;
  */
 public interface Data1D
   {
-
+  boolean get(float[] buffer, int offset, long time, long step);
   }
diff --git a/src/main/java/org/distorted/library/type/Data2D.java b/src/main/java/org/distorted/library/type/Data2D.java
index e16b88e..8bfbb88 100644
--- a/src/main/java/org/distorted/library/type/Data2D.java
+++ b/src/main/java/org/distorted/library/type/Data2D.java
@@ -27,5 +27,5 @@ package org.distorted.library.type;
  */
 public interface Data2D
   {
-
+  boolean get(float[] buffer, int offset, long time, long step);
   }
diff --git a/src/main/java/org/distorted/library/type/Data3D.java b/src/main/java/org/distorted/library/type/Data3D.java
index 79fb3c8..5895823 100644
--- a/src/main/java/org/distorted/library/type/Data3D.java
+++ b/src/main/java/org/distorted/library/type/Data3D.java
@@ -27,5 +27,5 @@ package org.distorted.library.type;
  */
 public interface Data3D
   {
-
+  boolean get(float[] buffer, int offset, long time, long step);
   }
diff --git a/src/main/java/org/distorted/library/type/Data4D.java b/src/main/java/org/distorted/library/type/Data4D.java
index c2707fd..2609a76 100644
--- a/src/main/java/org/distorted/library/type/Data4D.java
+++ b/src/main/java/org/distorted/library/type/Data4D.java
@@ -27,5 +27,5 @@ package org.distorted.library.type;
  */
 public interface Data4D
   {
-
+  boolean get(float[] buffer, int offset, long time, long step);
   }
diff --git a/src/main/java/org/distorted/library/type/Data5D.java b/src/main/java/org/distorted/library/type/Data5D.java
index bfc76ae..526f3b8 100644
--- a/src/main/java/org/distorted/library/type/Data5D.java
+++ b/src/main/java/org/distorted/library/type/Data5D.java
@@ -27,5 +27,5 @@ package org.distorted.library.type;
  */
 public interface Data5D
   {
-
+  boolean get(float[] buffer, int offset, long time, long step);
   }
diff --git a/src/main/java/org/distorted/library/type/Dynamic.java b/src/main/java/org/distorted/library/type/Dynamic.java
index aea7cc7..d193a75 100644
--- a/src/main/java/org/distorted/library/type/Dynamic.java
+++ b/src/main/java/org/distorted/library/type/Dynamic.java
@@ -588,7 +588,7 @@ public abstract class Dynamic
  * @param time Time of interpolation. Time=0.0 would return the first Point, Time=0.5 - the last,
  *             time=1.0 - the first again, and time 0.1 would be 1/5 of the way between the first and the last Points.
  */
-  public void interpolateMain(float[] buffer, int offset, long time)
+  public void get(float[] buffer, int offset, long time)
     {
     if( mDuration<=0.0f )
       {
@@ -620,7 +620,7 @@ public abstract class Dynamic
  *             if the previous time we were called the effect wasn't finished yet, but now it is.
  * @return true if the interpolation reached its end.
  */
-  public boolean interpolateMain(float[] buffer, int offset, long time, long step)
+  public boolean get(float[] buffer, int offset, long time, long step)
     {
     if( mDuration<=0.0f )
       {
diff --git a/src/main/java/org/distorted/library/type/Static.java b/src/main/java/org/distorted/library/type/Static.java
index 0d01a69..abe1865 100644
--- a/src/main/java/org/distorted/library/type/Static.java
+++ b/src/main/java/org/distorted/library/type/Static.java
@@ -26,7 +26,7 @@ package org.distorted.library.type;
  * N-dimensional Point a few of which the Dynamic interpolates between.
  */
 
-public class Static
+public abstract class Static
   {
   private final int mDimension;
 
diff --git a/src/main/java/org/distorted/library/type/Static1D.java b/src/main/java/org/distorted/library/type/Static1D.java
index 5cbb230..a37cb12 100644
--- a/src/main/java/org/distorted/library/type/Static1D.java
+++ b/src/main/java/org/distorted/library/type/Static1D.java
@@ -117,4 +117,20 @@ public class Static1D extends Static implements Data1D
     return x;  
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * 'Interpolation' between the single Point (i.e. always this very value) returned to the buffer.
+ * <p>
+ *
+ * @param buffer Float buffer we will write the results to.
+ * @param offset Offset in the buffer where to write the result.
+ * @param time not used
+ * @param step not used
+ * @return <code>false</code>
+ */
+  public boolean get(float[] buffer, int offset, long time, long step)
+    {
+    buffer[offset] = x;
+    return false;
+    }
   }
diff --git a/src/main/java/org/distorted/library/type/Static2D.java b/src/main/java/org/distorted/library/type/Static2D.java
index 9b30d5e..5f107c8 100644
--- a/src/main/java/org/distorted/library/type/Static2D.java
+++ b/src/main/java/org/distorted/library/type/Static2D.java
@@ -123,4 +123,21 @@ public class Static2D extends Static1D implements Data2D
     return y;  
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * 'Interpolation' between the single Point (i.e. always this very value) returned to the buffer.
+ * <p>
+ *
+ * @param buffer Float buffer we will write the results to.
+ * @param offset Offset in the buffer where to write the result.
+ * @param time not used
+ * @param step not used
+ * @return <code>false</code>
+ */
+  public boolean get(float[] buffer, int offset, long time, long step)
+    {
+    buffer[offset  ] = x;
+    buffer[offset+1] = y;
+    return false;
+    }
   }
diff --git a/src/main/java/org/distorted/library/type/Static3D.java b/src/main/java/org/distorted/library/type/Static3D.java
index 6f0f7ed..01fe655 100644
--- a/src/main/java/org/distorted/library/type/Static3D.java
+++ b/src/main/java/org/distorted/library/type/Static3D.java
@@ -129,4 +129,22 @@ public class Static3D extends Static2D  implements Data3D
     return z;  
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * 'Interpolation' between the single Point (i.e. always this very value) returned to the buffer.
+ * <p>
+ *
+ * @param buffer Float buffer we will write the results to.
+ * @param offset Offset in the buffer where to write the result.
+ * @param time not used
+ * @param step not used
+ * @return <code>false</code>
+ */
+  public boolean get(float[] buffer, int offset, long time, long step)
+    {
+    buffer[offset  ] = x;
+    buffer[offset+1] = y;
+    buffer[offset+2] = z;
+    return false;
+    }
   }
diff --git a/src/main/java/org/distorted/library/type/Static4D.java b/src/main/java/org/distorted/library/type/Static4D.java
index 0cf2b2f..8e5c763 100644
--- a/src/main/java/org/distorted/library/type/Static4D.java
+++ b/src/main/java/org/distorted/library/type/Static4D.java
@@ -135,4 +135,23 @@ public class Static4D extends Static3D implements Data4D
     return w;  
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * 'Interpolation' between the single Point (i.e. always this very value) returned to the buffer.
+ * <p>
+ *
+ * @param buffer Float buffer we will write the results to.
+ * @param offset Offset in the buffer where to write the result.
+ * @param time not used
+ * @param step not used
+ * @return <code>false</code>
+ */
+  public boolean get(float[] buffer, int offset, long time, long step)
+    {
+    buffer[offset  ] = x;
+    buffer[offset+1] = y;
+    buffer[offset+2] = z;
+    buffer[offset+3] = w;
+    return false;
+    }
   }
diff --git a/src/main/java/org/distorted/library/type/Static5D.java b/src/main/java/org/distorted/library/type/Static5D.java
index 9fde6c5..ca1bb9d 100644
--- a/src/main/java/org/distorted/library/type/Static5D.java
+++ b/src/main/java/org/distorted/library/type/Static5D.java
@@ -133,4 +133,24 @@ public class Static5D extends Static4D implements Data5D
     return v;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * 'Interpolation' between the single Point (i.e. always this very value) returned to the buffer.
+ * <p>
+ *
+ * @param buffer Float buffer we will write the results to.
+ * @param offset Offset in the buffer where to write the result.
+ * @param time not used
+ * @param step not used
+ * @return <code>false</code>
+ */
+  public boolean get(float[] buffer, int offset, long time, long step)
+    {
+    buffer[offset  ] = x;
+    buffer[offset+1] = y;
+    buffer[offset+2] = z;
+    buffer[offset+3] = w;
+    buffer[offset+4] = v;
+    return false;
+    }
   }
