/// <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);
        }