A game about forced loneliness, made by TACStudios
at master 3.1 kB view raw
1using System; 2using System.Reflection; 3 4using UnityEditor; 5 6using Codice.Client.Common.Threading; 7using Unity.PlasticSCM.Editor.UI; 8 9namespace Unity.PlasticSCM.Editor.Settings 10{ 11 internal static class OpenPlasticProjectSettings 12 { 13 internal static void ByDefault() 14 { 15 PlasticProjectSettingsProvider provider = OpenInPlasticProjectSettings(); 16 17 if (provider == null) 18 return; 19 20 provider.OpenAllFoldouts(); 21 } 22 23 internal static void InDiffAndMergeFoldout() 24 { 25 PlasticProjectSettingsProvider provider = OpenInPlasticProjectSettings(); 26 27 if (provider == null) 28 return; 29 30 provider.OpenDiffAndMergeFoldout(); 31 } 32 33 internal static void InShelveAndSwitchFoldout() 34 { 35 PlasticProjectSettingsProvider provider = OpenInPlasticProjectSettings(); 36 37 if (provider == null) 38 return; 39 40 provider.OpenShelveAndSwitchFoldout(); 41 } 42 43 internal static void InOtherFoldout() 44 { 45 PlasticProjectSettingsProvider provider = OpenInPlasticProjectSettings(); 46 47 if (provider == null) 48 return; 49 50 provider.OpenOtherFoldout(); 51 } 52 53 internal static PlasticProjectSettingsProvider OpenInPlasticProjectSettings() 54 { 55 EditorWindow settingsWindow = OpenProjectSettingsWithPlasticSelected(); 56 return GetPlasticProvider(settingsWindow); 57 } 58 59 internal static EditorWindow OpenProjectSettingsWithPlasticSelected() 60 { 61 return SettingsService.OpenProjectSettings( 62 UnityConstants.PROJECT_SETTINGS_TAB_PATH); 63 } 64 65 internal static PlasticProjectSettingsProvider GetPlasticProvider( 66 EditorWindow settingsWindow) 67 { 68 try 69 { 70 /* The following code must be compiled only for editor versions that allow our code 71 to access internal code from the editor, otherwise the ProjectSettingsWindow is not 72 accessible and the compilation fails. 73 We don't know yet the version number that allows us to access this code, so for the 74 moment the code is commented 75 76#if UNITY_6000_0_OR_NEWER 77 ProjectSettingsWindow projectSettingsWindow = settingsWindow as ProjectSettingsWindow; 78 return projectSettingsWindow.GetCurrentProvider() as PlasticProjectSettingsProvider; 79#else */ 80 81 MethodInfo getCurrentProviderMethod = settingsWindow.GetType().GetMethod( 82 "GetCurrentProvider", 83 BindingFlags.Instance | BindingFlags.NonPublic); 84 85 return getCurrentProviderMethod.Invoke( 86 settingsWindow, null) as PlasticProjectSettingsProvider; 87//#endif 88 } 89 catch (Exception ex) 90 { 91 ExceptionsHandler.LogException("OpenPlasticProjectSettingsProvider", ex); 92 return null; 93 } 94 } 95 } 96}