add TextureAtlasDesc
This commit is contained in:
parent
ad15f2850c
commit
6356c97f2f
|
@ -0,0 +1,52 @@
|
|||
package ca.blarg.gdx.graphics.atlas.json;
|
||||
|
||||
import ca.blarg.gdx.graphics.atlas.CustomGridTextureAtlas;
|
||||
import ca.blarg.gdx.graphics.atlas.TextureAtlas;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.assets.AssetManager;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.utils.Json;
|
||||
|
||||
public class TextureAtlasDesc {
|
||||
public JsonTextureAtlasDefinition load(FileHandle file) {
|
||||
Json json = new Json();
|
||||
return json.fromJson(JsonTextureAtlasDefinition.class, file);
|
||||
}
|
||||
|
||||
public TextureAtlas create(JsonTextureAtlasDefinition definition) {
|
||||
return create(definition, null);
|
||||
}
|
||||
|
||||
public TextureAtlas create(JsonTextureAtlasDefinition definition, AssetManager assetManager) {
|
||||
if (definition.texture == null)
|
||||
throw new RuntimeException("No texture specified.");
|
||||
if (definition.tiles == null || definition.tiles.size() == 0)
|
||||
throw new RuntimeException("No tiles defined.");
|
||||
|
||||
Texture texture;
|
||||
if (assetManager != null)
|
||||
texture = assetManager.get(definition.texture, Texture.class);
|
||||
else
|
||||
texture = new Texture(Gdx.files.internal(definition.texture));
|
||||
|
||||
CustomGridTextureAtlas atlas = new CustomGridTextureAtlas(texture);
|
||||
for (int i = 0; i < definition.tiles.size(); ++i) {
|
||||
JsonTextureAtlasTile tile = definition.tiles.get(i);
|
||||
// TODO: parameter value error checking
|
||||
if (tile.autogrid)
|
||||
atlas.addGrid(tile.x, tile.y, tile.tileWidth, tile.tileHeight, tile.numTilesX, tile.numTilesY, tile.border);
|
||||
else
|
||||
atlas.add(tile.x, tile.y, tile.width, tile.height);
|
||||
}
|
||||
|
||||
if (definition.animations != null && definition.animations.size() > 0) {
|
||||
for (int i = 0; i < definition.animations.size(); ++i) {
|
||||
JsonTextureAtlasAnimation animation = definition.animations.get(i);
|
||||
atlas.addAnimation(animation.name, animation.tileIndex, animation.startIndex, animation.endIndex, animation.delay, animation.loop);
|
||||
}
|
||||
}
|
||||
|
||||
return atlas;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue