OSDN Git Service

ParticleEffect: Don't dispose external textures
authorhneuer <hanno.neuer@gmail.com>
Fri, 4 Oct 2013 20:02:20 +0000 (22:02 +0200)
committerhneuer <hanno.neuer@gmail.com>
Fri, 4 Oct 2013 20:02:20 +0000 (22:02 +0200)
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/graphics/g2d/ParticleEffect.java
gdx/src/com/badlogic/gdx/graphics/g2d/ParticleEffect.java

index a18b16b..041580c 100644 (file)
@@ -35,6 +35,7 @@ import com.badlogic.gdx.utils.StreamUtils;
 public class ParticleEffect implements Disposable {\r
        private final Array<ParticleEmitter> emitters;\r
        private BoundingBox bounds;\r
+       private boolean ownsTexture;\r
 \r
        public ParticleEffect () {\r
                emitters = new Array(8);\r
@@ -170,6 +171,7 @@ public class ParticleEffect implements Disposable {
        }\r
 \r
        public void loadEmitterImages (FileHandle imagesDir) {\r
+               ownsTexture = true;\r
                for (int i = 0, n = emitters.size; i < n; i++) {\r
                        ParticleEmitter emitter = emitters.get(i);\r
                        String imagePath = emitter.getImagePath();\r
@@ -186,6 +188,7 @@ public class ParticleEffect implements Disposable {
        /** Disposes the texture for each sprite for each ParticleEmitter. */\r
        @Override\r
        public void dispose () {\r
+               if (!ownsTexture) return;\r
                for (int i = 0, n = emitters.size; i < n; i++) {\r
                        ParticleEmitter emitter = emitters.get(i);\r
                        emitter.getSprite().getTexture().dispose();\r
index c093377..3c29c99 100644 (file)
@@ -37,6 +37,7 @@ import com.badlogic.gdx.utils.StreamUtils;
 public class ParticleEffect implements Disposable {\r
        private final Array<ParticleEmitter> emitters;\r
        private BoundingBox bounds;\r
+       private boolean ownsTexture;\r
 \r
        public ParticleEffect () {\r
                emitters = new Array(8);\r
@@ -188,6 +189,7 @@ public class ParticleEffect implements Disposable {
        }\r
 \r
        public void loadEmitterImages (FileHandle imagesDir) {\r
+               ownsTexture = true;\r
                for (int i = 0, n = emitters.size; i < n; i++) {\r
                        ParticleEmitter emitter = emitters.get(i);\r
                        String imagePath = emitter.getImagePath();\r
@@ -203,6 +205,7 @@ public class ParticleEffect implements Disposable {
 \r
        /** Disposes the texture for each sprite for each ParticleEmitter. */\r
        public void dispose () {\r
+               if (!ownsTexture) return;\r
                for (int i = 0, n = emitters.size; i < n; i++) {\r
                        ParticleEmitter emitter = emitters.get(i);\r
                        emitter.getSprite().getTexture().dispose();\r