@Override
  public void retrieveAssets() {

    // RETRIEVE BACKGROUND
    if (backgroundAtlas != null && !backgroundAtlas.isEmpty()) {
      background = EngineAssetManager.getInstance().getRegions(backgroundAtlas, backgroundRegionId);

      int width = 0;

      for (int i = 0; i < background.size; i++) {
        width += background.get(i).getRegionWidth();
      }

      int height = background.get(0).getRegionHeight();

      // Sets the scrolling dimensions. It must be done here because
      // the background must be loaded to calculate the bbox
      camera.setScrollingDimensions(width, height);

      // if(followActor != null)
      // camera.updatePos(followActor);
    }

    // RETRIEVE LIGHT MAP
    if (lightMapAtlas != null && !lightMapAtlas.isEmpty()) {
      lightMap = EngineAssetManager.getInstance().getRegions(lightMapAtlas, lightMapRegionId);
    }

    // RETRIEVE ACTORS
    for (BaseActor a : actors.values()) {
      if (a instanceof AssetConsumer) ((AssetConsumer) a).retrieveAssets();
    }

    if (musicFilename != null) {
      music = EngineAssetManager.getInstance().getMusic(musicFilename);
      if (isPlayingSer) { // TODO must be in World???
        if (music != null) {
          music.setPosition(musicPosSer);
          musicPosSer = 0f;
        }

        playMusic();
        isPlayingSer = false;
      }
    }
  }
  @Override
  public void dispose() {

    if (backgroundAtlas != null && !backgroundAtlas.isEmpty()) {
      EngineAssetManager.getInstance().disposeAtlas(backgroundAtlas);
    }

    // LOAD LIGHT MAP
    if (lightMapAtlas != null && !lightMapAtlas.isEmpty()) {
      EngineAssetManager.getInstance().disposeAtlas(lightMapAtlas);
    }

    // orderedActors.clear();

    for (BaseActor a : actors.values()) {
      if (a instanceof AssetConsumer) ((AssetConsumer) a).dispose();
    }

    if (musicFilename != null && music != null) {
      EngineAssetManager.getInstance().disposeMusic(musicFilename);
      music = null;
    }
  }
  @Override
  public void loadAssets() {

    if (backgroundAtlas != null && !backgroundAtlas.isEmpty()) {
      EngineAssetManager.getInstance().loadAtlas(backgroundAtlas);
    }

    // LOAD LIGHT MAP
    if (lightMapAtlas != null && !lightMapAtlas.isEmpty()) {
      EngineAssetManager.getInstance().loadAtlas(lightMapAtlas);
    }

    if (musicFilename != null) EngineAssetManager.getInstance().loadMusic(musicFilename);

    for (BaseActor a : actors.values()) {
      if (a instanceof AssetConsumer) ((AssetConsumer) a).loadAssets();
    }

    // CALC WALK GRAPH
    if (polygonalNavGraph != null) {
      polygonalNavGraph.createInitialGraph(actors.values());
    }
  }