You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.3 KiB
93 lines
3.3 KiB
using UnityEditor; |
|
using UnityEngine; |
|
using System.IO; |
|
using System; |
|
|
|
namespace GitHub.Unity |
|
{ |
|
[InitializeOnLoad] |
|
public class ExtensionLoader : ScriptableSingleton<ExtensionLoader> |
|
{ |
|
[SerializeField] private bool initialized = true; |
|
|
|
public bool Initialized |
|
{ |
|
get |
|
{ |
|
return initialized; |
|
} |
|
set |
|
{ |
|
initialized = value; |
|
Save(true); |
|
} |
|
} |
|
|
|
private static bool inSourceMode = false; |
|
private const string sourceModePath = "Assets/Editor/build/"; |
|
private const string realPath = "Assets/Plugins/GitHub/Editor/"; |
|
|
|
private static string[] assemblies20 = { "System.Threading.dll", "AsyncBridge.Net35.dll", "ReadOnlyCollectionsInterfaces.dll", "GitHub.Api.dll", "GitHub.Unity.dll" }; |
|
private static string[] assemblies45 = { "GitHub.Api.45.dll", "GitHub.Unity.45.dll" }; |
|
|
|
private const string GITHUB_UNITY_DISABLE = "GITHUB_UNITY_DISABLE"; |
|
private static bool IsDisabled { get { return Environment.GetEnvironmentVariable(GITHUB_UNITY_DISABLE) == "1"; } } |
|
|
|
static ExtensionLoader() |
|
{ |
|
if (IsDisabled) |
|
{ |
|
return; |
|
} |
|
EditorApplication.update += Initialize; |
|
} |
|
|
|
private static void Initialize() |
|
{ |
|
EditorApplication.update -= Initialize; |
|
|
|
// we're always doing this right now because if the plugin gets updated all the meta files will be disabled and we need to re-enable them |
|
// we should probably detect if our assets change and re-run this instead of doing it every time |
|
//if (!ExtensionLoader.instance.Initialized) |
|
{ |
|
var scriptPath = Path.Combine(Application.dataPath, "Editor" + Path.DirectorySeparatorChar + "GitHub.Unity" + Path.DirectorySeparatorChar + "EntryPoint.cs"); |
|
inSourceMode = File.Exists(scriptPath); |
|
ToggleAssemblies(); |
|
//ExtensionLoader.instance.Initialized = true; |
|
AssetDatabase.SaveAssets(); |
|
} |
|
|
|
} |
|
|
|
private static void ToggleAssemblies() |
|
{ |
|
var path = inSourceMode ? sourceModePath : realPath; |
|
#if NET_4_6 |
|
ToggleAssemblies(path, assemblies20, false); |
|
ToggleAssemblies(path, assemblies45, true); |
|
#else |
|
ToggleAssemblies(path, assemblies45, false); |
|
ToggleAssemblies(path, assemblies20, true); |
|
#endif |
|
} |
|
|
|
private static void ToggleAssemblies(string path, string[] assemblies, bool enable) |
|
{ |
|
foreach (var file in assemblies) |
|
{ |
|
var filepath = path + file; |
|
PluginImporter importer = AssetImporter.GetAtPath(filepath) as PluginImporter; |
|
if (importer == null) |
|
{ |
|
Debug.LogFormat("GitHub for Unity: Could not find importer for {0}. Some functionality may fail.", filepath); |
|
continue; |
|
} |
|
if (importer.GetCompatibleWithEditor() != enable) |
|
{ |
|
importer.SetCompatibleWithEditor(enable); |
|
importer.SaveAndReimport(); |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|