public static GameLevel[] GetGameLevelsBasedOnCategory(string categoryName) { GameLevelData data = GameLevelToolkitWindow.GetGameLevelsData(); List <GameLevel> categories = new List <GameLevel>(); if (categoryName == data.allCategoriesName) // Get All { for (int i = 0; i < data.gameLevelsCreatedByUser.Count; i++) { categories.Add(data.gameLevelsCreatedByUser[i]); } } else // Get By Name { for (int i = 0; i < data.gameLevelsCreatedByUser.Count; i++) { if (data.gameLevelsCreatedByUser[i].assignedCategory == categoryName) { categories.Add(data.gameLevelsCreatedByUser[i]); } } } return(categories.ToArray()); }
public static void CreateCategory(string targetName) { GameLevelData data = GameLevelToolkitWindow.GetGameLevelsData(); data.allUserCreatedCategories.Add(targetName); EditorUtility.SetDirty(data); }
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(); }
public static void RefreshLevelsList(out string[] levelOptionsToLoad, out int selectedValue, out GameLevel[] levels, out GameLevelData gameLevelData) { gameLevelData = GameLevelToolkitWindow.GetGameLevelsData(); selectedValue = 0; levels = gameLevelData.gameLevelsCreatedByUser.ToArray(); List <string> levelsToString = new List <string>(); foreach (GameLevel item in levels) { levelsToString.Add(item.gameLevelName); } levelOptionsToLoad = levelsToString.ToArray(); }
public static void OpenMenu() { window = (OpenGameLevel)GetWindow(typeof(OpenGameLevel), false, "Load Game Level"); window.gameLevelData = GameLevelToolkitWindow.GetGameLevelsData(); window.selectedValue = 0; window.levels = window.gameLevelData.gameLevelsCreatedByUser.ToArray(); List <string> levelsToString = new List <string>(); foreach (GameLevel item in window.levels) { levelsToString.Add(item.gameLevelName); } window.levelOptionsToLoad = levelsToString.ToArray(); }
public static void OpenMenu() { window = GetWindow <AssignCategoryToLevel>("Assign Category To Level"); window.gameLevelData = GameLevelToolkitWindow.GetGameLevelsData(); window.selectedValue = 0; window.levels = window.gameLevelData.gameLevelsCreatedByUser.ToArray(); List <string> levelsToString = new List <string>(); foreach (GameLevel item in window.levels) { levelsToString.Add(item.gameLevelName); } window.levelOptionsToLoad = levelsToString.ToArray(); }
public static void RenameCategory(string categoryOriginalName, string targetCategoryName) { //Get All Levels that Have this category and rename it there too GameLevel[] levels = GetGameLevelsBasedOnCategory(categoryOriginalName); RenameGameLevelsCategory(levels, targetCategoryName); GameLevelData data = GameLevelToolkitWindow.GetGameLevelsData(); for (int i = 0; i < data.allUserCreatedCategories.Count; i++) { if (data.allUserCreatedCategories[i] == categoryOriginalName) { data.allUserCreatedCategories[i] = targetCategoryName; break; } } EditorUtility.SetDirty(data); }
public static void DeleteExistingCategory(string targetCategory) { GameLevelData data = GameLevelToolkitWindow.GetGameLevelsData(); //Get All Levels that have this category and assign them to unassigned GameLevel[] levels = GetGameLevelsBasedOnCategory(targetCategory); RenameGameLevelsCategory(levels, data.unassignedCategoryName); //Remove The Item From The data list for (int i = 0; i < data.allUserCreatedCategories.Count; i++) { if (data.allUserCreatedCategories[i] == targetCategory) { data.allUserCreatedCategories.RemoveAt(i); break; } } EditorUtility.SetDirty(data); }
public static string[] GetAllCategories(bool includeAllType, bool includeUnassigned = true) { GameLevelData data = GameLevelToolkitWindow.GetGameLevelsData(); List <string> categories = new List <string>(); if (includeAllType == true) { categories.Add(data.allCategoriesName); } if (includeUnassigned == true) { categories.Add(data.unassignedCategoryName); } if (data.allUserCreatedCategories.Count > 0) { for (int i = 0; i < data.allUserCreatedCategories.Count; i++) { categories.Add(data.allUserCreatedCategories[i]); } } return(categories.ToArray()); }
public static void OpenMenu() { window = (CreateNewGameLevelMenu)GetWindow(typeof(CreateNewGameLevelMenu), false, "Create New Level"); window.gameLevelData = GameLevelToolkitWindow.GetGameLevelsData(); }
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); } }
private void AddSceneToLocation() { string projectPathName = GameLevelToolkitWindow.GetProjectPathStringWithSlash(); if (targetGameLevel == null) { Debug.LogError("Target Location Is Required"); return; } string originalScenePath = null; if (useRootDirectory == true) { originalScenePath = "Assets/" + targetSceneFolderPath + ".unity"; } else { originalScenePath = "Assets/" + projectPathName + "Scenes/" + targetSceneFolderPath + "/" + targetSceneName + ".unity"; } //Check to See If the scene belongs to an existing location bool sceneExistsInAGameLevel = false; string sceneNameWithoutGameLevelPrefix = null; GameLevelData gameLevelData = GameLevelToolkitWindow.GetGameLevelsData(); for (int i = 0; i < gameLevelData.gameLevelsCreatedByUser.Count; i++) { for (int g = 0; g < gameLevelData.gameLevelsCreatedByUser[i].assignedScenes.Count; g++) { string assignedSceneName = gameLevelData.gameLevelsCreatedByUser[i].gameLevelName + "_" + gameLevelData.gameLevelsCreatedByUser[i].assignedScenes[g]; if (assignedSceneName == targetSceneName) { sceneNameWithoutGameLevelPrefix = gameLevelData.gameLevelsCreatedByUser[i].assignedScenes[g]; //Remove this scene from its location that it is apart of gameLevelData.gameLevelsCreatedByUser[i].assignedScenes.Remove(targetSceneName); sceneExistsInAGameLevel = true; } } } //Rename the scene based on the location naming convention string targetGameLevelPrefix = targetGameLevel.gameLevelName; string finalSceneName = null; if (sceneExistsInAGameLevel == true) { finalSceneName = targetGameLevelPrefix + "_" + sceneNameWithoutGameLevelPrefix + ".unity"; targetGameLevel.assignedScenes.Add(finalSceneName); } else { finalSceneName = targetGameLevelPrefix + "_" + targetSceneName + ".unity"; targetGameLevel.assignedScenes.Add(targetSceneName); } AssetDatabase.RenameAsset(originalScenePath, finalSceneName); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); //Move the scene to the correct Directory string adjustedDirectoryToMoveSceneFrom = "Assets/" + projectPathName + targetSceneFolderPath + "/" + targetSceneName + ".unity"; string directoryToMoveSceneTo = targetGameLevel.assignedScenesDirectory + "/" + finalSceneName; FileUtil.MoveFileOrDirectory(adjustedDirectoryToMoveSceneFrom, directoryToMoveSceneTo); EditorUtility.SetDirty(targetGameLevel); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); }