diff --git a/engine/src/core/com/jme3/post/SceneProcessor.java b/engine/src/core/com/jme3/post/SceneProcessor.java index 80301cb79..7b73706a7 100644 --- a/engine/src/core/com/jme3/post/SceneProcessor.java +++ b/engine/src/core/com/jme3/post/SceneProcessor.java @@ -40,12 +40,12 @@ import com.jme3.texture.FrameBuffer; /** * Scene processors are used to compute/render things before and after the classic render of the scene. * They have to be added to a viewport and are rendered in the order they've been added - * @author Kirill Vainer aka Shadowislord aka Momoko_Fan + * + * @author Kirill Vainer */ public interface SceneProcessor { /** - * For internal use only
* Called in the render thread to initialize the scene processor. * * @param rm The render manager to which the SP was added to @@ -54,7 +54,6 @@ public interface SceneProcessor { public void initialize(RenderManager rm, ViewPort vp); /** - * For internal use only
* Called when the resolution of the viewport has been changed. * @param vp */ @@ -67,7 +66,6 @@ public interface SceneProcessor { public boolean isInitialized(); /** - * For internal use only
* Called before a frame * * @param tpf Time per frame @@ -75,7 +73,6 @@ public interface SceneProcessor { public void preFrame(float tpf); /** - * For internal use only
* Called after the scene graph has been queued, but before it is flushed. * * @param rq The render queue @@ -83,7 +80,6 @@ public interface SceneProcessor { public void postQueue(RenderQueue rq); /** - * For internal use only
* Called after a frame has been rendered and the queue flushed. * * @param out The FB to which the scene was rendered. @@ -91,7 +87,6 @@ public interface SceneProcessor { public void postFrame(FrameBuffer out); /** - * For internal use only
* Called when the SP is removed from the RM. */ public void cleanup(); diff --git a/engine/src/desktop/com/jme3/asset/plugins/HttpZipLocator.java b/engine/src/desktop/com/jme3/asset/plugins/HttpZipLocator.java index b7293b9c6..f5fbfd13c 100644 --- a/engine/src/desktop/com/jme3/asset/plugins/HttpZipLocator.java +++ b/engine/src/desktop/com/jme3/asset/plugins/HttpZipLocator.java @@ -40,6 +40,12 @@ import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.CharacterCodingException; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CoderResult; import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; @@ -57,6 +63,15 @@ public class HttpZipLocator implements AssetLocator { private int tableOffset; private int tableLength; private HashMap entries; + + private static final ByteBuffer byteBuf = ByteBuffer.allocate(250); + private static final CharBuffer charBuf = CharBuffer.allocate(250); + private static final CharsetDecoder utf8Decoder; + + static { + Charset utf8 = Charset.forName("UTF-8"); + utf8Decoder = utf8.newDecoder(); + } private static class ZipEntry2 { String name; @@ -94,66 +109,48 @@ public class HttpZipLocator implements AssetLocator { (((long)(b[off]&0xff)) << 24); } - private static String getUTF8String(byte[] b, int off, int len) { - // First, count the number of characters in the sequence - int count = 0; - int max = off + len; - int i = off; - while (i < max) { - int c = b[i++] & 0xff; - switch (c >> 4) { - case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: - // 0xxxxxxx - count++; - break; - case 12: case 13: - // 110xxxxx 10xxxxxx - if ((int)(b[i++] & 0xc0) != 0x80) { - throw new IllegalArgumentException(); - } - count++; - break; - case 14: - // 1110xxxx 10xxxxxx 10xxxxxx - if (((int)(b[i++] & 0xc0) != 0x80) || - ((int)(b[i++] & 0xc0) != 0x80)) { - throw new IllegalArgumentException(); - } - count++; - break; - default: - // 10xxxxxx, 1111xxxx - throw new IllegalArgumentException(); - } - } - if (i != max) { - throw new IllegalArgumentException(); - } - // Now decode the characters... - char[] cs = new char[count]; - i = 0; - while (off < max) { - int c = b[off++] & 0xff; - switch (c >> 4) { - case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: - // 0xxxxxxx - cs[i++] = (char)c; - break; - case 12: case 13: - // 110xxxxx 10xxxxxx - cs[i++] = (char)(((c & 0x1f) << 6) | (b[off++] & 0x3f)); - break; - case 14: - // 1110xxxx 10xxxxxx 10xxxxxx - int t = (b[off++] & 0x3f) << 6; - cs[i++] = (char)(((c & 0x0f) << 12) | t | (b[off++] & 0x3f)); - break; - default: - // 10xxxxxx, 1111xxxx - throw new IllegalArgumentException(); - } - } - return new String(cs, 0, count); + private static String getUTF8String(byte[] b, int off, int len) throws CharacterCodingException { + StringBuilder sb = new StringBuilder(); + + int read = 0; + while (read < len){ + // Either read n remaining bytes in b or 250 if n is higher. + int toRead = Math.min(len - read, byteBuf.capacity()); + + boolean endOfInput = toRead < byteBuf.capacity(); + + // read 'toRead' bytes into byteBuf + byteBuf.put(b, off + read, toRead); + + // set limit to position and set position to 0 + // so data can be decoded + byteBuf.flip(); + + // decode data in byteBuf + CoderResult result = utf8Decoder.decode(byteBuf, charBuf, endOfInput); + + // if the result is not an underflow its an error + // that cannot be handled. + // if the error is an underflow and its the end of input + // then the decoder expects more bytes but there are no more => error + if (!result.isUnderflow() || !endOfInput){ + result.throwException(); + } + + // flip the char buf to get the string just decoded + charBuf.flip(); + + // append the decoded data into the StringBuilder + sb.append(charBuf.toString()); + + // clear buffers for next use + byteBuf.clear(); + charBuf.clear(); + + read += toRead; + } + + return sb.toString(); } private InputStream readData(int offset, int length) throws IOException{ diff --git a/engine/src/test-data/Textures/Terrain/grid/alphamap_0_0.png b/engine/src/test-data/Textures/Terrain/grid/alphamap_0_0.png deleted file mode 100644 index 98ee74a76..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/alphamap_0_0.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/alphamap_0_512.png b/engine/src/test-data/Textures/Terrain/grid/alphamap_0_512.png deleted file mode 100644 index 01e46af39..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/alphamap_0_512.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/alphamap_512_0.png b/engine/src/test-data/Textures/Terrain/grid/alphamap_512_0.png deleted file mode 100644 index 3a919f774..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/alphamap_512_0.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/alphamap_512_512.png b/engine/src/test-data/Textures/Terrain/grid/alphamap_512_512.png deleted file mode 100644 index e10c087b6..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/alphamap_512_512.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_-1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_-1_-1.png deleted file mode 100644 index 3ade16282..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_-1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_-2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_-1_-2.png deleted file mode 100644 index b5ab35c7c..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_-2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_0.png b/engine/src/test-data/Textures/Terrain/grid/terrain_-1_0.png deleted file mode 100644 index e01b3b8be..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_0.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_-1_1.png deleted file mode 100644 index 1c3a395a0..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_-1_2.png deleted file mode 100644 index 552516e1d..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_3.png b/engine/src/test-data/Textures/Terrain/grid/terrain_-1_3.png deleted file mode 100644 index bf32bd614..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_3.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_4.png b/engine/src/test-data/Textures/Terrain/grid/terrain_-1_4.png deleted file mode 100644 index c8901b896..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_-1_4.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_0_-1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_0_-1.png deleted file mode 100644 index bcfbf9dea..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_0_-1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_0_-2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_0_-2.png deleted file mode 100644 index 3b98e1a12..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_0_-2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_0_-3.png b/engine/src/test-data/Textures/Terrain/grid/terrain_0_-3.png deleted file mode 100644 index 3615981b3..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_0_-3.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_0_0.png b/engine/src/test-data/Textures/Terrain/grid/terrain_0_0.png deleted file mode 100644 index 4303a523e..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_0_0.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_0_1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_0_1.png deleted file mode 100644 index 2cf4130d2..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_0_1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_0_2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_0_2.png deleted file mode 100644 index 3125d53ea..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_0_2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_0_3.png b/engine/src/test-data/Textures/Terrain/grid/terrain_0_3.png deleted file mode 100644 index 666d8da74..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_0_3.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_0_4.png b/engine/src/test-data/Textures/Terrain/grid/terrain_0_4.png deleted file mode 100644 index e06f0a414..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_0_4.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_1_-1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_1_-1.png deleted file mode 100644 index 193ed1d4f..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_1_-1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_1_-2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_1_-2.png deleted file mode 100644 index fd2c1ca34..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_1_-2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_1_-3.png b/engine/src/test-data/Textures/Terrain/grid/terrain_1_-3.png deleted file mode 100644 index 10b0f44f0..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_1_-3.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_1_0.png b/engine/src/test-data/Textures/Terrain/grid/terrain_1_0.png deleted file mode 100644 index 29603d4c7..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_1_0.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_1_1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_1_1.png deleted file mode 100644 index b98cb1695..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_1_1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_1_2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_1_2.png deleted file mode 100644 index eb357d64a..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_1_2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_1_3.png b/engine/src/test-data/Textures/Terrain/grid/terrain_1_3.png deleted file mode 100644 index dda11d702..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_1_3.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_1_4.png b/engine/src/test-data/Textures/Terrain/grid/terrain_1_4.png deleted file mode 100644 index e24e210f0..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_1_4.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_2_-1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_2_-1.png deleted file mode 100644 index 1f727ad32..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_2_-1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_2_-2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_2_-2.png deleted file mode 100644 index a682d7944..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_2_-2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_2_-3.png b/engine/src/test-data/Textures/Terrain/grid/terrain_2_-3.png deleted file mode 100644 index e48d50f06..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_2_-3.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_2_0.png b/engine/src/test-data/Textures/Terrain/grid/terrain_2_0.png deleted file mode 100644 index 0e1be3f9d..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_2_0.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_2_1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_2_1.png deleted file mode 100644 index 7c01134e3..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_2_1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_2_2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_2_2.png deleted file mode 100644 index e3b4aa12a..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_2_2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_2_3.png b/engine/src/test-data/Textures/Terrain/grid/terrain_2_3.png deleted file mode 100644 index c64d6837b..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_2_3.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_2_4.png b/engine/src/test-data/Textures/Terrain/grid/terrain_2_4.png deleted file mode 100644 index 0d3a71222..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_2_4.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_3_-1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_3_-1.png deleted file mode 100644 index 901fdeffc..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_3_-1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_3_-2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_3_-2.png deleted file mode 100644 index bb017dfcf..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_3_-2.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_3_-3.png b/engine/src/test-data/Textures/Terrain/grid/terrain_3_-3.png deleted file mode 100644 index 7e20923fb..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_3_-3.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_3_0.png b/engine/src/test-data/Textures/Terrain/grid/terrain_3_0.png deleted file mode 100644 index 3e64f53e5..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_3_0.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_3_1.png b/engine/src/test-data/Textures/Terrain/grid/terrain_3_1.png deleted file mode 100644 index 994c4372f..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_3_1.png and /dev/null differ diff --git a/engine/src/test-data/Textures/Terrain/grid/terrain_3_2.png b/engine/src/test-data/Textures/Terrain/grid/terrain_3_2.png deleted file mode 100644 index 98ec28079..000000000 Binary files a/engine/src/test-data/Textures/Terrain/grid/terrain_3_2.png and /dev/null differ diff --git a/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java b/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java index 729234d62..437114ca9 100644 --- a/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java +++ b/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java @@ -5,6 +5,8 @@ import java.util.List; import com.jme3.app.SimpleApplication; import com.jme3.app.state.ScreenshotAppState; +import com.jme3.asset.plugins.HttpZipLocator; +import com.jme3.asset.plugins.ZipLocator; import com.jme3.bullet.BulletAppState; import com.jme3.bullet.collision.shapes.CapsuleCollisionShape; import com.jme3.bullet.collision.shapes.HeightfieldCollisionShape; @@ -20,12 +22,11 @@ import com.jme3.renderer.Camera; import com.jme3.terrain.geomipmap.TerrainGrid; import com.jme3.terrain.geomipmap.TerrainGridListener; import com.jme3.terrain.geomipmap.TerrainLodControl; -import com.jme3.terrain.geomipmap.TerrainQuad; -import com.jme3.terrain.heightmap.FractalHeightMapGrid; import com.jme3.terrain.heightmap.ImageBasedHeightMapGrid; import com.jme3.terrain.heightmap.Namer; import com.jme3.texture.Texture; import com.jme3.texture.Texture.WrapMode; +import java.io.File; import org.novyon.noise.ShaderUtils; import org.novyon.noise.basis.FilteredBasis; import org.novyon.noise.filter.IterativeFilter; @@ -58,6 +59,13 @@ public class TerrainGridAlphaMapTest extends SimpleApplication { @Override public void simpleInitApp() { + File file = new File("mountains.zip"); + if (!file.exists()) { + assetManager.registerLocator("http://jmonkeyengine.googlecode.com/files/mountains.zip", HttpZipLocator.class); + }else{ + assetManager.registerLocator("mountains.zip", ZipLocator.class); + } + this.flyCam.setMoveSpeed(100f); ScreenshotAppState state = new ScreenshotAppState(); this.stateManager.attach(state); @@ -126,9 +134,8 @@ public class TerrainGridAlphaMapTest extends SimpleApplication { ground.addPreFilter(this.iterate); this.terrain = new TerrainGrid("terrain", 65, 1025, new ImageBasedHeightMapGrid(assetManager, new Namer() { - public String getName(int x, int y) { - return "Textures/Terrain/grid/terrain_" + x + "_" + y + ".png"; + return "Scenes/TerrainAlphaTest/terrain_" + x + "_" + y + ".png"; } })); this.terrain.setMaterial(this.matRock); @@ -139,7 +146,9 @@ public class TerrainGridAlphaMapTest extends SimpleApplication { } public Material tileLoaded(Material material, Vector3f cell) { - material.setTexture("Alpha", assetManager.loadTexture("Textures/Terrain/grid/alphamap_" + (int)Math.abs(512 * (cell.x % 2)) + "_" + (int)Math.abs(512 * (cell.z % 2)) + ".png")); + int x = (int)Math.abs(512 * (cell.x % 2)); + int z = (int)Math.abs(512 * (cell.z % 2)); + material.setTexture("Alpha", assetManager.loadTexture("Scenes/TerrainAlphaTest/alphamap_" + x + "_" + z + ".png")); return material; } }); diff --git a/engine/src/test/jme3test/terrain/TerrainGridTest.java b/engine/src/test/jme3test/terrain/TerrainGridTest.java index 5d6b2cd98..73ed5581d 100644 --- a/engine/src/test/jme3test/terrain/TerrainGridTest.java +++ b/engine/src/test/jme3test/terrain/TerrainGridTest.java @@ -61,9 +61,9 @@ public class TerrainGridTest extends SimpleApplication { public void simpleInitApp() { File file = new File("mountains.zip"); if (!file.exists()) { - assetManager.registerLocator("http://jmonkeyengine.googlecode.com/files/mountains.zip", HttpZipLocator.class.getName()); + assetManager.registerLocator("http://jmonkeyengine.googlecode.com/files/mountains.zip", HttpZipLocator.class); }else{ - assetManager.registerLocator("mountains.zip", ZipLocator.class.getName()); + assetManager.registerLocator("mountains.zip", ZipLocator.class); } this.flyCam.setMoveSpeed(100f); diff --git a/engine/src/tools/jme3tools/optimize/GeometryBatchFactory.java b/engine/src/tools/jme3tools/optimize/GeometryBatchFactory.java index 2eb4623fd..2deff6917 100644 --- a/engine/src/tools/jme3tools/optimize/GeometryBatchFactory.java +++ b/engine/src/tools/jme3tools/optimize/GeometryBatchFactory.java @@ -2,6 +2,7 @@ package jme3tools.optimize; import com.jme3.material.Material; import com.jme3.math.Matrix4f; +import com.jme3.math.Transform; import com.jme3.math.Vector3f; import com.jme3.scene.Geometry; import com.jme3.scene.Mesh; @@ -348,6 +349,9 @@ public class GeometryBatchFactory { geometry.removeFromParent(); } + // Since the scene is returned unaltered the transform must be reset + scene.setLocalTransform(Transform.IDENTITY); + return scene; }