commit e7f85322dfd9e525f816f5fa96c088136e77ea8d
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Mar 6 16:50:31 2020 +0000

    Progress with of Pyraminx.
    Bugfix for joining a single Mesh!

diff --git a/src/main/java/org/distorted/library/mesh/MeshBase.java b/src/main/java/org/distorted/library/mesh/MeshBase.java
index c7bda8b..32bb271 100644
--- a/src/main/java/org/distorted/library/mesh/MeshBase.java
+++ b/src/main/java/org/distorted/library/mesh/MeshBase.java
@@ -186,75 +186,81 @@ public abstract class MeshBase
      {
      MeshBase mesh;
      Component comp;
-     int com, num, len = meshes.length;
+     int numComponents, numVertices, numMeshes = meshes.length;
      int origVertices = mNumVertices;
 
      // compute new numVertices; take care of Components
 
      if( origVertices>0 )
        {
-       com = mComponent.size();
+       numComponents = mComponent.size();
        mNumVertices+= ( mNumVertices%2==1 ? 2:1 );
-       mComponent.get(com-1).mEndIndex = mNumVertices;
+       mComponent.get(numComponents-1).mEndIndex = mNumVertices;
        }
 
-     for(int i=0; i<len; i++)
+     for(int i=0; i<numMeshes; i++)
        {
        mesh = meshes[i];
-       com = mesh.mComponent.size();
+       numComponents = mesh.mComponent.size();
 
-       for(int j=0; j<com; j++)
+       for(int j=0; j<numComponents; j++)
          {
          comp = new Component(mesh.mComponent.get(j));
          comp.mEndIndex += mNumVertices;
          mComponent.add(comp);
          }
 
-       num = mesh.mNumVertices;
+       numVertices = mesh.mNumVertices;
 
-       if( mNumVertices==0 ) mNumVertices += (num%2==1 ? num+2 : num+1);
-       else if( i==len-1 )   mNumVertices += (num+1);
-       else                  mNumVertices += (num%2==1 ? num+3 : num+2);
+       if( mNumVertices==0 )
+         {
+         if( numMeshes>1 )
+            mNumVertices += (numVertices%2==1 ? numVertices+2 : numVertices+1);
+         else
+            mNumVertices +=  numVertices;
+         }
+       else if( i==numMeshes-1 ) mNumVertices += (numVertices+1);
+       else                      mNumVertices += (numVertices%2==1 ? numVertices+3 : numVertices+2);
        }
 
      // allocate new attrib array
      float[] newAttribs = new float[VERT_ATTRIBS*mNumVertices];
-     num = origVertices;
+     numVertices = origVertices;
 
      if( origVertices>0 )
        {
-       System.arraycopy(mVertAttribs,                             0, newAttribs,                         0, VERT_ATTRIBS*num);
+       System.arraycopy(mVertAttribs,                             0, newAttribs,                         0, VERT_ATTRIBS*numVertices);
        System.arraycopy(mVertAttribs, VERT_ATTRIBS*(origVertices-1), newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS    );
        origVertices++;
 
-       if( num%2==1 )
+       if( numVertices%2==1 )
          {
          System.arraycopy(mVertAttribs, VERT_ATTRIBS*(origVertices-1), newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS);
          origVertices++;
          }
        }
 
-     for(int i=0; i<len; i++)
+     for(int i=0; i<numMeshes; i++)
        {
        mesh = meshes[i];
-       num = mesh.mNumVertices;
+       numVertices = mesh.mNumVertices;
 
        if( origVertices>0 )
          {
          System.arraycopy(mesh.mVertAttribs, 0, newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS    );
          origVertices++;
          }
-       System.arraycopy(mesh.mVertAttribs, 0, newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS*num);
-       origVertices+=num;
+       System.arraycopy(mesh.mVertAttribs, 0, newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS*numVertices);
+       origVertices+=numVertices;
 
-       if( i<len-1 )
+       if( i<numMeshes-1 )
          {
-         System.arraycopy(mesh.mVertAttribs, VERT_ATTRIBS*(num-1), newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS);
+         System.arraycopy(mesh.mVertAttribs, VERT_ATTRIBS*(numVertices-1), newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS);
          origVertices++;
 
-         if( num%2==1 )
+         if( numVertices%2==1 )
            {
-           System.arraycopy(mesh.mVertAttribs, VERT_ATTRIBS*(num-1), newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS);
+           System.arraycopy(mesh.mVertAttribs, VERT_ATTRIBS*(numVertices-1), newAttribs, VERT_ATTRIBS*origVertices, VERT_ATTRIBS);
            origVertices++;
            }
          }
