144 lines
5.7 KiB
C#
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
|
|
}
|
|
}
|