commit 45ab4482b9fb103f1b3676ea7380257b7b46117f
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri May 7 14:12:41 2021 +0200

    Progress with RubikControl.

diff --git a/src/main/java/org/distorted/control/RubikControlWhole.java b/src/main/java/org/distorted/control/RubikControlWhole.java
index e9b6f546..fdd07117 100644
--- a/src/main/java/org/distorted/control/RubikControlWhole.java
+++ b/src/main/java/org/distorted/control/RubikControlWhole.java
@@ -19,6 +19,9 @@
 
 package org.distorted.control;
 
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
 import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedNode;
@@ -27,12 +30,18 @@ import org.distorted.library.mesh.MeshQuad;
 import org.distorted.library.type.Dynamic;
 import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.Static3D;
+import org.distorted.main.R;
+import org.distorted.main.RubikActivity;
+
+import java.io.IOException;
+import java.io.InputStream;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class RubikControlWhole
   {
-  private static final int NUM_NODE = 1;
+  private static final int NUM_NODE = 2;
+  private static final int NUM_EFFE = 2;
 
   private final RubikControl mControl;
   private DistortedEffects[] mEffects;
@@ -42,28 +51,47 @@ class RubikControlWhole
   private Dynamic3D mDynamic;
   private MatrixEffectScale mScale;
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+   private Bitmap openBitmap(RubikActivity act, int resource)
+     {
+     try(InputStream is = act.getResources().openRawResource(resource) )
+       {
+       return BitmapFactory.decodeStream(is);
+       }
+     catch(IOException e)
+       {
+       // ignore
+       }
+
+     return null;
+     }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private void createEffects()
     {
     if( mEffects==null )
       {
-      mEffects   = new DistortedEffects[NUM_NODE];
+      mEffects   = new DistortedEffects[NUM_EFFE];
       mEffects[0]= new DistortedEffects();
+      mEffects[1]= new DistortedEffects();
 
-      Static3D scaleStart= new Static3D(1,1,1);
-      Static3D scaleEnd  = new Static3D(1000,1000,1000);
+      float scaleCirc = 150;
+      float scaleHand = 300;
+
+      Static3D scale0 = new Static3D(scaleCirc,scaleCirc,scaleCirc);
+      Static3D scale1 = new Static3D(scaleHand,scaleHand,scaleHand);
 
       mDynamic = new Dynamic3D(10000,0.5f);
-      mDynamic.add(scaleStart);
-      mDynamic.add(scaleEnd  );
-      mDynamic.add(scaleStart);
+      mDynamic.add(scale0);
       mDynamic.setMode(Dynamic.MODE_PATH);
 
       mScale = new MatrixEffectScale(mDynamic);
       mScale.notifyWhenFinished(mControl);
       mEffectID = mScale.getID();
       mEffects[0].apply(mScale);
+      mEffects[1].apply( new MatrixEffectScale(scale1));
       }
     else
       {
@@ -79,11 +107,26 @@ class RubikControlWhole
     if( mNodes==null )
       {
       mNodes = new DistortedNode[NUM_NODE];
-      MeshQuad mesh = new MeshQuad();
-      DistortedTexture texture = new DistortedTexture();
-      texture.setColorARGB(0xffff0000);
-
-      mNodes[0]= new DistortedNode(texture,mEffects[0],mesh);
+      RubikActivity act = mControl.getActivity();
+
+      if( act!=null )
+        {
+        MeshQuad mesh = new MeshQuad();
+
+        Bitmap bmpCirc = openBitmap(act, R.drawable.ui_fading_circle);
+        DistortedTexture textureCirc = new DistortedTexture();
+        textureCirc.setTexture(bmpCirc);
+        mNodes[0]= new DistortedNode(textureCirc,mEffects[0],mesh);
+
+        Bitmap bmpHand = openBitmap(act, R.drawable.ui_hand_pointer);
+        DistortedTexture textureHand = new DistortedTexture();
+        textureHand.setTexture(bmpHand);
+        mNodes[1]= new DistortedNode(textureHand,mEffects[1],mesh);
+        }
+      else
+        {
+        android.util.Log.e("D", "Activity NULL!!");
+        }
       }
     }
 
diff --git a/src/main/res/drawable-nodpi/ui_fading_circle.png b/src/main/res/drawable-nodpi/ui_fading_circle.png
new file mode 100644
index 00000000..a1c9ae21
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_fading_circle.png differ
diff --git a/src/main/res/drawable-nodpi/ui_hand_pointer.png b/src/main/res/drawable-nodpi/ui_hand_pointer.png
new file mode 100644
index 00000000..78cc84e6
Binary files /dev/null and b/src/main/res/drawable-nodpi/ui_hand_pointer.png differ
