Car/Assets/VolumetricLightBeam/Scripts/PlatformHelper.cs

107 lines
4.2 KiB
C#

using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace VLB
{
public class PlatformHelper
{
#if UNITY_EDITOR
static BuildTarget ms_BuildTargetOverride = BuildTarget.NoTarget;
public static void SetBuildTargetOverride(BuildTarget target)
{
ms_BuildTargetOverride = target;
Config.Instance.RefreshShaders(Config.RefreshShaderFlags.All);
}
static BuildTarget GetCurrentBuildTarget()
{
if (BuildPipeline.isBuildingPlayer && ms_BuildTargetOverride != BuildTarget.NoTarget) return ms_BuildTargetOverride;
return EditorUserBuildSettings.activeBuildTarget;
}
static RuntimePlatform BuildTargetToRuntimePlatform(BuildTarget buildTarget)
{
#pragma warning disable 0618 // obsolete BuildTargets
switch (buildTarget)
{
case BuildTarget.Android: return RuntimePlatform.Android;
case BuildTarget.PS4: return RuntimePlatform.PS4;
case BuildTarget.StandaloneLinux64: return RuntimePlatform.LinuxPlayer;
case BuildTarget.StandaloneWindows: return RuntimePlatform.WindowsPlayer;
case BuildTarget.StandaloneWindows64: return RuntimePlatform.WindowsPlayer;
case BuildTarget.WSAPlayer: return RuntimePlatform.WSAPlayerARM;
case BuildTarget.XboxOne: return RuntimePlatform.XboxOne;
case BuildTarget.iOS: return RuntimePlatform.IPhonePlayer;
case BuildTarget.tvOS: return RuntimePlatform.tvOS;
case BuildTarget.WebGL: return RuntimePlatform.WebGLPlayer;
#if UNITY_2017_1_OR_NEWER
case BuildTarget.Switch: return RuntimePlatform.Switch;
#endif
#if UNITY_2017_3_OR_NEWER
case BuildTarget.StandaloneOSX: return RuntimePlatform.OSXPlayer;
#else
case BuildTarget.StandaloneOSXUniversal:return RuntimePlatform.OSXPlayer;
#endif
#if UNITY_2019_3_OR_NEWER
case BuildTarget.Stadia: return RuntimePlatform.Stadia;
#endif
#if UNITY_2020_2_OR_NEWER
case BuildTarget.CloudRendering: return RuntimePlatform.CloudRendering;
#endif
#if UNITY_2021_1_OR_NEWER
case BuildTarget.GameCoreScarlett: return RuntimePlatform.GameCoreScarlett;
case BuildTarget.GameCoreXboxOne: return RuntimePlatform.GameCoreXboxOne;
case BuildTarget.PS5: return RuntimePlatform.PS5;
#endif
// obsolete
case BuildTarget.StandaloneOSXIntel: return RuntimePlatform.OSXPlayer;
case BuildTarget.StandaloneOSXIntel64: return RuntimePlatform.OSXPlayer;
case BuildTarget.StandaloneLinuxUniversal:return RuntimePlatform.LinuxPlayer;
case BuildTarget.WiiU: return RuntimePlatform.WiiU;
case BuildTarget.PSP2: return RuntimePlatform.PSP2;
case BuildTarget.PS3: return RuntimePlatform.PS3;
case BuildTarget.XBOX360: return RuntimePlatform.XBOX360;
default: return (RuntimePlatform)(-1);
}
#pragma warning restore 0618
}
public static bool IsValidPlatformSuffix(string suffix)
{
if (string.IsNullOrEmpty(suffix))
return true;
foreach (var platform in System.Enum.GetNames(typeof(RuntimePlatform)))
{
if (suffix == platform)
return true;
}
return false;
}
#endif // UNITY_EDITOR
public static string GetCurrentPlatformSuffix()
{
#if UNITY_EDITOR
return GetPlatformSuffix(BuildTargetToRuntimePlatform(GetCurrentBuildTarget()));
#else
return GetPlatformSuffix(Application.platform);
#endif
}
static string GetPlatformSuffix(RuntimePlatform platform)
{
return platform.ToString();
}
}
}