package minizoo.c.action; import minizoo.c.core.Vector2d; public class MoveBy extends Finite { public static MoveBy c(float duration, Vector2d relativePos) { return new MoveBy(duration, relativePos); } public static MoveBy c(float duration, float rx, float ry) { return new MoveBy(duration, rx, ry); } public MoveBy(float duration, Vector2d relativePos) { this.duration = duration; this.relativePos = relativePos.clone(); } public MoveBy(float duration, float rx, float ry) { this(duration, new Vector2d(rx, ry)); } @Override public void clear() { super.clear(); prevT = 0f; } @Override public void sample(float t) { if (getTarget() != null) { Vector2d res = new Vector2d(relativePos); res.mul(t-prevT); res.add(getTarget().getPosition()); getTarget().setPosition(res); prevT = t; } } float prevT = 0f; Vector2d relativePos; }