76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
using System;
|
|
|
|
using UnityEngine;
|
|
|
|
namespace Unity.PlasticSCM.Editor.UI
|
|
{
|
|
internal class EditorVersion
|
|
{
|
|
internal int Year;
|
|
internal int Release;
|
|
internal int Update;
|
|
|
|
EditorVersion(int year, int release, int update)
|
|
{
|
|
Year = year;
|
|
Release = release;
|
|
Update = update;
|
|
}
|
|
|
|
|
|
public override string ToString()
|
|
{
|
|
return String.Format("{0}.{1}.{2}", Year, Release, Update);
|
|
}
|
|
|
|
internal static bool IsCurrentEditorOlderThan(string version)
|
|
{
|
|
return IsEditorOlderThan(Application.unityVersion, version);
|
|
}
|
|
|
|
internal static bool IsEditorOlderThan(string versionA, string versionB)
|
|
{
|
|
#if UNITY_2017_1_OR_NEWER
|
|
var editorA = Parse(versionA);
|
|
var editorB = Parse(versionB);
|
|
if (editorA.Year == editorB.Year)
|
|
{
|
|
if (editorA.Release == editorB.Release)
|
|
{
|
|
return editorA.Update < editorB.Update;
|
|
}
|
|
return editorA.Release < editorB.Release;
|
|
}
|
|
return editorA.Year < editorB.Year;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
static int ParseUpdateString(string version)
|
|
{
|
|
int pos = 0;
|
|
char[] characters = version.ToCharArray();
|
|
while (Char.IsDigit(characters[pos]))
|
|
{
|
|
++pos;
|
|
}
|
|
return int.Parse(version.Substring(0, pos));
|
|
}
|
|
|
|
static EditorVersion Parse(string version)
|
|
{
|
|
var versions = version.Split('.');
|
|
|
|
var year = 0;
|
|
year = int.Parse(versions[0]);
|
|
var release = 0;
|
|
release = int.Parse(versions[1]);
|
|
var update = 0;
|
|
update = ParseUpdateString(versions[2]);
|
|
|
|
return new EditorVersion(year, release, update);
|
|
}
|
|
}
|
|
}
|