/// <summary>
        /// Check the scene data and scene bundles
        /// </summary>
        /// <returns></returns>
        private static void CheckDatas()
        {
            SceneBundleList           currentSceneList  = EnhancedSceneManager.GetCurrentSceneList();
            List <SerializedProperty> propertiesToCheck = new List <SerializedProperty>();

            if (currentSceneList.PersistantScenesBundle != null)
            {
                SerializedObject sceneBundleObject = new SerializedObject(currentSceneList.PersistantScenesBundle);
                sceneBundleObject.FindProperty("sceneAssets").CleanNullOrSimilarRefs();
            }

            SerializedObject   sceneListSO          = new SerializedObject(currentSceneList);
            SerializedProperty sceneBundlesProperty = sceneListSO.FindProperty("scenesBundles");

            for (int i = 0; i < sceneBundlesProperty.arraySize; i++)
            {
                SceneBundleEditor.GenerateSceneLabels(new SerializedObject(sceneBundlesProperty.GetArrayElementAtIndex(i).objectReferenceValue));
            }

            //Reupdate the build scenes
            UpdateBuildScenes();
        }
        /// <summary>
        /// Update all build scenes, check if
        /// </summary>
        public static void UpdateBuildScenes()
        {
            SceneBundleList currentSceneList = EnhancedSceneManager.GetCurrentSceneList();

            if (currentSceneList == null)
            {
                return;
            }

            //Create the container of build scenes
            var buildSettingsScenes = new List <EditorBuildSettingsScene>();

            //Add Startup Scene
            SceneAsset startupSceneAsset = Resources.Load <SceneAsset>("StartupScene");
            var        startupScene      = new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(startupSceneAsset), true);

            buildSettingsScenes.Add(startupScene);

            bool BuildContainsScene(string path)
            {
                for (int i = 0; i < buildSettingsScenes.Count; i++)
                {
                    if (buildSettingsScenes[i].path == path)
                    {
                        return(true);
                    }
                }
                return(false);
            }

            //Add persistant scenes
            if (currentSceneList.PersistantScenesBundle != null)
            {
                SceneAsset[] peristantScenes = SceneBundleEditor.GetBundleScenesAssets(currentSceneList.PersistantScenesBundle);
                foreach (SceneAsset sceneAsset in peristantScenes)
                {
                    var persistantBuildScene = new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(sceneAsset), true);

                    if (!BuildContainsScene(persistantBuildScene.path))
                    {
                        buildSettingsScenes.Add(persistantBuildScene);
                    }
                }
            }

            //Add scenes
            foreach (SceneBundle bundle in currentSceneList.ScenesBundles)
            {
                SceneAsset[] sceneAssets = SceneBundleEditor.GetBundleScenesAssets(bundle);
                foreach (SceneAsset sceneAsset in sceneAssets)
                {
                    var buildScene = new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(sceneAsset), true);

                    if (!BuildContainsScene(buildScene.path))
                    {
                        buildSettingsScenes.Add(buildScene);
                    }
                }
            }

            //Replace the current build setting scenes with new list
            EditorBuildSettings.scenes = buildSettingsScenes.ToArray();
        }