/// <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);
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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);
    }