public void update(double tDelta) {
		if (!stopped) {
			double xUnclamped = curPos.getX() + tDelta * vX;
			double yUnclamped = curPos.getY() + tDelta * vY;
			curPos.setLocation(
					vX > 0 ?
						Math.min(xUnclamped, finalPos.getX())
					:
						Math.max(xUnclamped, finalPos.getX()),
					vY > 0 ?
						Math.min(yUnclamped, finalPos.getY())
					:
						Math.max(yUnclamped, finalPos.getY())
			);
			if (curPos.equals(finalPos)) {
				curRot = finalRot;
				curScale = finalScale;
				stop();
			} else {
				double curDistance = curPos.distance(initPos);
				double finalDistance = finalPos.distance(initPos);
				double progress = curDistance / finalDistance;
				curRot = (finalRot - initRot) * progress + initRot;
				curScale = (finalScale - initScale) * progress + initScale;
			}
		}
	}