Enable resetting default frame when movement is finished

This commit is contained in:
2021-01-31 18:06:18 +01:00
parent 9c65dbad38
commit 14906b7e37
4 changed files with 30 additions and 78 deletions

View File

@@ -22,4 +22,10 @@ public abstract class AnimationableObject extends RenderableObject {
public abstract boolean shouldAnimate();
public abstract Vector2f[] getSpriteAnimationFramesPositions();
protected void setAnimationFrame(Vector2f framePosition) {
var material = this.getMaterial();
var spriteSize = material.getSpriteSize();
material.setSpritePosition(spriteSize.x * framePosition.x, spriteSize.y * framePosition.y);
}
}

View File

@@ -17,9 +17,8 @@ public class DefaultAnimator implements Animator {
var positions = object.getSpriteAnimationFramesPositions();
var delay = object.getAnimationSpeed();
var currentPosition = (int) (System.currentTimeMillis() % (positions.length * delay)) / delay;
var spriteSize = object.getMaterial().getSpriteSize();
var current = positions[currentPosition];
object.getMaterial().setSpritePosition(spriteSize.x * current.x, spriteSize.y * current.y);
object.setAnimationFrame(current);
}
}
}