commit 302e40d1d1651777b46c2d573b9377f604dbf0ec
Author: leszek <leszek@koltunski.pl>
Date:   Tue Jun 27 01:16:52 2023 +0200

    MeshBandedTriangle implemented

diff --git a/src/main/java/org/distorted/examples/meshfile/MeshFileActivity.java b/src/main/java/org/distorted/examples/meshfile/MeshFileActivity.java
index 20e4730..25f3237 100644
--- a/src/main/java/org/distorted/examples/meshfile/MeshFileActivity.java
+++ b/src/main/java/org/distorted/examples/meshfile/MeshFileActivity.java
@@ -44,10 +44,12 @@ public class MeshFileActivity extends Activity implements AdapterView.OnItemSele
     final static int PROCEDURAL = -1;
     final static int POLYGON    = -2;
     final static int MULTIGON   = -3;
+    final static int TRIANGLE   = -4;
 
     private LinearLayout mLayout;
     private int mResource;
-    private String[] mNames = new String[] { "procedural" ,
+    private String[] mNames = new String[] { "triangle"   ,
+                                             "procedural" ,
                                              "polygon"    ,
                                              "multigon"   ,
                                              "deferredjob",
@@ -198,21 +200,22 @@ public class MeshFileActivity extends Activity implements AdapterView.OnItemSele
         {
         switch(pos)
           {
-          case  0: mResource = PROCEDURAL       ; break;
-          case  1: mResource = POLYGON          ; break;
-          case  2: mResource = MULTIGON         ; break;
-          case  3: mResource = R.raw.deferredjob; break;
-          case  4: mResource = R.raw.meshjoin   ; break;
-          case  5: mResource = R.raw.predeform  ; break;
-          case  6: mResource = R.raw.cube2      ; break;
-          case  7: mResource = R.raw.cube3      ; break;
-          case  8: mResource = R.raw.cube4      ; break;
-          case  9: mResource = R.raw.cube5      ; break;
-          case 10: mResource = R.raw.pyra3      ; break;
-          case 11: mResource = R.raw.pyra4      ; break;
-          case 12: mResource = R.raw.pyra5      ; break;
-          case 13: mResource = R.raw.dino       ; break;
-          case 14: mResource = R.raw.skewb      ; break;
+          case  0: mResource = TRIANGLE         ; break;
+          case  1: mResource = PROCEDURAL       ; break;
+          case  2: mResource = POLYGON          ; break;
+          case  3: mResource = MULTIGON         ; break;
+          case  4: mResource = R.raw.deferredjob; break;
+          case  5: mResource = R.raw.meshjoin   ; break;
+          case  6: mResource = R.raw.predeform  ; break;
+          case  7: mResource = R.raw.cube2      ; break;
+          case  8: mResource = R.raw.cube3      ; break;
+          case  9: mResource = R.raw.cube4      ; break;
+          case 10: mResource = R.raw.cube5      ; break;
+          case 11: mResource = R.raw.pyra3      ; break;
+          case 12: mResource = R.raw.pyra4      ; break;
+          case 13: mResource = R.raw.pyra5      ; break;
+          case 14: mResource = R.raw.dino       ; break;
+          case 15: mResource = R.raw.skewb      ; break;
           }
         }
       }
diff --git a/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java b/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
index 473faac..335b641 100644
--- a/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
+++ b/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
@@ -36,6 +36,7 @@ import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedLibrary;
 import org.distorted.library.main.DistortedScreen;
 import org.distorted.library.main.DistortedTexture;
+import org.distorted.library.mesh.MeshBandedTriangle;
 import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshFile;
 import org.distorted.library.mesh.MeshMultigon;
@@ -59,6 +60,7 @@ import javax.microedition.khronos.opengles.GL10;
 import static org.distorted.examples.meshfile.MeshFileActivity.MULTIGON;
 import static org.distorted.examples.meshfile.MeshFileActivity.POLYGON;
 import static org.distorted.examples.meshfile.MeshFileActivity.PROCEDURAL;
+import static org.distorted.examples.meshfile.MeshFileActivity.TRIANGLE;
 import static org.distorted.objectlib.main.TwistyObject.MESH_NICE;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -198,6 +200,10 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Libra
         {
         createMultigon();
         }
+      else if( resourceID==TRIANGLE )
+        {
+        createTriangle();
+        }
       else
         {
         openMesh(resourceID);
@@ -222,11 +228,9 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Libra
       float F = 0.5f;
       float E = SQ3/2;
 
-      if( resourceID == R.raw.deferredjob ||
-          resourceID == R.raw.meshjoin    ||
-          resourceID == PROCEDURAL        ||
-          resourceID == POLYGON           ||
-          resourceID == MULTIGON          ||
+      if( resourceID == R.raw.deferredjob || resourceID == R.raw.meshjoin    ||
+          resourceID == PROCEDURAL        || resourceID == POLYGON           ||
+          resourceID == MULTIGON          || resourceID == TRIANGLE          ||
           resourceID == R.raw.predeform    ) return createWhiteTexture();
 
       if( resourceID == R.raw.cube2       ||
@@ -278,6 +282,25 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Libra
       return bitmap;
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    private void createTriangle()
+      {
+      float[] vL = {-1.0f, -0.5f};
+      float[] vR = { 1.0f, -0.5f};
+      float[] vT = { 0.0f,  1.0f};
+      float C = 2f;
+      float[] bands = { 1.0f, 0.00f*C, /*0.9f, 0.05f*C,*/ 0.8f, 0.06f*C, 0.5f, 0.09f*C, 0.0f, 0.10f*C};
+      float[] normL = { vL[0]-vT[0], vL[1]-vT[1] };
+      float[] normR = { vR[0]-vT[0], vR[1]-vT[1] };
+      int mode = MeshBandedTriangle.MODE_NORMAL;
+      int extraBands    = 2;
+      int extraVertices = 1;
+
+      mMesh = new MeshBandedTriangle(vL,vR,vT,bands,normL,normR,mode,extraBands,extraVertices);
+      mMesh.setEffectAssociation(0,0,0);
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     private void createPolygon()
@@ -287,10 +310,10 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Libra
 
       int extraIndex    = 0;
       int extraVertices = 0;
-      float[] vertices = new float[] { -A,-A, A,-A, A,A, -A,A };
+      float[] vertices = { -A,-A, A,-A, A,A, -A,A };
 
       float C = 2f;
-      float[] bands = new float[] { 1.0f, 0.00f*C, 0.9f, 0.04f*C,  0.8f, 0.07f*C, 0.5f, 0.09f*C, 0.0f, 0.10f*C};
+      float[] bands = { 1.0f, 0.00f*C, 0.9f, 0.04f*C,  0.8f, 0.07f*C, 0.5f, 0.09f*C, 0.0f, 0.10f*C};
 
 /*
       int numBands      = 5;
