Skip to content

Commit 020c969

Browse files
committed
Add keepDirection parameter to Animation action.
1 parent 5eae4d8 commit 020c969

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

blade-engine/src/com/bladecoder/engine/actions/AnimationAction.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
******************************************************************************/
1616
package com.bladecoder.engine.actions;
1717

18+
import com.bladecoder.engine.anim.AnimationDesc;
1819
import com.bladecoder.engine.anim.Tween;
20+
import com.bladecoder.engine.model.AnimationRenderer;
1921
import com.bladecoder.engine.model.SpriteActor;
2022
import com.bladecoder.engine.model.VerbRunner;
2123
import com.bladecoder.engine.model.World;
@@ -38,6 +40,10 @@ public class AnimationAction implements Action {
3840
@ActionProperty(required = true, defaultValue = "SPRITE_DEFINED")
3941
@ActionPropertyDescription("The repeat mode")
4042
private Tween.Type repeat = Tween.Type.SPRITE_DEFINED;
43+
44+
@ActionProperty(required = true, defaultValue = "false")
45+
@ActionPropertyDescription("Keeps the current actor animation direction.")
46+
private boolean keepDirection = false;
4147

4248
@Override
4349
public boolean run(VerbRunner cb) {
@@ -46,8 +52,19 @@ public boolean run(VerbRunner cb) {
4652
String actorId = animation.getActorId();
4753

4854
SpriteActor a = (SpriteActor) World.getInstance().getCurrentScene().getActor(actorId, true);
55+
56+
String anim = animation.getAnimationId();
57+
58+
if(keepDirection) {
59+
String c = ((AnimationRenderer)a.getRenderer()).getCurrentAnimationId();
60+
61+
if(anim.endsWith(AnimationDesc.LEFT) && c.endsWith(AnimationDesc.RIGHT) ||
62+
anim.endsWith(AnimationDesc.RIGHT) && c.endsWith(AnimationDesc.LEFT)) {
63+
anim = AnimationDesc.getFlipId(anim);
64+
}
65+
}
4966

50-
a.startAnimation(animation.getAnimationId(), repeat, count, wait?cb:null);
67+
a.startAnimation(anim, repeat, count, wait?cb:null);
5168

5269
return wait;
5370
}

0 commit comments

Comments
 (0)