commit 9af837e87f923b66512181b5b0d24f47993c0dbc
Author: leszek <leszek@koltunski.pl>
Date:   Wed Jun 21 22:19:41 2017 +0100

    Prevent possibility to enable an effect multiple times.

diff --git a/src/main/java/org/distorted/library/effect/Effect.java b/src/main/java/org/distorted/library/effect/Effect.java
index 757a7ec..3c333e8 100644
--- a/src/main/java/org/distorted/library/effect/Effect.java
+++ b/src/main/java/org/distorted/library/effect/Effect.java
@@ -38,6 +38,13 @@ public abstract class Effect
   private final static float[] mUnity= new float[MAX_UNITY_DIM*NUM_EFFECTS];
   private final static int[]   mUnityDim = new int[NUM_EFFECTS];
 
+  static boolean[] mEnabled = new boolean[NUM_EFFECTS];
+
+  static
+    {
+    for(int i=0; i<NUM_EFFECTS; i++) mEnabled[i] = false;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public abstract boolean compute(float[] uniforms, int index, long currentDuration, long step );
@@ -47,6 +54,8 @@ public abstract class Effect
   public static void onDestroy()
     {
     mNextID = 0;
+
+    for(int i=0; i<NUM_EFFECTS; i++) mEnabled[i] = false;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/FragmentEffect.java b/src/main/java/org/distorted/library/effect/FragmentEffect.java
index 94cb37e..f4328c0 100644
--- a/src/main/java/org/distorted/library/effect/FragmentEffect.java
+++ b/src/main/java/org/distorted/library/effect/FragmentEffect.java
@@ -40,17 +40,23 @@ public abstract class FragmentEffect extends Effect
 
   static void addEffect(EffectName not_smooth, EffectName yes_smooth, String code)
     {
+    int effect1 = not_smooth.ordinal();
+    int effect2 = yes_smooth.ordinal();
+
+    if( mEnabled[effect1] ) return;
+
+    mEnabled[effect1] = true;
     mNumEnabled ++;
 
     mGLSL +=
 
-         "if( fName[i]=="+not_smooth.ordinal()+")\n"
+         "if( fName[i]=="+effect1+")\n"
         +  "{\n"
         +  "degree = sign(degree); \n"
         +   code +"\n"
         +  "}\n"
         +"else\n"
-        +"if( fName[i]=="+yes_smooth.ordinal()+")\n"
+        +"if( fName[i]=="+effect2+")\n"
         +  "{\n"
         +   code +"\n"
         +  "}\n"
diff --git a/src/main/java/org/distorted/library/effect/VertexEffect.java b/src/main/java/org/distorted/library/effect/VertexEffect.java
index 25c7d15..499629f 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffect.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffect.java
@@ -39,11 +39,16 @@ public abstract class VertexEffect extends Effect
 
   static void addEffect(EffectName name, String code)
     {
+    int effect = name.ordinal();
+
+    if( mEnabled[effect] ) return;
+
+    mEnabled[effect] = true;
     mNumEnabled ++;
 
     mGLSL +=
 
-        "if( vName[i]=="+name.ordinal()+")\n" +
+        "if( vName[i]=="+effect+")\n" +
           "{\n" +
            code +"\n" +
           "}\n" +
