No Description
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.

EditorVersion.cs 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using UnityEngine;
  3. namespace Unity.PlasticSCM.Editor.UI
  4. {
  5. internal class EditorVersion
  6. {
  7. internal int Year;
  8. internal int Release;
  9. internal int Update;
  10. EditorVersion(int year, int release, int update)
  11. {
  12. Year = year;
  13. Release = release;
  14. Update = update;
  15. }
  16. public override string ToString()
  17. {
  18. return String.Format("{0}.{1}.{2}", Year, Release, Update);
  19. }
  20. internal static bool IsCurrentEditorOlderThan(string version)
  21. {
  22. return IsEditorOlderThan(Application.unityVersion, version);
  23. }
  24. internal static bool IsEditorOlderThan(string versionA, string versionB)
  25. {
  26. var editorA = Parse(versionA);
  27. var editorB = Parse(versionB);
  28. if (editorA.Year == editorB.Year)
  29. {
  30. if (editorA.Release == editorB.Release)
  31. {
  32. return editorA.Update < editorB.Update;
  33. }
  34. return editorA.Release < editorB.Release;
  35. }
  36. return editorA.Year < editorB.Year;
  37. }
  38. static int ParseUpdateString(string version)
  39. {
  40. int pos = 0;
  41. char[] characters = version.ToCharArray();
  42. while (Char.IsDigit(characters[pos]))
  43. {
  44. ++pos;
  45. }
  46. return int.Parse(version.Substring(0, pos));
  47. }
  48. static EditorVersion Parse(string version)
  49. {
  50. var versions = version.Split('.');
  51. var year = 0;
  52. year = int.Parse(versions[0]);
  53. var release = 0;
  54. release = int.Parse(versions[1]);
  55. var update = 0;
  56. update = ParseUpdateString(versions[2]);
  57. return new EditorVersion(year, release, update);
  58. }
  59. }
  60. }