Modified BitmapTextPage to always deep clone its mesh since otherwise
BitmapText objects end up sharing them and that's bad.
This commit is contained in:
parent
4b78f099ca
commit
c7c239a56f
@ -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…
x
Reference in New Issue
Block a user