Exemple #1
0
    Material OnAssignMaterialModel(Material material, Renderer renderer)
    {
        string[] guids = AssetDatabase.FindAssets("FBXExtractMaterialsConfig");
        if (guids.Length == 0)
        {
            Debug.LogError("Please create a setting file named: 'FBXExtractMaterialsConfig'");
            Debug.LogError("Extracting Materials Aborted");
        }

        string path = AssetDatabase.GUIDToAssetPath(guids[0]);

        //Debug.Log("settings path" + path);
        _settings = (FbxExtractMaterialsSettings)AssetDatabase.LoadAssetAtPath(path, typeof(FbxExtractMaterialsSettings));

        if (!_settings.Active)
        {
            return(null);
        }

        int len = assetPath.Length;

        var sb = new StringBuilder();

        for (int i = len - 5; i > 0; i--)
        {
            if (assetPath[i] != '/')
            {
                sb.Insert(0, assetPath[i]);
            }
            else
            {
                break;
            }
        }
        string fileName = sb.ToString();

        if (len >= 4)
        {
            // Note: Faster than method.
            char c0 = assetPath[len - 4], c1 = assetPath[len - 3], c2 = assetPath[len - 2], c3 = assetPath[len - 1];
            if ((c0 == '.') &&
                (c1 == 'f' || c1 == 'F') ||
                (c2 == 'b' || c2 == 'B') ||
                (c3 == 'x' || c3 == 'X'))
            {
                //Debug.Log(assetPath);
                Material newMaterial = ExtractMaterials(assetPath, fileName, material);
                if (newMaterial != null)
                {
                    AssetDatabase.WriteImportSettingsIfDirty(assetPath);
                }

                return(newMaterial);
            }
        }

        return(null);
    }
Exemple #2
0
    public override void OnInspectorGUI()
    {
        FbxExtractMaterialsSettings settings = (FbxExtractMaterialsSettings)target;

        //base.OnInspectorGUI();
        EditorGUILayout.ToggleLeft("Active", settings.Active);

        EditorGUILayout.Space();
        if (GUILayout.Button("Choose Materials Folder"))
        {
            string path = EditorUtility.OpenFolderPanel("Choose Materials Folder", Application.dataPath, "");
            if (path.StartsWith(Application.dataPath))
            {
                path = "Assets" + path.Substring(Application.dataPath.Length);
            }
            settings.MaterialsFolder = path;
        }
        GUI.enabled = false;
        TextField("Folder", settings.MaterialsFolder);
        GUI.enabled = true;
    }