public IEnumerator GenerateSite(LevelMetadata levelMetadata, LevelMetadata attemptMetadata)
    {
        UIManager.Instance.Prompt("Generating level...");

        // Generate level based on level metadata
        yield return(GenerateSite(
                         (int)levelMetadata.SiteDimensionsMetadata.SiteDimensions.x,
                         (int)levelMetadata.SiteDimensionsMetadata.SiteDimensions.y,
                         (int)levelMetadata.SiteDimensionsMetadata.SiteDimensions.z));

        yield return(landmarkManager.GenerateLandmarks(levelMetadata.LandmarkMetadataList));

        yield return(trafficManager.GenerateAccessPoints(levelMetadata.TrafficMetadataList));

        yield return(roadManager.GenerateArterials(levelMetadata.RoadMetadataList));

        // Generate site based on attempt metadata
        yield return(roadManager.GenerateRoads(attemptMetadata.RoadMetadataList));

        UIManager.Instance.Prompt("Level generated successfully");
    }