diff options
-rw-r--r-- | core/src/ch/asynk/rustanddust/engine/gfx/animations/BounceAnimation.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/core/src/ch/asynk/rustanddust/engine/gfx/animations/BounceAnimation.java b/core/src/ch/asynk/rustanddust/engine/gfx/animations/BounceAnimation.java new file mode 100644 index 0000000..d4f57a8 --- /dev/null +++ b/core/src/ch/asynk/rustanddust/engine/gfx/animations/BounceAnimation.java @@ -0,0 +1,66 @@ +package ch.asynk.rustanddust.engine.gfx.animations; + +import java.lang.Math; + +import com.badlogic.gdx.utils.Pool; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; + +import ch.asynk.rustanddust.engine.gfx.Moveable; + +public class BounceAnimation extends TimedAnimation +{ + public static float bounceFactor = 0.3f; + + private Moveable moveable; + + private static final Pool<BounceAnimation> bounceAnimationPool = new Pool<BounceAnimation>() { + @Override + protected BounceAnimation newObject() { + return new BounceAnimation(); + } + }; + + public static BounceAnimation get(Moveable moveable, float duration) + { + BounceAnimation a = bounceAnimationPool.obtain(); + + a.moveable = moveable; + a.duration = duration; + + return a; + } + + @Override + public void dispose() + { + bounceAnimationPool.free(this); + } + + @Override + protected void begin() + { + } + + @Override + protected void end() + { + moveable.setScale(1f); + } + + @Override + protected void update(float percent) + { + moveable.setScale(1 + bounceFactor * (float) Math.sin(percent * Math.PI)); + } + + @Override + public void draw(Batch batch) + { + } + + @Override + public void drawDebug(ShapeRenderer debugShapes) + { + } +} |