public LevelGameObjectsHolder Create(LevelGameObjectsHolder oldHolder, LevelInfo levelInfo)
        {
            cleanUp(oldHolder);
            LevelGameObjectsHolder holder = create(levelInfo);

            return(holder);
        }
    public void goToNextLevel()
    {
        _level++;
        Debug.Log("Loading level " + _level.ToString());
        LevelInfo levelInfo = _levelGeneratorSerivce.generate(_seed + _level);

        _holder = _sceneCreatorService.Create(_holder, levelInfo);
        setPlayerToStartPos(_holder.startPos);
        LevelChanged(this, _level);
    }
        private LevelGameObjectsHolder create(LevelInfo levelInfo)
        {
            LevelGameObjectsHolder holder = new LevelGameObjectsHolder();

            holder.tiles   = _tilesSpawner.spawn(levelInfo.tiles);
            holder.items   = _itemsSpawner.spawn(levelInfo.itemsOnTiles);
            holder.enemies = _enemiesSpanwer.spawn(levelInfo.itemsOnTiles);
            List <Marker> markers = _itemsMarker.getMarkers(levelInfo.itemsOnTiles);

            holder.startPos = markers.Where <Marker>(m => ItemOnTileEnum.STARTPOS.Equals(m.itemType)).First();
            return(holder);
        }
 private void cleanUp(LevelGameObjectsHolder oldHolder)
 {
     removeGameObjects(oldHolder.tiles);
     removeGameObjects(oldHolder.items);
     removeGameObjects(oldHolder.enemies);
 }