暫無描述
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.

RiderScriptEditorData.cs 2.1KB

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