From cdedfe1a98c69c9fe9f7284d284bf620525593c9 Mon Sep 17 00:00:00 2001 From: hneuer Date: Sat, 24 Aug 2013 13:33:48 +0200 Subject: [PATCH] Added ParticleLoader. --- gdx/src/com/badlogic/gdx/assets/AssetManager.java | 3 ++ .../gdx/assets/loaders/ParticleEffectLoader.java | 49 ++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 gdx/src/com/badlogic/gdx/assets/loaders/ParticleEffectLoader.java diff --git a/gdx/src/com/badlogic/gdx/assets/AssetManager.java b/gdx/src/com/badlogic/gdx/assets/AssetManager.java index 22bf9d171..f84e4471e 100644 --- a/gdx/src/com/badlogic/gdx/assets/AssetManager.java +++ b/gdx/src/com/badlogic/gdx/assets/AssetManager.java @@ -28,6 +28,7 @@ import com.badlogic.gdx.assets.loaders.BitmapFontLoader; import com.badlogic.gdx.assets.loaders.FileHandleResolver; import com.badlogic.gdx.assets.loaders.ModelLoader; import com.badlogic.gdx.assets.loaders.MusicLoader; +import com.badlogic.gdx.assets.loaders.ParticleEffectLoader; import com.badlogic.gdx.assets.loaders.PixmapLoader; import com.badlogic.gdx.assets.loaders.SkinLoader; import com.badlogic.gdx.assets.loaders.SoundLoader; @@ -39,6 +40,7 @@ import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.ParticleEffect; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.graphics.g3d.Model; import com.badlogic.gdx.graphics.g3d.loader.G3dModelLoader; @@ -89,6 +91,7 @@ public class AssetManager implements Disposable { setLoader(TextureAtlas.class, new TextureAtlasLoader(resolver)); setLoader(Texture.class, new TextureLoader(resolver)); setLoader(Skin.class, new SkinLoader(resolver)); + setLoader(ParticleEffect.class, new ParticleEffectLoader(resolver)); setLoader(Model.class, ".g3dj", new G3dModelLoader(new JsonReader(), resolver)); setLoader(Model.class, ".g3db", new G3dModelLoader(new UBJsonReader(), resolver)); setLoader(Model.class, ".obj", new ObjLoader(resolver)); diff --git a/gdx/src/com/badlogic/gdx/assets/loaders/ParticleEffectLoader.java b/gdx/src/com/badlogic/gdx/assets/loaders/ParticleEffectLoader.java new file mode 100644 index 000000000..431a62cf4 --- /dev/null +++ b/gdx/src/com/badlogic/gdx/assets/loaders/ParticleEffectLoader.java @@ -0,0 +1,49 @@ +package com.badlogic.gdx.assets.loaders; + +import com.badlogic.gdx.assets.AssetDescriptor; +import com.badlogic.gdx.assets.AssetLoaderParameters; +import com.badlogic.gdx.assets.AssetManager; +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.graphics.g2d.ParticleEffect; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; +import com.badlogic.gdx.utils.Array; + +/** {@link AssetLoader} to load {@link ParticleEffect} instances. Passing a {@link ParticleEffectParameter} to + * {@link AssetManager#load(String, Class, AssetLoaderParameters)} allows to specify an atlas file or an image directory to be + * used for the effect's images. Per default images are loaded from the directory in which the effect file is found. */ +public class ParticleEffectLoader extends SynchronousAssetLoader { + public ParticleEffectLoader (FileHandleResolver resolver) { + super(resolver); + } + + @Override + public ParticleEffect load (AssetManager am, String fileName, FileHandle file, ParticleEffectParameter param) { + ParticleEffect effect = new ParticleEffect(); + if (param != null && param.atlasFile != null) + effect.load(file, am.get(param.atlasFile, TextureAtlas.class)); + else if (param != null && param.imagesDir != null) + effect.load(file, param.imagesDir); + else + effect.load(file, file.parent()); + return effect; + } + + @Override + public Array getDependencies (String fileName, FileHandle file, ParticleEffectParameter param) { + Array deps = null; + if (param != null && param.atlasFile != null) { + deps = new Array(); + deps.add(new AssetDescriptor(param.atlasFile, TextureAtlas.class)); + } + return deps; + } + + /** Parameter to be passed to {@link AssetManager#load(String, Class, AssetLoaderParameters)} if additional configuration is + * necessary for the {@link ParticleEffect}. */ + public static class ParticleEffectParameter extends AssetLoaderParameters { + /** Atlas file name. */ + public String atlasFile; + /** Image directory. */ + public FileHandle imagesDir; + } +} \ No newline at end of file -- 2.11.0