// Oculus Defines|SDK_Oculus|001 namespace VRTK { using System; using System.Reflection; /// /// Handles all the scripting define symbols for the Oculus and Avatar SDKs. /// public static class SDK_OculusDefines { /// /// The scripting define symbol for the Oculus SDK. /// public const string ScriptingDefineSymbol = SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "SDK_OCULUS"; /// /// The scripting define symbol for the Oculus Avatar SDK. /// public const string AvatarScriptingDefineSymbol = SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "SDK_OCULUS_AVATAR"; [SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, "Standalone")] [SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, "Android")] [SDK_ScriptingDefineSymbolPredicate(SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "OCULUS_UTILITIES_1_12_0_OR_NEWER", "Standalone")] [SDK_ScriptingDefineSymbolPredicate(SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "OCULUS_UTILITIES_1_12_0_OR_NEWER", "Android")] private static bool IsUtilitiesVersion1120OrNewer() { Version wrapperVersion = GetOculusWrapperVersion(); return wrapperVersion != null && wrapperVersion >= new Version(1, 12, 0); } [SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, "Standalone")] [SDK_ScriptingDefineSymbolPredicate(ScriptingDefineSymbol, "Android")] [SDK_ScriptingDefineSymbolPredicate(SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "OCULUS_UTILITIES_1_11_0_OR_OLDER", "Standalone")] [SDK_ScriptingDefineSymbolPredicate(SDK_ScriptingDefineSymbolPredicateAttribute.RemovableSymbolPrefix + "OCULUS_UTILITIES_1_11_0_OR_OLDER", "Android")] private static bool IsUtilitiesVersion1110OrOlder() { Version wrapperVersion = GetOculusWrapperVersion(); return wrapperVersion != null && wrapperVersion < new Version(1, 12, 0); } [SDK_ScriptingDefineSymbolPredicate(AvatarScriptingDefineSymbol, "Standalone")] [SDK_ScriptingDefineSymbolPredicate(AvatarScriptingDefineSymbol, "Android")] private static bool IsAvatarAvailable() { return (IsUtilitiesVersion1120OrNewer() || IsUtilitiesVersion1110OrOlder()) && VRTK_SharedMethods.GetTypeUnknownAssembly("OvrAvatar") != null; } private static Version GetOculusWrapperVersion() { Type pluginClass = VRTK_SharedMethods.GetTypeUnknownAssembly("OVRPlugin"); if (pluginClass == null) { return null; } FieldInfo versionField = pluginClass.GetField("wrapperVersion", BindingFlags.Public | BindingFlags.Static); if (versionField == null) { return null; } return (Version)versionField.GetValue(null); } } }