Created
September 22, 2020 10:26
-
-
Save Mikilo/0f0c0549b264e6a4f7b43a2fe853949a to your computer and use it in GitHub Desktop.
Utility.AsyncProgressBar (Unity 2019 or lower)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEditor; | |
using System.Reflection; | |
namespace NGToolsEditor | |
{ | |
using UnityEngine; | |
[AssemblyVerifier] | |
public class Utility | |
{ | |
#if !UNITY_2020_1_OR_NEWER | |
private static bool initializeAsyncProgressBarMetadata; | |
private static PropertyInfo AsyncProgressBarProgressInfo; | |
private static MethodInfo AsyncProgressBarDisplayMethod; | |
private static MethodInfo AsyncProgressBarClearMethod; | |
#endif | |
public static string GetAsyncProgressBarInfo() | |
{ | |
#if !UNITY_2020_1_OR_NEWER | |
if (Utility.initializeAsyncProgressBarMetadata == false) | |
{ | |
Utility.initializeAsyncProgressBarMetadata = true; | |
Utility.LazyInitializeAsyncProgressBarMetadata(); | |
} | |
if (Utility.AsyncProgressBarProgressInfo != null) | |
return Utility.AsyncProgressBarProgressInfo.GetValue(null, null) as string; | |
#endif | |
return string.Empty; | |
} | |
public static void AsyncProgressBarDisplay(string progressInfo, float progress) | |
{ | |
#if !UNITY_2020_1_OR_NEWER | |
if (Utility.initializeAsyncProgressBarMetadata == false) | |
{ | |
Utility.initializeAsyncProgressBarMetadata = true; | |
Utility.LazyInitializeAsyncProgressBarMetadata(); | |
} | |
if (Utility.AsyncProgressBarDisplayMethod != null) | |
Utility.AsyncProgressBarDisplayMethod.Invoke(null, new object[] { progressInfo, progress }); | |
#endif | |
} | |
public static void AsyncProgressBarClear() | |
{ | |
#if !UNITY_2020_1_OR_NEWER | |
if (Utility.initializeAsyncProgressBarMetadata == false) | |
{ | |
Utility.initializeAsyncProgressBarMetadata = true; | |
Utility.LazyInitializeAsyncProgressBarMetadata(); | |
} | |
if (Utility.AsyncProgressBarClearMethod != null) | |
Utility.AsyncProgressBarClearMethod.Invoke(null, null); | |
#endif | |
} | |
#if !UNITY_2020_1_OR_NEWER | |
[AssemblyVerifier] | |
private static void LazyInitializeAsyncProgressBarMetadata() | |
{ | |
Type AsyncProgressBarType = AssemblyVerifier.TryGetType(typeof(EditorWindow).Assembly, "UnityEditor.AsyncProgressBar"); | |
if (AsyncProgressBarType != null) | |
{ | |
Utility.AsyncProgressBarProgressInfo = AssemblyVerifier.TryGetProperty(AsyncProgressBarType, "progressInfo", BindingFlags.Static | BindingFlags.Public); | |
Utility.AsyncProgressBarDisplayMethod = AssemblyVerifier.TryGetMethod(AsyncProgressBarType, "Display", BindingFlags.Static | BindingFlags.Public); | |
Utility.AsyncProgressBarClearMethod = AssemblyVerifier.TryGetMethod(AsyncProgressBarType, "Clear", BindingFlags.Static | BindingFlags.Public); | |
} | |
} | |
#endif | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment