using System;
|
|
#if UNITY_EDITOR
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEditor;
|
|
#endif
|
|
|
|
namespace VRTK
|
|
{
|
|
public static class VRTK_Defines
|
|
{
|
|
/// <summary>
|
|
/// The current version of VRTK.
|
|
/// </summary>
|
|
public static readonly Version CurrentVersion = new Version(3, 3, 0);
|
|
|
|
/// <summary>
|
|
/// The previously known versions of VRTK.
|
|
/// </summary>
|
|
public static readonly Version[] PreviousVersions =
|
|
{
|
|
new Version(3, 1, 0),
|
|
new Version(3, 2, 0),
|
|
new Version(3, 2, 1),
|
|
};
|
|
|
|
/// <summary>
|
|
/// The scripting define symbol that is used for the current version of VRTK.
|
|
/// </summary>
|
|
public static string CurrentExactVersionScriptingDefineSymbol { get; private set; }
|
|
|
|
public const string VersionScriptingDefineSymbolPrefix = "VRTK_VERSION_";
|
|
public const string VersionScriptingDefineSymbolSuffix = "_OR_NEWER";
|
|
|
|
static VRTK_Defines()
|
|
{
|
|
CurrentExactVersionScriptingDefineSymbol = ExactVersionSymbol(CurrentVersion);
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
[InitializeOnLoadMethod]
|
|
private static void EnsureVersionSymbolIsSet()
|
|
{
|
|
if (EditorApplication.isPlayingOrWillChangePlaymode)
|
|
{
|
|
return;
|
|
}
|
|
|
|
IEnumerable<string> atLeastVersionSymbols = new[] { CurrentVersion }
|
|
.Concat(PreviousVersions)
|
|
.Select(AtLeastVersionSymbol);
|
|
string[] versionSymbols = new[] { CurrentExactVersionScriptingDefineSymbol }
|
|
.Concat(atLeastVersionSymbols)
|
|
.ToArray();
|
|
|
|
foreach (BuildTargetGroup targetGroup in VRTK_SharedMethods.GetValidBuildTargetGroups())
|
|
{
|
|
string[] currentSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup)
|
|
.Split(';')
|
|
.Distinct()
|
|
.OrderBy(symbol => symbol, StringComparer.Ordinal)
|
|
.ToArray();
|
|
string[] newSymbols = currentSymbols.Where(symbol => !symbol.StartsWith(VersionScriptingDefineSymbolPrefix, StringComparison.Ordinal))
|
|
.Concat(versionSymbols)
|
|
.ToArray();
|
|
|
|
if (!currentSymbols.SequenceEqual(newSymbols))
|
|
{
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, string.Join(";", newSymbols));
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
private static string ExactVersionSymbol(Version version)
|
|
{
|
|
return string.Format("{0}{1}", VersionScriptingDefineSymbolPrefix, version.ToString().Replace(".", "_"));
|
|
}
|
|
|
|
private static string AtLeastVersionSymbol(Version version)
|
|
{
|
|
return string.Format("{0}{1}", ExactVersionSymbol(version), VersionScriptingDefineSymbolSuffix);
|
|
}
|
|
}
|
|
}
|