private void AddScene()
        {
            if (HasSceneName() == true)
            {
                Debug.LogError("Scene Name Is Required");
                return;
            }

            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string targetSceneFolderPath   = GameLevelToolkitWindow.GetProjectPathStringWithSlash();


            //Check If scene Already Exists
            string targetSceneFile = "Assets/" + targetSceneFolderPath + "Scenes/" + targetSceneFolderPath + SceneAndResourceFolderName.folderNameValue + "/" + selectedGameLevel.gameLevelName + "_" + sceneNameToCreate + ".unity";

            if (System.IO.File.Exists(targetSceneFile))
            {
                Debug.LogError("Scene Already Exists");
                return;
            }

            CreateScene.CreateEmptyScene(selectedGameLevel.gameLevelName + "_" + sceneNameToCreate, selectedGameLevel.gameLevelName);

            selectedGameLevel.assignedScenes.Add(sceneNameToCreate);
            EditorUtility.SetDirty(selectedGameLevel);

            if (automaticallyAddSceneToBuild == true)
            {
                List <EditorBuildSettingsScene> editorBuildSettingsScenes = new List <EditorBuildSettingsScene>();

                //Get The Existing Build List
                foreach (EditorBuildSettingsScene item in EditorBuildSettings.scenes)
                {
                    editorBuildSettingsScenes.Add(item);
                }

                EditorBuildSettingsScene editorScene = new EditorBuildSettingsScene(targetSceneFile, true);

                if (editorBuildSettingsScenes.Count > 0)
                {
                    bool masterSceneNotFoundInBuild = false;
                    for (int i = 0; i < editorBuildSettingsScenes.Count; i++)
                    {
                        if (editorBuildSettingsScenes[i].path == editorScene.path)
                        {
                            masterSceneNotFoundInBuild = true;
                            break;
                        }
                    }
                    if (masterSceneNotFoundInBuild == false)
                    {
                        editorBuildSettingsScenes.Add(editorScene);
                    }
                }

                EditorBuildSettings.scenes = editorBuildSettingsScenes.ToArray();
            }

            OpenGameLevel.OpenLevel(selectedGameLevel, true, false, true);
        }
Пример #2
0
        public static Scene CreateEmptyScene(string sceneName, string parentFolderName)
        {
            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectDirectory        = null;

            if (toolkit.settings == null)
            {
                projectDirectory = toolkit.projectDirectoryPathName;
            }
            else
            {
                projectDirectory = GameLevelToolkitWindow.GetProjectPathStringWithSlash();
            }

            if (!Directory.Exists("Assets/" + projectDirectory + "Scenes/" + SceneAndResourceFolderName.folderNameValue + "/" + parentFolderName))
            {
                AssetDatabase.CreateFolder("Assets/" + projectDirectory + "Scenes/" + SceneAndResourceFolderName.folderNameValue, parentFolderName);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }

            string fullSceneDirectory = "Assets/" + projectDirectory + "Scenes/" + SceneAndResourceFolderName.folderNameValue + "/" + parentFolderName + "/";
            Scene  newScene           = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single);

            newScene.name = sceneName;
            EditorSceneManager.SaveScene(newScene, fullSceneDirectory + sceneName + ".unity");
            return(newScene);
        }
        public static string GetGameLevelAssetFileDirectory(GameLevel level)
        {
            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectDirectory        = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            string gameLevelDirectory = "Assets/" + projectDirectory + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + "Existing " + SceneAndResourceFolderName.folderNameValue + "/" + level.name + ".asset";

            return(gameLevelDirectory);
        }
Пример #4
0
        private void DuplicateLevel()
        {
            if (HasNewLocationNameAssigned() == true)
            {
                Debug.LogError("Has No New Location Name Assigned");
                return;
            }

            if (gameLevelToCreateDuplicateOf == null)
            {
                Debug.LogError("Location Required to Duplicate");
                return;
            }

            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectPathName         = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            //Check if there is a location already existing with that name.
            GameLevel existingGameLevel = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + newGameLevelName + "/" + newGameLevelName + ".asset", typeof(GameLevel));

            if (existingGameLevel != null)
            {
                Debug.LogError("Location With Same Name Already Exists");
                return;
            }

            //Create the Location Resource
            GameLevel gameLevelResource = GameLevelData.CreateInstance <GameLevel>();

            AssetDatabase.CreateAsset(GameLevel.CreateInstance <GameLevel>(), "Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + "Existing " + SceneAndResourceFolderName.folderNameValue + "/" + newGameLevelName + ".asset");
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            GameLevel createdGameLevel = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + "Existing " + SceneAndResourceFolderName.folderNameValue + "/" + newGameLevelName + ".asset", typeof(GameLevel));

            createdGameLevel.gameLevelName           = newGameLevelName;
            createdGameLevel.assignedScenesDirectory = "Assets/" + projectPathName + "Scenes/" + SceneAndResourceFolderName.folderNameValue + "/" + newGameLevelName;
            createdGameLevel.levelDependencies       = gameLevelToCreateDuplicateOf.levelDependencies;
            createdGameLevel.assignedScenes          = gameLevelToCreateDuplicateOf.assignedScenes;
            GameLevelToolkitWindow.GetGameLevelsData().gameLevelsCreatedByUser.Add(createdGameLevel);

            //Create the Scene Directory
            string scenesFolder = AssetDatabase.CreateFolder("Assets/" + projectPathName + "Scenes/" + SceneAndResourceFolderName.folderNameValue, newGameLevelName);

            //Copy the Existing Scenes
            for (int i = 0; i < gameLevelToCreateDuplicateOf.assignedScenes.Count; i++)
            {
                string sceneToCopy = gameLevelToCreateDuplicateOf.assignedScenesDirectory + "/" + gameLevelToCreateDuplicateOf.gameLevelName + "_" + gameLevelToCreateDuplicateOf.assignedScenes[i] + ".unity";
                string destination = createdGameLevel.assignedScenesDirectory + "/" + newGameLevelName + "_" + gameLevelToCreateDuplicateOf.assignedScenes[i] + ".unity";
                FileUtil.CopyFileOrDirectory(sceneToCopy, destination);
            }

            EditorUtility.SetDirty(createdGameLevel);
            EditorUtility.SetDirty(toolkit.gameLevelsData);

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
        }
Пример #5
0
        public static GameLevel ReturnLocationFromDirectory(string directory)
        {
            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectPathName         = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            GameLevel existingGameLevel = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "/Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + directory + "/" + directory + ".asset", typeof(GameLevel));

            return(null);
        }
        public static string GetProjectPathStringWithSlash()
        {
            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();

            string pathName = "";

            if (toolkit.settings.useRootProjectDirectoryPath == false)
            {
                pathName = toolkit.settings.projectDirectoryPathName + "/";
            }
            return(pathName);
        }
        public static string GetGameLevelResourceFolder(string locationName, bool includeSlashEnding = false)
        {
            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectDirectory        = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            string targetDirectory = "Assets/" + projectDirectory + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + locationName;

            if (includeSlashEnding == true)
            {
                targetDirectory += "/";
            }
            return(targetDirectory);
        }
Пример #8
0
        public static GameLevel ReturnGameLevel(string locationName)
        {
            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectPathName         = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            GameLevel existingGameLevel = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "/Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + locationName + "/" + locationName + ".asset", typeof(GameLevel));

            if (existingGameLevel != null)
            {
                Debug.LogError("Location With Same Name Already Exists");
                return(existingGameLevel);
            }
            return(null);
        }
        private void CreateLevel()
        {
            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();
            string projectPathName         = GameLevelToolkitWindow.GetProjectPathStringWithSlash();

            //Check If the Location Already Exists
            GameLevel existingLocation = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/" + gameLevelName + "/" + gameLevelName + ".asset", typeof(GameLevel));

            if (existingLocation != null)
            {
                Debug.LogError("Level With Same Name Already Exists");
                return;
            }

            //First We Will need to make sure we have all the required data before proceeding
            if (gameLevelName == null || gameLevelName == "")
            {
                Debug.LogError("Level Name Cannot Be Empty");
                return;
            }

            //Check If Any Scene Names are empty
            for (int i = 0; i < scenesToCreateInGameLevel.Count; i++)
            {
                if (scenesToCreateInGameLevel[i].VerifySceneNameIsNotEmpty() == true)
                {
                    Debug.LogError("Scene Name Cannot Be Empty");
                    return;
                }
            }

            for (int i = 0; i < scenesToCreateInGameLevel.Count; i++)
            {
                string sceneDirectory = gameLevelName;
                CreateScene.CreateEmptyScene(gameLevelName + "_" + scenesToCreateInGameLevel[i].sceneName, sceneDirectory);
            }

            //Create the Location Resources
            string resourceFolder = AssetDatabase.CreateFolder("Assets/" + projectPathName + "Resources/Locations", gameLevelName);
            string newFolderPath  = AssetDatabase.GUIDToAssetPath(resourceFolder);

            //Check Does FolderExist To Place Resource File Inside
            if (!Directory.Exists("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/Existing " + SceneAndResourceFolderName.folderNameValue))
            {
                AssetDatabase.CreateFolder("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue, "Existing " + SceneAndResourceFolderName.folderNameValue);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }

            GameLevel gameLevelResource = GameLevelData.CreateInstance <GameLevel>();

            AssetDatabase.CreateAsset(GameLevel.CreateInstance <GameLevel>(), "Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/Existing " + SceneAndResourceFolderName.folderNameValue + "/" + gameLevelName + ".asset");
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();


            GameLevel createdGameLevel = (GameLevel)AssetDatabase.LoadAssetAtPath("Assets/" + projectPathName + "Resources/" + SceneAndResourceFolderName.folderNameValue + "/Existing " + SceneAndResourceFolderName.folderNameValue + "/" + gameLevelName + ".asset", typeof(GameLevel));

            createdGameLevel.gameLevelName           = gameLevelName;
            createdGameLevel.assignedScenesDirectory = "Assets/" + projectPathName + "Scenes/" + SceneAndResourceFolderName.folderNameValue + "/" + gameLevelName;
            createdGameLevel.assignedCategory        = categories[selectedCategoryValue];
            GameLevelToolkitWindow.GetGameLevelsData().gameLevelsCreatedByUser.Add(createdGameLevel);
            EditorUtility.SetDirty(createdGameLevel);

            for (int i = 0; i < scenesToCreateInGameLevel.Count; i++)
            {
                createdGameLevel.assignedScenes.Add(scenesToCreateInGameLevel[i].sceneName);
            }

            for (int i = 0; i < gameLevelDependencies.Count; i++)
            {
                createdGameLevel.levelDependencies.Add(gameLevelDependencies[i]);
            }
            EditorUtility.SetDirty(toolkit.gameLevelsData);

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            OpenGameLevel.OpenLevel(createdGameLevel, true, false, true);

            if (addLevelToUnityBuildScenes == true)
            {
                BuildSettingsSceneManagement.AddLevelToBuild(createdGameLevel);
            }
        }
Пример #10
0
        private void MoveDirectory()
        {
            if (targetDirectoryToMoveToo == null || targetDirectoryToMoveToo == "")
            {
                Debug.LogError("Directory cannot be empty");
                return;
            }

            GameLevelToolkitWindow toolkit = GameLevelToolkitWindow.GetRefreshedToolkitWindow();

            string targetDirectory  = "";
            bool   useRootDirectory = false;

            if (targetDirectoryToMoveToo == "ROOT" || targetDirectory == "root")
            {
                targetDirectory  = "";
                useRootDirectory = true;
            }
            else
            {
                targetDirectory = targetDirectoryToMoveToo;
            }

            // Create Project Directory if Does Not Exist
            if (useRootDirectory == false)
            {
                if (!Directory.Exists("Assets/" + targetDirectory))
                {
                    //Create
                    AssetDatabase.CreateFolder("Assets", targetDirectory);
                    AssetDatabase.SaveAssets();
                    AssetDatabase.Refresh();
                }
            }

            string finalPath = "Assets/" + targetDirectory;

            //Create Scenes Directory Inside of project if does not exist
            if (!Directory.Exists(finalPath + "/" + "Scenes"))
            {
                AssetDatabase.CreateFolder(finalPath, "Scenes");
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }

            string scenesFolderPath = finalPath + "/Scenes";


            //Create Resources Directory  Inside of project if does not exist.
            if (!Directory.Exists(finalPath + "/" + "Resources"))
            {
                AssetDatabase.CreateFolder(finalPath, "Resources");
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }

            string resourcesFolderPath = finalPath + "/Resources";

            //Move Resources Data
            string originalResourcesDirectory = "";

            if (toolkit.settings.useRootProjectDirectoryPath == false)
            {
                originalResourcesDirectory = "Assets/" + toolkit.settings.projectDirectoryPathName + "/Resources/" + SceneAndResourceFolderName.folderNameValue;
            }
            else
            {
                originalResourcesDirectory = "Assets/" + "Resources/" + SceneAndResourceFolderName.folderNameValue;
            }

            FileUtil.MoveFileOrDirectory(originalResourcesDirectory, resourcesFolderPath + "/" + SceneAndResourceFolderName.folderNameValue);
            FileUtil.MoveFileOrDirectory(originalResourcesDirectory + ".meta", resourcesFolderPath + "/" + SceneAndResourceFolderName.folderNameValue + ".meta");

            //Move Game Levels Scenes Directory
            string originalScenesDirectory = "";

            if (toolkit.settings.useRootProjectDirectoryPath == false)
            {
                originalScenesDirectory = "Assets/" + toolkit.settings.projectDirectoryPathName + "/Scenes/" + SceneAndResourceFolderName.folderNameValue;
            }
            else
            {
                originalScenesDirectory = "Assets/" + "Scenes/" + SceneAndResourceFolderName.folderNameValue;
            }

            FileUtil.MoveFileOrDirectory(originalScenesDirectory, scenesFolderPath + "/" + SceneAndResourceFolderName.folderNameValue);
            FileUtil.MoveFileOrDirectory(originalScenesDirectory + ".meta", scenesFolderPath + "/" + SceneAndResourceFolderName.folderNameValue + ".meta");

            //Update All Scenes Directory Paths in data


            //Update the settings file with the new directory

            if (useRootDirectory == true)
            {
                toolkit.settings.useRootProjectDirectoryPath = true;
                toolkit.settings.projectDirectoryPathName    = "";
            }
            else
            {
                toolkit.settings.useRootProjectDirectoryPath = false;
                toolkit.settings.projectDirectoryPathName    = targetDirectoryToMoveToo;
            }

            EditorUtility.SetDirty(toolkit.settings);
            EditorUtility.SetDirty(toolkit.gameLevelsData);

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            Debug.Log("Move Operation Completed Succesfully");
        }