commit 71d8aba1201cbf89bb62e2d6076755a970f6d846
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat May 30 21:07:11 2020 +0100

    Bugfix ( Mesh shallow copy wasn't working )

diff --git a/src/main/java/org/distorted/library/mesh/DeferredJobs.java b/src/main/java/org/distorted/library/mesh/DeferredJobs.java
index 1d011cb..9dba706 100644
--- a/src/main/java/org/distorted/library/mesh/DeferredJobs.java
+++ b/src/main/java/org/distorted/library/mesh/DeferredJobs.java
@@ -175,14 +175,14 @@ public class DeferredJobs
       jn.mPrevJobs.remove(node);
       }
 
-    node.mJob.mTarget.mJobNode = null;
+    node.mJob.mTarget.mJobNode[0] = null;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   static JobNode vertex(MeshBase target, VertexEffect effect)
     {
-    JobNode jn = target.mJobNode;
+    JobNode jn = target.mJobNode[0];
 
     if( jn==null )
       {
diff --git a/src/main/java/org/distorted/library/mesh/MeshBase.java b/src/main/java/org/distorted/library/mesh/MeshBase.java
index c8e9e58..0725c4d 100644
--- a/src/main/java/org/distorted/library/mesh/MeshBase.java
+++ b/src/main/java/org/distorted/library/mesh/MeshBase.java
@@ -82,7 +82,7 @@ public abstract class MeshBase
    private float mInflate;
    private int[] mAssociation;
 
-   DeferredJobs.JobNode mJobNode;
+   DeferredJobs.JobNode[] mJobNode;
 
    private static int[] mComponentAssociationH = new int[EffectQueue.MAIN_VARIANTS];
 
@@ -124,6 +124,8 @@ public abstract class MeshBase
      mComponent  = new ArrayList<>();
      mAssociation= new int[MAX_COMPONENTS];
 
+     mJobNode = new DeferredJobs.JobNode[1];
+
      for(int i=0; i<MAX_COMPONENTS; i++) mAssociation[i] = DEFAULT_ASSOCIATION;
 
      mVBO1= new InternalBuffer(GLES30.GL_ARRAY_BUFFER             , GLES30.GL_STATIC_READ);
@@ -154,9 +156,11 @@ public abstract class MeshBase
 
      if( deep )
        {
-       if( original.mJobNode!=null )
+       mJobNode = new DeferredJobs.JobNode[1];
+
+       if( original.mJobNode[0]!=null )
          {
-         mJobNode = new DeferredJobs.JobNode(original.mJobNode);
+         mJobNode[0] = new DeferredJobs.JobNode(original.mJobNode[0]);
          }
 
        mVBO1= new InternalBuffer(GLES30.GL_ARRAY_BUFFER, GLES30.GL_STATIC_READ);
@@ -166,9 +170,9 @@ public abstract class MeshBase
        }
      else
        {
-       mJobNode         = original.mJobNode;
-       mVBO1            = original.mVBO1;
-       mVertAttribs1    = original.mVertAttribs1;
+       mJobNode      = original.mJobNode;
+       mVBO1         = original.mVBO1;
+       mVertAttribs1 = original.mVertAttribs1;
        }
 
      mVBO2= new InternalBuffer(GLES30.GL_ARRAY_BUFFER, GLES30.GL_STATIC_READ);
@@ -399,9 +403,9 @@ public abstract class MeshBase
  */
    public void bindVertexAttribs(DistortedProgram program)
      {
-     if( mJobNode!=null )
+     if( mJobNode[0]!=null )
        {
-       mJobNode.execute();  // this will set itself to null
+       mJobNode[0].execute();  // this will set itself to null
        }
 
      int index1 = mVBO1.createImmediately(mNumVertices*VERT1_SIZE, mVertAttribs1);
@@ -508,7 +512,7 @@ public abstract class MeshBase
  */
    public void apply(VertexEffect effect)
      {
-     mJobNode = DeferredJobs.vertex(this,effect);
+     mJobNode[0] = DeferredJobs.vertex(this,effect);
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
