/// <summary> /// Create a new settings file with default suffixes. /// </summary> /// <returns>The new created suffixes file</returns> public static AutoMaterialSettings Create() { AutoMaterialSettings newSuffixes = (AutoMaterialSettings)CreateInstance(typeof(AutoMaterialSettings).Name); AssetDatabase.CreateAsset(newSuffixes, AssetDatabase.GenerateUniqueAssetPath(defaultFolderPath + "/Auto Material Settings.asset")); return(newSuffixes); }
private static List <TextureGroup> GetTextureGroups(ref List <Texture2D> texturesInFolder) { // Get groups from texturesInFolder, using textures name & path. List <TextureGroup> textureGroups = new List <TextureGroup>(); AutoMaterialSettings suffixesFile = GetSettingsFile(); foreach (Texture2D textureInFolder in texturesInFolder) { foreach (SuffixGroup knownSuffix in suffixesFile.suffixGroups) { // See if the texture has any known suffix. string resultSuffix = ""; foreach (string databaseSuffix in knownSuffix.textureSuffixes) { if (textureInFolder.name.HasSuffix(databaseSuffix)) { resultSuffix = databaseSuffix; } } // The texture has a known suffix, store it in a group. if (resultSuffix != "") { string textureName = textureInFolder.name.NameWithoutSuffix(resultSuffix); string textureFolderPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(textureInFolder)); bool wasStored = false; foreach (TextureGroup texGroup in textureGroups) { if (texGroup.Name == textureName && texGroup.Path == textureFolderPath) { if (!texGroup.textures.ContainsKey(knownSuffix.materialKeyword)) // (quick fix) In case there is two textures with the same name. { texGroup.textures.Add(knownSuffix.materialKeyword, textureInFolder); } wasStored = true; } } if (!wasStored) { TextureGroup newGroup = new TextureGroup(new Dictionary <string, Texture2D>() { { knownSuffix.materialKeyword, textureInFolder } }, textureName, textureFolderPath); textureGroups.Add(newGroup); } } } } return(textureGroups); }
private static AutoMaterialSettings GetSettingsFile() { // Return the existing suffixes file or create a new one. AutoMaterialSettings settingsFile; string[] textureSuffixesGUIDs = AssetDatabase.FindAssets("t:" + typeof(AutoMaterialSettings).Name, new[] { AutoMaterialSettings.defaultFolderPath }); if (textureSuffixesGUIDs.Length > 0) { settingsFile = (AutoMaterialSettings)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(textureSuffixesGUIDs[0]), typeof(AutoMaterialSettings)); } else { settingsFile = AutoMaterialSettings.Create(); } return(settingsFile); }