Assignment for RMIT Mixed Reality in 2020
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.
 
 
 

85 lines
3.1 KiB

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);
}
}
}