protected override void Start() { if (materialsOverride == null) { materialsOverride = FindObjectOfType <MaterialsOverride>(); } if (materialsOverride == null) { enabled = false; return; } base.Start(); _listControl.SetDataSource(_listControlDataSource); _listControl.onOpen += OnOptionsChanged; }
internal static void FindMaterialsForSyncPrefabImporter(SyncPrefabScriptedImporter importer) { var targetPath = EditorUtility.OpenFolderPanel( "Pick Materials Location", Application.dataPath, ""); if (targetPath == string.Empty) { return; } // issue error if path is outside of Project's Assets if (!targetPath.StartsWith(Application.dataPath)) { Debug.LogError("Cannot save materials outside of project's assets folder!"); return; } targetPath = "Assets" + targetPath.Substring(Application.dataPath.Length); var materialsGUIDS = AssetDatabase.FindAssets("t:Material", new string[1] { targetPath }); var materials = new Dictionary <string, Material>(); foreach (string guid in materialsGUIDS) { var mat = AssetDatabase.LoadAssetAtPath <Material>(AssetDatabase.GUIDToAssetPath(guid)); if (mat) { materials.Add(mat.name, mat); } } var remaps = new Dictionary <string, Material>(); importer.GetRemaps(out remaps); switch (ReflectEditorPreferences.materialSearchMatchType) { case MaterialMappings.MatchType.A_Equals_B: foreach (KeyValuePair <string, Material> kvp in materials) { if (remaps.ContainsKey(kvp.Key) && remaps[kvp.Key] == null) // TODO : add an option to override existing materials ? { remaps[kvp.Key] = kvp.Value; } } break; default: var remapsNames = remaps.Keys.ToList(); foreach (KeyValuePair <string, Material> kvp_m in materials) { foreach (string r in remapsNames) { if (MaterialsOverride.Match(kvp_m.Key, r, ReflectEditorPreferences.materialSearchMatchType) && remaps[r] == null) { remaps[r] = kvp_m.Value; } } } break; } importer.SetRemaps(remaps); }