LevelPartPicker.LevelPart GetRandomLevelPart(Vector2 position)
 {
     LevelPartPicker.LevelPart levelPart = levelPartPicker.random;
     levelPart.GameObject = (GameObject)Instantiate(levelPart.GameObject,
                                                    position, Quaternion.identity);
     return(levelPart);
 }
    void InitializeLevel()
    {
        levelWidth = 0;
        for (int i = 0; i < startingPieces.Length; i++)
        {
            LevelPartPicker.LevelPart?levelPartMaybe = levelPartPicker.FindByName(startingPieces[i]);
            if (!levelPartMaybe.HasValue)
            {
                continue;
            }
            LevelPartPicker.LevelPart levelPart = levelPartMaybe.Value;

            Debug.Log("Spawning initial object at " + (levelWidth - levelPart.Left) + ": " + levelPart.GameObject.name);

            GameObject section = (GameObject)Instantiate(levelPart.GameObject,
                                                         Vector2.right * (levelWidth - levelPart.Left), Quaternion.identity);

            levelPart.GameObject = section;
            indexedGameObjects.Add(i, levelPart);
            levelWidth += indexedGameObjects[i].Right + levelPart.GameObject.GetComponent <PrefabProperties>().distanceBetweenOtherParts;
        }
        StartCoroutine(GenerateSections(startingPieces.Length));
    }