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