説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

RiderScriptEditorData.cs 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Linq;
  3. using JetBrains.Rider.PathLocator;
  4. using Packages.Rider.Editor.Util;
  5. using Rider.Editor.Util;
  6. using UnityEditor;
  7. using UnityEngine;
  8. namespace Packages.Rider.Editor
  9. {
  10. internal class RiderScriptEditorData : ScriptableSingleton<RiderScriptEditorData>
  11. {
  12. // activeBuildTargetChanged has changed
  13. // making it true by default would cause multiple Sync projects on the startup
  14. [SerializeField] internal bool hasChanges;
  15. [SerializeField] internal bool shouldLoadEditorPlugin;
  16. [SerializeField] internal bool initializedOnce;
  17. [SerializeField] internal SerializableVersion editorBuildNumber;
  18. [SerializeField] internal SerializableVersion prevEditorBuildNumber;
  19. [SerializeField] internal RiderPathLocator.RiderInfo[] installations;
  20. [SerializeField] internal string[] activeScriptCompilationDefines;
  21. public void Init()
  22. {
  23. if (editorBuildNumber == null)
  24. {
  25. Invalidate(RiderScriptEditor.CurrentEditor);
  26. }
  27. }
  28. public void InvalidateSavedCompilationDefines()
  29. {
  30. activeScriptCompilationDefines = EditorUserBuildSettings.activeScriptCompilationDefines;
  31. }
  32. public bool HasChangesInCompilationDefines()
  33. {
  34. if (activeScriptCompilationDefines == null)
  35. return false;
  36. return !EditorUserBuildSettings.activeScriptCompilationDefines.SequenceEqual(activeScriptCompilationDefines);
  37. }
  38. public void Invalidate(string editorInstallationPath, bool shouldInvalidatePrevEditorBuildNumber = false)
  39. {
  40. var riderBuildNumber = Discovery.RiderPathLocator.GetBuildNumber(editorInstallationPath);
  41. editorBuildNumber = riderBuildNumber.ToSerializableVersion();
  42. if (shouldInvalidatePrevEditorBuildNumber)
  43. prevEditorBuildNumber = editorBuildNumber;
  44. if (riderBuildNumber == null) // if we fail to parse for some reason
  45. shouldLoadEditorPlugin = true;
  46. shouldLoadEditorPlugin = riderBuildNumber >= new Version("191.7141.156");
  47. if (RiderPathUtil.IsRiderDevEditor(editorInstallationPath))
  48. {
  49. shouldLoadEditorPlugin = true;
  50. editorBuildNumber = new SerializableVersion(new Version("999.999.999.999"));
  51. }
  52. }
  53. }
  54. }