/// <summary> /// Loops through all directories in the project and processes all configuration files /// </summary> /// <param name="path">The root path to search in</param> /// <param name="defaultSettings">The settings the current directory is inheriting from. Use this to programatically assign default settings</param> /// <returns>A directory structure with all app settings and directories represented</returns> private static DirectoryStructure GetImportSettings(string path, ImportSettings defaultSettings = null) { DirectoryStructure currentDirectory = new DirectoryStructure(); currentDirectory.settings = HelperFunctions.JsonToClass <ImportSettings>(path, DirectoryInitializer.JsonConfigFileName); if (defaultSettings != null) { currentDirectory.settings.InheritSettings(defaultSettings); } currentDirectory.childSettings = new List <DirectoryStructure>(); currentDirectory.path = path; List <string> childDirectoryPaths = DirectoryInitializer.FindDirectories(path, false); foreach (var currentChildDirectory in childDirectoryPaths) { DirectoryStructure childDirectoryStructure = new DirectoryStructure(); childDirectoryStructure = GetImportSettings(currentChildDirectory, currentDirectory.settings); currentDirectory.childSettings.Add(childDirectoryStructure); } return(currentDirectory); }
/// <summary> /// Recursively applies settings to all directories within the application /// </summary> /// <param name="structure">The directory structure to implement settings onto</param> private static void ApplySettingsRecursively(DirectoryStructure structure) { if (structure.settings.AndroidSettings.OverrideForAndroid == 1 && EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android) { ApplyAndroidSettings(structure.settings.AndroidSettings, structure.path); } else { ApplyUniversalSettings(structure.settings.UniversalSettings, structure.path); } foreach (var childStructure in structure.childSettings) { ApplySettingsRecursively(childStructure); } }
/// <summary> /// Imports all assets and applies relevant settings supplied in JSON /// </summary> public static void ImportAndApplySettings() { DirectoryStructure directoryStructure = GetImportSettings(DirectoryInitializer.RootAssetDirectory); ApplySettingsRecursively(directoryStructure); }