mixedreality/com.microsoft.mixedreality..../Core/Utilities/PlatformUtility.cs

144 lines
5.7 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.Utilities
{
public static class PlatformUtility
{
public static bool IsPlatformSupported(SupportedPlatforms platforms)
{
#if UNITY_EDITOR
SupportedPlatforms target = GetSupportedPlatformMask(UnityEditor.EditorUserBuildSettings.activeBuildTarget);
#else
SupportedPlatforms target = GetSupportedPlatformMask(Application.platform);
#endif
return IsPlatformSupported(target, platforms);
}
[Obsolete("Use PlatformUtility.IsPlatformSupported(SupportedPlatforms platforms) instead, which accounts for both the in-editor and runtime case.")]
public static bool IsPlatformSupported(this RuntimePlatform runtimePlatform, SupportedPlatforms platforms)
{
SupportedPlatforms target = GetSupportedPlatformMask(runtimePlatform);
return IsPlatformSupported(target, platforms);
}
private static SupportedPlatforms GetSupportedPlatformMask(RuntimePlatform runtimePlatform)
{
SupportedPlatforms supportedPlatforms = 0;
switch (runtimePlatform)
{
case RuntimePlatform.WindowsPlayer:
case RuntimePlatform.WindowsEditor:
supportedPlatforms |= SupportedPlatforms.WindowsStandalone;
break;
case RuntimePlatform.WSAPlayerARM:
case RuntimePlatform.WSAPlayerX86:
case RuntimePlatform.WSAPlayerX64:
supportedPlatforms |= SupportedPlatforms.WindowsUniversal;
break;
case RuntimePlatform.OSXPlayer:
case RuntimePlatform.OSXEditor:
supportedPlatforms |= SupportedPlatforms.MacStandalone;
break;
case RuntimePlatform.LinuxPlayer:
case RuntimePlatform.LinuxEditor:
supportedPlatforms |= SupportedPlatforms.LinuxStandalone;
break;
case RuntimePlatform.Android:
supportedPlatforms |= SupportedPlatforms.Android;
break;
case RuntimePlatform.IPhonePlayer:
supportedPlatforms |= SupportedPlatforms.IOS;
break;
case RuntimePlatform.WebGLPlayer:
supportedPlatforms |= SupportedPlatforms.Web;
break;
#if !UNITY_2022_2_OR_NEWER
case RuntimePlatform.Lumin:
supportedPlatforms |= SupportedPlatforms.Lumin;
break;
#endif
}
return supportedPlatforms;
}
private static bool IsPlatformSupported(SupportedPlatforms target, SupportedPlatforms supported)
{
return (target & supported) > 0;
}
#if UNITY_EDITOR
[Obsolete("Use PlatformUtility.IsPlatformSupported(SupportedPlatforms platforms) instead, which accounts for both the in-editor and runtime case.")]
public static bool IsPlatformSupported(this UnityEditor.BuildTarget editorBuildTarget, SupportedPlatforms platforms)
{
SupportedPlatforms target = GetSupportedPlatformMask(editorBuildTarget);
return IsPlatformSupported(target, platforms);
}
private static SupportedPlatforms GetSupportedPlatformMask(UnityEditor.BuildTarget editorBuildTarget)
{
SupportedPlatforms supportedPlatforms = 0;
// Editor platforms
switch (Application.platform)
{
case RuntimePlatform.WindowsEditor:
supportedPlatforms |= SupportedPlatforms.WindowsEditor;
break;
case RuntimePlatform.OSXEditor:
supportedPlatforms |= SupportedPlatforms.MacEditor;
break;
case RuntimePlatform.LinuxEditor:
supportedPlatforms |= SupportedPlatforms.LinuxEditor;
break;
}
// Build target platforms
switch (editorBuildTarget)
{
case UnityEditor.BuildTarget.StandaloneWindows:
case UnityEditor.BuildTarget.StandaloneWindows64:
supportedPlatforms |= SupportedPlatforms.WindowsStandalone;
break;
case UnityEditor.BuildTarget.WSAPlayer:
supportedPlatforms |= SupportedPlatforms.WindowsUniversal;
break;
case UnityEditor.BuildTarget.StandaloneOSX:
supportedPlatforms |= SupportedPlatforms.MacStandalone;
break;
#if !UNITY_2019_2_OR_NEWER
case UnityEditor.BuildTarget.StandaloneLinux:
case UnityEditor.BuildTarget.StandaloneLinuxUniversal:
#endif
case UnityEditor.BuildTarget.StandaloneLinux64:
supportedPlatforms |= SupportedPlatforms.LinuxStandalone;
break;
case UnityEditor.BuildTarget.Android:
supportedPlatforms |= SupportedPlatforms.Android;
break;
case UnityEditor.BuildTarget.iOS:
supportedPlatforms |= SupportedPlatforms.IOS;
break;
case UnityEditor.BuildTarget.WebGL:
supportedPlatforms |= SupportedPlatforms.Web;
break;
#if !UNITY_2022_2_OR_NEWER
case UnityEditor.BuildTarget.Lumin:
supportedPlatforms |= SupportedPlatforms.Lumin;
break;
#endif
}
return supportedPlatforms;
}
#endif
}
}