package com.github.czyzby.lml.uedi.assets; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.loaders.ParticleEffectLoader.ParticleEffectParameter; import com.badlogic.gdx.graphics.g2d.ParticleEffect; import com.github.czyzby.kiwi.util.common.Strings; import com.github.czyzby.lml.uedi.assets.impl.AbstractAssetProvider; import com.github.czyzby.lml.uedi.assets.impl.InjectingAssetManager; /** Provides {@link ParticleEffect} instances. * * @author MJ */ public class ParticleEffectProvider extends AbstractAssetProvider<ParticleEffect> { public static final String[] EXTENSIONS = new String[] { "p", "pfx" }; /** @param assetManager will be used to load the assets. */ public ParticleEffectProvider(final InjectingAssetManager assetManager) { super(assetManager); } @Override public Class<? extends ParticleEffect> getType() { return ParticleEffect.class; } @Override public ParticleEffect getOrLoad(final String id) { final String[] data = Strings.split(id, '$'); if (data.length == 0) { throwUnknownPathException(); } final String path = determinePath(data[0]); getIdsToPaths().put(id, path); final AssetManager assetManager = getAssetManager(); if (assetManager.isLoaded(path)) { return assetManager.get(path, getType()); } if (data.length > 1) { final String atlasName = TextureAtlasProvider.getTextureAtlasPath(data[1]); final ParticleEffectParameter parameters = new ParticleEffectParameter(); parameters.atlasFile = atlasName; assetManager.load(path, ParticleEffect.class, parameters); } else { assetManager.load(path, ParticleEffect.class); } return null; } @Override protected String getFolder() { return "effect"; } @Override protected String[] getExtensions() { return EXTENSIONS; } }