OSDN Git Service

Merge branch 'master' of https://github.com/libgdx/libgdx
[mikumikustudio/libgdx-mikumikustudio.git] / gdx / src / com / badlogic / gdx / assets / loaders / ParticleEffectLoader.java
1 package com.badlogic.gdx.assets.loaders;
2
3 import com.badlogic.gdx.assets.AssetDescriptor;
4 import com.badlogic.gdx.assets.AssetLoaderParameters;
5 import com.badlogic.gdx.assets.AssetManager;
6 import com.badlogic.gdx.files.FileHandle;
7 import com.badlogic.gdx.graphics.g2d.ParticleEffect;
8 import com.badlogic.gdx.graphics.g2d.TextureAtlas;
9 import com.badlogic.gdx.utils.Array;
10
11 /** {@link AssetLoader} to load {@link ParticleEffect} instances. Passing a {@link ParticleEffectParameter} to
12  * {@link AssetManager#load(String, Class, AssetLoaderParameters)} allows to specify an atlas file or an image directory to be
13  * used for the effect's images. Per default images are loaded from the directory in which the effect file is found. */
14 public class ParticleEffectLoader extends SynchronousAssetLoader<ParticleEffect, ParticleEffectLoader.ParticleEffectParameter> {
15         public ParticleEffectLoader (FileHandleResolver resolver) {
16                 super(resolver);
17         }
18
19         @Override
20         public ParticleEffect load (AssetManager am, String fileName, FileHandle file, ParticleEffectParameter param) {
21                 ParticleEffect effect = new ParticleEffect();
22                 if (param != null && param.atlasFile != null)
23                         effect.load(file, am.get(param.atlasFile, TextureAtlas.class));
24                 else if (param != null && param.imagesDir != null)
25                         effect.load(file, param.imagesDir);
26                 else
27                         effect.load(file, file.parent());
28                 return effect;
29         }
30
31         @Override
32         public Array<AssetDescriptor> getDependencies (String fileName, FileHandle file, ParticleEffectParameter param) {
33                 Array<AssetDescriptor> deps = null;
34                 if (param != null && param.atlasFile != null) {
35                         deps = new Array<AssetDescriptor>();
36                         deps.add(new AssetDescriptor<TextureAtlas>(param.atlasFile, TextureAtlas.class));
37                 }
38                 return deps;
39         }
40
41         /** Parameter to be passed to {@link AssetManager#load(String, Class, AssetLoaderParameters)} if additional configuration is
42          * necessary for the {@link ParticleEffect}. */
43         public static class ParticleEffectParameter extends AssetLoaderParameters<ParticleEffect> {
44                 /** Atlas file name. */
45                 public String atlasFile;
46                 /** Image directory. */
47                 public FileHandle imagesDir;
48         }
49 }