private void DrawImporterSelectionPopup() { if (m_AvailableImporterTypesOptions.Length < 2) { return; } var mixed = EditorGUI.showMixedValue; EditorGUI.showMixedValue = m_SelectedImporterType == k_MultipleSelectedImporterTypes; GUILayout.Label(Styles.ImporterSelection); var newSelection = EditorGUILayout.Popup(m_SelectedImporterType, m_AvailableImporterTypesOptions); if (newSelection != m_SelectedImporterType) { if (CheckForApplyOnClose(false)) { // TODO : this should probably be handled by the AssetDatabase code when restoring selection? m_SelectedAssetsPath = assetTargets.Select(AssetDatabase.GetAssetPath).ToList(); EditorApplication.delayCall += () => { var loaded = m_SelectedAssetsPath.Select(AssetDatabase.LoadMainAssetAtPath); if (m_HasInspectorBeenSeenLocked) { m_Inspector.SetObjectsLocked(loaded.ToList()); } else { Selection.objects = loaded.ToArray(); } }; AssetDatabase.StartAssetEditing(); foreach (var importer in targets.Cast <AssetImporter>()) { Undo.RegisterImporterUndo(importer.assetPath, string.Empty); AssetDatabaseExperimental.SetImporterOverrideInternal(importer.assetPath, m_AvailableImporterTypes[newSelection]); } AssetDatabase.StopAssetEditing(); GUIUtility.ExitGUI(); } } EditorGUI.showMixedValue = mixed; }