@Override
	protected void doUpdate(double dt) {
		try {
			if (getElapsedTime() >= totalDuration) {
				if (!hasJumped) {
					hasJumped = true;
					getFacade().jump(projectile, GUIConstants.JUMP_TIME_STEP);
					//System.out.println("final time " + getElapsedTime() + " at x:" + projectile.getPosition().getX() + " and y:" + projectile.getPosition().getY());
					
					finished = true;
				}
			} else {
				ProjectileSprite sprite = getScreen().getSpriteOfTypeFor(
						ProjectileSprite.class, projectile);

				double[] xy = getFacade().getJumpStep(projectile,
						getElapsedTime());
				//System.out.println("update time " + getElapsedTime() + " x:" + xy[0] + " y:" + xy[1]);
				
				sprite.setCenterLocation(getScreen().getScreenX(xy[0]),
						getScreen().getScreenY(xy[1]));
			}
		} catch (ModelException e) {
			e.printStackTrace();
			cancelExecution();
		}
	}