use separate Animation class for now to hold info. new addAnimation method. TextureAtlasAnimator will read through these and set up it's own data structures from them

This commit is contained in:
Gered 2014-04-14 14:15:18 -04:00
parent b6de4a38c2
commit fff74d0b16

View file

@ -8,13 +8,22 @@ import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap;
public abstract class TextureAtlas { public abstract class TextureAtlas {
public class Animation {
public String name;
public int destTileIndex;
public int start;
public int stop;
public float delay;
public boolean loop;
}
public static final float TEXCOORD_EDGE_BLEED_OFFSET = 0.02f; public static final float TEXCOORD_EDGE_BLEED_OFFSET = 0.02f;
public final Texture texture; public final Texture texture;
protected final float edgeCoordOffset; protected final float edgeCoordOffset;
protected Array<TextureRegion> tiles = new Array<TextureRegion>(TextureRegion.class); protected Array<TextureRegion> tiles = new Array<TextureRegion>(TextureRegion.class);
protected ObjectMap<String, AnimationSequence> animations = new ObjectMap<String, AnimationSequence>(); protected ObjectMap<String, Animation> animations = new ObjectMap<String, Animation>();
public TextureAtlas(Texture texture, float edgeCoordOffset) { public TextureAtlas(Texture texture, float edgeCoordOffset) {
this.texture = texture; this.texture = texture;
@ -33,10 +42,24 @@ public abstract class TextureAtlas {
return animations.size > 0; return animations.size > 0;
} }
public ObjectMap.Entries<String, AnimationSequence> getAnimations() { public ObjectMap.Entries<String, Animation> getAnimations() {
return animations.entries(); return animations.entries();
} }
public void addAnimation(String name, int destTileIndex, int start, int stop, float delay, boolean loop) {
if (animations.containsKey(name))
throw new UnsupportedOperationException("Duplicate animation sequence name.");
Animation animation = new Animation();
animation.name = name;
animation.destTileIndex = destTileIndex;
animation.start = start;
animation.stop = stop;
animation.delay = delay;
animation.loop = loop;
animations.put(name, animation);
}
public static void scaleTexCoord(Vector2 texCoord, TextureRegion tile, Vector2 out) { public static void scaleTexCoord(Vector2 texCoord, TextureRegion tile, Vector2 out) {
out.x = scaleTexCoordU(texCoord.x, tile); out.x = scaleTexCoordU(texCoord.x, tile);
out.y = scaleTexCoordV(texCoord.y, tile); out.y = scaleTexCoordV(texCoord.y, tile);