FlatKitReadme.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using JetBrains.Annotations;
  3. using UnityEditor;
  4. using UnityEditor.PackageManager;
  5. using UnityEngine;
  6. using PackageInfo = UnityEditor.PackageManager.PackageInfo;
  7. // ReSharper disable UnusedMember.Local
  8. // ReSharper disable MemberCanBePrivate.Global
  9. namespace FlatKit {
  10. #if FLAT_KIT_DEV
  11. [CreateAssetMenu(fileName = "Readme", menuName = "FlatKit/Internal/Readme", order = 0)]
  12. #endif // FLAT_KIT_DEV
  13. [ExecuteAlways]
  14. public class FlatKitReadme : ScriptableObject {
  15. [NonSerialized]
  16. public bool FlatKitInstalled;
  17. [NonSerialized]
  18. public readonly string FlatKitVersion = "4.9.2";
  19. [NonSerialized]
  20. public bool? UrpInstalled;
  21. [NonSerialized]
  22. [CanBeNull]
  23. public string PackageManagerError;
  24. [NonSerialized]
  25. public string UrpVersionInstalled = "N/A";
  26. [NonSerialized]
  27. public string UnityVersion = Application.unityVersion;
  28. private const string UrpPackageID = "com.unity.render-pipelines.universal";
  29. private static readonly GUID StylizedShaderGuid = new GUID("bee44b4a58655ee4cbff107302a3e131");
  30. public void Refresh() {
  31. UrpInstalled = false;
  32. FlatKitInstalled = false;
  33. PackageManagerError = null;
  34. PackageCollection packages = GetPackageList();
  35. foreach (PackageInfo p in packages) {
  36. if (p.name == UrpPackageID) {
  37. UrpInstalled = true;
  38. UrpVersionInstalled = p.version;
  39. }
  40. }
  41. string path = AssetDatabase.GUIDToAssetPath(StylizedShaderGuid.ToString());
  42. var flatKitSourceAsset = AssetDatabase.LoadAssetAtPath<Shader>(path);
  43. FlatKitInstalled = flatKitSourceAsset != null;
  44. UnityVersion = Application.unityVersion;
  45. }
  46. private PackageCollection GetPackageList() {
  47. var listRequest = Client.List(true);
  48. while (listRequest.Status == StatusCode.InProgress) { }
  49. if (listRequest.Status == StatusCode.Failure) {
  50. PackageManagerError = listRequest.Error.message;
  51. // 22b5f7ed-989d-49d1-90d9-c62d76c3081a
  52. Debug.LogWarning("[Flat Kit] Failed to get packages from Package Manager.");
  53. return null;
  54. }
  55. return listRequest.Result;
  56. }
  57. }
  58. }