// SteamVR Defines|SDK_SteamVR|001 namespace VRTK { using System; using System.Reflection; /// /// Handles all the scripting define symbols for the SteamVR SDK. /// public static class SDK_SteamVRDefines { /// /// The scripting define symbol for the SteamVR SDK. /// 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; } } }