// SteamVR Defines|SDK_SteamVR|001
|
|
namespace VRTK
|
|
{
|
|
using System;
|
|
using System.Reflection;
|
|
|
|
/// <summary>
|
|
/// Handles all the scripting define symbols for the SteamVR SDK.
|
|
/// </summary>
|
|
public static class SDK_SteamVRDefines
|
|
{
|
|
/// <summary>
|
|
/// The scripting define symbol for the SteamVR SDK.
|
|
/// </summary>
|
|
public const string ScriptingDefineSymbol = SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "SDK_STEAMVR";
|
|
|
|
private const string BuildTargetGroupName = "Standalone";
|
|
|
|
[SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, BuildTargetGroupName)]
|
|
[SDK_ScriptingDefineSymbolPredicate(SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "STEAMVR_PLUGIN_1_2_2_OR_NEWER", BuildTargetGroupName)]
|
|
private static bool IsPluginVersion122OrNewer()
|
|
{
|
|
Type controllerManagerClass = VRTK_SharedMethods.GetTypeUnknownAssembly("SteamVR_ControllerManager");
|
|
if (controllerManagerClass == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return controllerManagerClass.GetMethod("SetUniqueObject", BindingFlags.NonPublic | BindingFlags.Instance) != null;
|
|
}
|
|
|
|
[SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, BuildTargetGroupName)]
|
|
[SDK_ScriptingDefineSymbolPredicate(SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "STEAMVR_PLUGIN_1_2_1_OR_NEWER", BuildTargetGroupName)]
|
|
private static bool IsPluginVersion121OrNewer()
|
|
{
|
|
Type eventClass = VRTK_SharedMethods.GetTypeUnknownAssembly("SteamVR_Events");
|
|
if (eventClass == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
MethodInfo systemMethod = eventClass.GetMethod("System", BindingFlags.Public | BindingFlags.Static);
|
|
if (systemMethod == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
ParameterInfo[] systemMethodParameters = systemMethod.GetParameters();
|
|
if (systemMethodParameters.Length != 1)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return systemMethodParameters[0].ParameterType == VRTK_SharedMethods.GetTypeUnknownAssembly("Valve.VR.EVREventType");
|
|
}
|
|
|
|
[SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, BuildTargetGroupName)]
|
|
[SDK_ScriptingDefineSymbolPredicate(SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "STEAMVR_PLUGIN_1_2_0", BuildTargetGroupName)]
|
|
private static bool IsPluginVersion120()
|
|
{
|
|
Type eventClass = VRTK_SharedMethods.GetTypeUnknownAssembly("SteamVR_Events");
|
|
if (eventClass == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
MethodInfo systemMethod = eventClass.GetMethod("System", BindingFlags.Public | BindingFlags.Static);
|
|
if (systemMethod == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
ParameterInfo[] systemMethodParameters = systemMethod.GetParameters();
|
|
if (systemMethodParameters.Length != 1)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return systemMethodParameters[0].ParameterType == typeof(string);
|
|
}
|
|
|
|
[SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, BuildTargetGroupName)]
|
|
[SDK_ScriptingDefineSymbolPredicate(SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "STEAMVR_PLUGIN_1_1_1_OR_OLDER", BuildTargetGroupName)]
|
|
private static bool IsPluginVersion111OrOlder()
|
|
{
|
|
Type utilsClass = VRTK_SharedMethods.GetTypeUnknownAssembly("SteamVR_Utils");
|
|
if (utilsClass == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
Type eventClass = VRTK_SharedMethods.GetNestedType(utilsClass, "Event");
|
|
if (eventClass == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return eventClass.GetMethod("Listen", BindingFlags.Public | BindingFlags.Static) != null;
|
|
}
|
|
}
|
|
}
|