Modified BitmapTextPage to always deep clone its mesh since otherwise

BitmapText objects end up sharing them and that's bad.
native-compilation-test
Paul Speed 8 years ago committed by Paul Speed
parent 4b78f099ca
commit c7c239a56f
  1. 23
      jme3-core/src/main/java/com/jme3/font/BitmapTextPage.java

@ -38,10 +38,12 @@ import com.jme3.scene.VertexBuffer;
import com.jme3.scene.VertexBuffer.Type;
import com.jme3.texture.Texture2D;
import com.jme3.util.BufferUtils;
import com.jme3.util.clone.Cloner;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;
import java.util.LinkedList;
import java.util.LinkedList;
/**
* One page per BitmapText Font Texture.
@ -119,10 +121,29 @@ class BitmapTextPage extends Geometry {
@Override
public BitmapTextPage clone() {
BitmapTextPage clone = (BitmapTextPage) super.clone();
clone.mesh = mesh.deepClone();
//clone.mesh = mesh.deepClone();
return clone;
}
/**
* Called internally by com.jme3.util.clone.Cloner. Do not call directly.
*/
@Override
public void cloneFields( Cloner cloner, Object original ) {
Mesh originalMesh = this.mesh;
super.cloneFields(cloner, original);
// BitmapTextPage always requires a new mesh or different
// BitmapText instances will clobber one another.
// But if we were already deep cloning meshes then we don't
// want to do it again... so we'll check first.
if( this.mesh == originalMesh ) {
this.mesh = mesh.deepClone();
}
}
// Here is where one might add JmeCloneable related stuff except
// the old clone() method doesn't actually bother to clone anything.
// The arrays and the pageQuads are shared across all BitmapTextPage

Loading…
Cancel
Save