commit cbd502ec9f750fda6095f5b4f75279d27ab88911
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon May 18 22:22:52 2020 +0100

    Progress with the Predeform app; deepCopy for the Meshes; various fixes.

diff --git a/src/main/java/org/distorted/library/mesh/MeshBase.java b/src/main/java/org/distorted/library/mesh/MeshBase.java
index 4389c04..d9b0cf2 100644
--- a/src/main/java/org/distorted/library/mesh/MeshBase.java
+++ b/src/main/java/org/distorted/library/mesh/MeshBase.java
@@ -137,8 +137,12 @@ public abstract class MeshBase
      mVBO = new InternalBuffer(GLES30.GL_ARRAY_BUFFER             , GLES30.GL_STATIC_READ);
      mTFO = new InternalBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, GLES30.GL_STATIC_READ);
 
-     System.arraycopy(original.mVertAttribs,0,mVertAttribs,0,original.mNumVertices*VERT_ATTRIBS);
-     setAttribs(mVertAttribs);
+     mNumVertices = original.mNumVertices;
+     mVertAttribs = new float[mNumVertices*VERT_ATTRIBS];
+     System.arraycopy(original.mVertAttribs,0,mVertAttribs,0,mNumVertices*VERT_ATTRIBS);
+
+     mVBO.invalidate();
+     mTFO.invalidate();
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -330,7 +334,7 @@ public abstract class MeshBase
 
      for(int i=0; i<numComp; i++)
        {
-       mComponent.get(i).mQueue.send(0.0f,4);
+       mComponent.get(i).mQueue.send(0.0f,3);
        }
      }
 
@@ -554,6 +558,12 @@ public abstract class MeshBase
      {
      return (component>=0 && component<mComponent.size()) ? mComponent.get(component).mTextureMap : null;
      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * Deep copy
+ */
+   public abstract MeshBase deepCopy();
    }
 
 
diff --git a/src/main/java/org/distorted/library/mesh/MeshCubes.java b/src/main/java/org/distorted/library/mesh/MeshCubes.java
index 340f8d9..bc28882 100644
--- a/src/main/java/org/distorted/library/mesh/MeshCubes.java
+++ b/src/main/java/org/distorted/library/mesh/MeshCubes.java
@@ -49,7 +49,7 @@ public class MeshCubes extends MeshBase
    private static final float[] mNormalY = new float[4];
    private static final float[] mNormalZ = new float[4];
 
-   private class Edge
+   private static class Edge
      {
      final int side; 
      final int row;
@@ -924,4 +924,22 @@ public class MeshCubes extends MeshBase
    prepareDataStructures(cols,rows,slices);
    build();
    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+ public MeshCubes(MeshCubes mesh)
+   {
+   super(mesh);
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+ public MeshCubes deepCopy()
+   {
+   return new MeshCubes(this);
+   }
  }
diff --git a/src/main/java/org/distorted/library/mesh/MeshJoined.java b/src/main/java/org/distorted/library/mesh/MeshJoined.java
index dc9e9af..dac97b9 100644
--- a/src/main/java/org/distorted/library/mesh/MeshJoined.java
+++ b/src/main/java/org/distorted/library/mesh/MeshJoined.java
@@ -35,6 +35,24 @@ public class MeshJoined extends MeshBase
     join(meshes);
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+ public MeshJoined(MeshJoined mesh)
+   {
+   super(mesh);
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+ public MeshJoined deepCopy()
+   {
+   return new MeshJoined(this);
+   }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * Return how many basic Meshes is this Mesh joined from.
diff --git a/src/main/java/org/distorted/library/mesh/MeshQuad.java b/src/main/java/org/distorted/library/mesh/MeshQuad.java
index 4db3e0c..7dc3136 100644
--- a/src/main/java/org/distorted/library/mesh/MeshQuad.java
+++ b/src/main/java/org/distorted/library/mesh/MeshQuad.java
@@ -66,4 +66,22 @@ public class MeshQuad extends MeshBase
 
     setAttribs(attribs);
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+  public MeshQuad(MeshQuad mesh)
+    {
+    super(mesh);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+  public MeshQuad deepCopy()
+    {
+    return new MeshQuad(this);
+    }
   }
\ No newline at end of file
diff --git a/src/main/java/org/distorted/library/mesh/MeshRectangles.java b/src/main/java/org/distorted/library/mesh/MeshRectangles.java
index cd6d190..25fa60b 100644
--- a/src/main/java/org/distorted/library/mesh/MeshRectangles.java
+++ b/src/main/java/org/distorted/library/mesh/MeshRectangles.java
@@ -170,4 +170,22 @@ public class MeshRectangles extends MeshBase
 
     setAttribs(attribs);
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+ public MeshRectangles(MeshRectangles mesh)
+   {
+   super(mesh);
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+ public MeshRectangles deepCopy()
+   {
+   return new MeshRectangles(this);
+   }
  }
\ No newline at end of file
diff --git a/src/main/java/org/distorted/library/mesh/MeshSphere.java b/src/main/java/org/distorted/library/mesh/MeshSphere.java
index 51fd536..45ce7bc 100644
--- a/src/main/java/org/distorted/library/mesh/MeshSphere.java
+++ b/src/main/java/org/distorted/library/mesh/MeshSphere.java
@@ -267,4 +267,22 @@ public class MeshSphere extends MeshBase
 
     setAttribs(attribs);
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+  public MeshSphere(MeshSphere mesh)
+    {
+    super(mesh);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+  public MeshSphere deepCopy()
+    {
+    return new MeshSphere(this);
+    }
   }
\ No newline at end of file
diff --git a/src/main/java/org/distorted/library/mesh/MeshTriangles.java b/src/main/java/org/distorted/library/mesh/MeshTriangles.java
index c960006..3336789 100644
--- a/src/main/java/org/distorted/library/mesh/MeshTriangles.java
+++ b/src/main/java/org/distorted/library/mesh/MeshTriangles.java
@@ -119,4 +119,22 @@ public class MeshTriangles extends MeshBase
 
      setAttribs(attribs);
      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+  public MeshTriangles(MeshTriangles mesh)
+    {
+    super(mesh);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * deep copy.
+ */
+  public MeshTriangles deepCopy()
+    {
+    return new MeshTriangles(this);
+    }
   }
