commit 1a106eb8921d8cf42bd7bc5975264f3d086f163d
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Apr 22 15:48:51 2022 +0200

    BandagedCreator: mark cubits

diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java b/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
index abe12ba3..ffcb224a 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
@@ -29,6 +29,7 @@ import android.widget.Toast;
 
 import org.distorted.dialogs.RubikDialogBandagedSave;
 import org.distorted.library.effect.EffectType;
+import org.distorted.library.effect.FragmentEffectBrightness;
 import org.distorted.library.effect.PostprocessEffectBorder;
 import org.distorted.library.effect.VertexEffectDeform;
 import org.distorted.library.main.DistortedEffects;
@@ -61,9 +62,6 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
    public static final float BRIGHTNESS = 0.333f;
    private static final int DURATION = 1000;
 
-   private static final int COLOR_DEFAULT = 0xffffff55;
-   private static final int COLOR_MARKED  = 0xffff0000;
-
    static final float SCREEN_RATIO = 0.5f;
    static final float OBJECT_SIZE  = 3.0f;
 
@@ -162,7 +160,7 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
 
      for(int c=0; c<len; c++)
        {
-       cubits[c] = new BandagedCubit(POSITIONS[c],mQuatT,mQuatA,mScale,COLOR_DEFAULT,roundCorners);
+       cubits[c] = new BandagedCubit(POSITIONS[c],mQuatT,mQuatA,mScale,roundCorners);
        }
 
      return cubits;
@@ -181,7 +179,7 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
        if( !mCubits[c].isAttached() )
          {
          mCubits[c].attach();
-         mCubits[c].setTexture( COLOR_DEFAULT);
+         mCubits[c].setUnmarked();
          mScreen.attach(mCubits[c].getNode());
          }
        if( mCubits[c].getPosition().length>3 )
@@ -262,7 +260,8 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
         if( mCubits[i].isAttached() )
           {
           mCubits[i].scaleMove(mScaleValue);
-          mCubits[i].setTexture( touched==i ? COLOR_MARKED : COLOR_DEFAULT);
+          if( touched==i ) mCubits[i].setMarked();
+          else             mCubits[i].setUnmarked();
           DistortedNode node = mCubits[i].getNode();
           mScreen.attach(node);
           }
@@ -281,6 +280,7 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
       MeshBase.setMaxEffComponents(50);
 
       VertexEffectDeform.enable();
+      FragmentEffectBrightness.enable();
 
       DistortedLibrary.onSurfaceCreated(mView.getContext(),this,1);
       DistortedLibrary.setCull(true);
@@ -556,13 +556,13 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
 
   public void touchCubit(int index)
     {
-    mCubits[index].setTexture(COLOR_MARKED);
+    mCubits[index].setMarked();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void untouchCubit(int index)
     {
-    mCubits[index].setTexture(COLOR_DEFAULT);
+    mCubits[index].setUnmarked();
     }
 }
diff --git a/src/main/java/org/distorted/bandaged/BandagedCubit.java b/src/main/java/org/distorted/bandaged/BandagedCubit.java
index 3ace7459..daf064cd 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCubit.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCubit.java
@@ -23,6 +23,7 @@ import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 
+import org.distorted.library.effect.FragmentEffectBrightness;
 import org.distorted.library.effect.MatrixEffectMove;
 import org.distorted.library.effect.MatrixEffectQuaternion;
 import org.distorted.library.effect.MatrixEffectScale;
@@ -31,6 +32,7 @@ import org.distorted.library.main.DistortedNode;
 import org.distorted.library.main.DistortedTexture;
 import org.distorted.library.main.QuatHelper;
 import org.distorted.library.mesh.MeshBase;
+import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.helpers.FactoryBandaged3x3Cubit;
@@ -48,18 +50,20 @@ import static org.distorted.objectlib.main.TwistyObject.COLOR_YELLOW;
 public class BandagedCubit
 {
     private static final Static3D CENTER = new Static3D(0,0,0);
+    private static final float[] mTmp = new float[4];
+    private static final Static1D mAlpha = new Static1D(2.0f);
     private static Bitmap mBitmap;
     private static Static4D[] mTextureMaps;
-    private static float[] mTmp = new float[4];
 
     private final DistortedNode mNode;
-    private final DistortedTexture mTexture;
+    private final DistortedEffects mEffects;
     private final Static3D mMove;
     private final boolean mRoundCorners;
 
     private float mUnscaledX, mUnscaledY, mUnscaledZ;
     private float[] mPosition;
     private boolean mIsAttached;
+    private long mMarkedEffectID;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -159,11 +163,12 @@ public class BandagedCubit
 // PUBLIC API
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    public BandagedCubit(float[] position, Static4D quat1, Static4D quat2, Static3D scale, int color, boolean roundCorners)
+    public BandagedCubit(float[] position, Static4D quat1, Static4D quat2, Static3D scale, boolean roundCorners)
       {
       mRoundCorners = roundCorners;
       mPosition = position;
       mIsAttached = true;
+      mMarkedEffectID = -1;
 
       computeMove(mPosition);
       mMove = new Static3D(0,0,0);
@@ -171,9 +176,9 @@ public class BandagedCubit
       FactoryBandaged3x3Cubit factory = FactoryBandaged3x3Cubit.getInstance();
       MeshBase mesh = factory.createMesh(mPosition,false,mRoundCorners);
 
-      mTexture = new DistortedTexture();
+      DistortedTexture texture = new DistortedTexture();
       if( mBitmap==null ) createBitmap();
-      mTexture.setTextureAlreadyInverted(mBitmap);
+      texture.setTextureAlreadyInverted(mBitmap);
 
       resetTextureMaps(mesh);
 
@@ -182,13 +187,13 @@ public class BandagedCubit
       MatrixEffectQuaternion quat2Effect = new MatrixEffectQuaternion(quat2, CENTER);
       MatrixEffectMove moveEffect = new MatrixEffectMove(mMove);
 
-      DistortedEffects effects = new DistortedEffects();
-      effects.apply(scaleEffect);
-      effects.apply(moveEffect);
-      effects.apply(quat2Effect);
-      effects.apply(quat1Effect);
+      mEffects = new DistortedEffects();
+      mEffects.apply(scaleEffect);
+      mEffects.apply(moveEffect);
+      mEffects.apply(quat2Effect);
+      mEffects.apply(quat1Effect);
 
-      mNode = new DistortedNode(mTexture,effects,mesh);
+      mNode = new DistortedNode(texture,mEffects,mesh);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -243,9 +248,18 @@ public class BandagedCubit
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    public void setTexture(int color)
+    public void setMarked()
       {
-   //   mTexture.setColorARGB(color);
+      FragmentEffectBrightness effect = new FragmentEffectBrightness(mAlpha);
+      mMarkedEffectID = effect.getID();
+      mEffects.apply(effect);
+      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public void setUnmarked()
+      {
+      if( mMarkedEffectID>=0 ) mEffects.abortById(mMarkedEffectID);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
