internal static float GetScreenDiagonalInches(IUnityUIAgent agent) { var screenWidth = agent.ScreenWidth / Screen.dpi; var screenHeight = agent.ScreenHeight / Screen.dpi; return(Mathf.Sqrt(Mathf.Pow(screenWidth, 2) + Mathf.Pow(screenHeight, 2))); }
public static InterfaceType GetInterfaceTypeStatic(IUnityUIAgent agent) { var target = EditorUserBuildSettings.activeBuildTarget; switch (target) { case BuildTarget.iOS: case BuildTarget.Android: return(UnityUI.IsTablet(agent) ? InterfaceType.Tablet : InterfaceType.Phone); case BuildTarget.StandaloneOSX: case BuildTarget.StandaloneWindows: case BuildTarget.StandaloneWindows64: case BuildTarget.StandaloneLinux64: return(InterfaceType.Desktop); case BuildTarget.XboxOne: case BuildTarget.GameCoreXboxOne: case BuildTarget.PS4: case BuildTarget.PS5: case BuildTarget.Switch: return(InterfaceType.Console); case BuildTarget.WebGL: return(InterfaceType.Web); case BuildTarget.tvOS: return(InterfaceType.TV); default: throw new ArgumentOutOfRangeException($"Unknown build type. Target: {target}"); } }
/* * Public. */ internal static bool IsTablet(IUnityUIAgent agent) { var diagonal = GetScreenDiagonalInches(agent); var aspect = GetScreenAspectRatio(agent); if (aspect >= 1.77) { return(diagonal >= 7F); } return(diagonal >= 5F); }
static UnityUI() { if (!Application.isPlaying) { return; } _agent = InitializeAgent(UnityUIAgentRuntime.Create(GetRoot())); CurrentInterfaceType = _agent.GetInterfaceType(); }
private static void DisposeAgent() { if (_agent == null) { return; } _agent.OnSomethingChanged -= OnSomethingChangedHandler; _agent.Dispose(); _agent = null; }
private static void OnPlayModeChanged(UnityEditor.PlayModeStateChange state) { switch (state) { case UnityEditor.PlayModeStateChange.EnteredPlayMode: DisposeAgent(); _agent = InitializeAgent(UnityUIAgentEditorRuntime.Create(GetRoot())); CurrentInterfaceType = _agent.GetInterfaceType(); break; case UnityEditor.PlayModeStateChange.EnteredEditMode: DisposeAgent(); _agent = InitializeAgent(UnityUIAgentEditor.Create()); CurrentInterfaceType = _agent.GetInterfaceType(); break; } }
/* * Private. */ private static IUnityUIAgent InitializeAgent(IUnityUIAgent agent) { agent.OnSomethingChanged += OnSomethingChangedHandler; return(agent); }
internal static float GetScreenAspectRatio(IUnityUIAgent agent) { return(Mathf.Max((float)agent.ScreenWidth, agent.ScreenHeight) / Mathf.Min(agent.ScreenWidth, agent.ScreenHeight)); }
private static void Initialize() { _agent = InitializeAgent(UnityUIAgentEditor.Create()); UnityEditor.EditorApplication.playModeStateChanged += OnPlayModeChanged; }