@Override
  public void act(float delta) {
    super.act(delta);
    timeStep = delta / 1000.0f;
    world.step(timeStep, velocityIterations, positionIterations);

    Scene scene = (Scene) gui.getScene().getElement();

    if (scene != null) {
      for (SceneElement e : scene.getSceneElements()) {
        ValueMap valueMap = game.getGameState();
        Body b = (Body) valueMap.getValue(e.getId(), VAR_PH_BODY, null);
        if (b != null) {

          valueMap.setValue(e, SceneElement.VAR_X, (float) (b.getWorldCenter().x * WORLD_SCALE));
          valueMap.setValue(e, SceneElement.VAR_Y, (float) (b.getWorldCenter().y * WORLD_SCALE));
          valueMap.setValue(e, SceneElement.VAR_ROTATION, (float) Math.toDegrees(b.getAngle()));
        }
      }
    } else {
      stop();
    }
  }