A game about forced loneliness, made by TACStudios
1#if UNITY_2022_2_OR_NEWER
2using System;
3#endif
4using UnityEditor.Build;
5using UnityEngine;
6
7namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol
8{
9 internal static class UtpMessageBuilder
10 {
11 internal static ScreenSettingsMessage BuildScreenSettings()
12 {
13#if UNITY_2022_2_OR_NEWER
14 // casting to int and rounding to ensure backwards compatibility with older package versions
15 var screenRefreshRate = (int)Math.Round(Screen.currentResolution.refreshRateRatio.value);
16#else
17 var screenRefreshRate = Screen.currentResolution.refreshRate;
18#endif
19
20 var screenSettingsMessage = new ScreenSettingsMessage()
21 {
22 ScreenSettings = new ScreenSettings(Screen.currentResolution.width, Screen.currentResolution.height, screenRefreshRate, Screen.fullScreen)
23 };
24
25 return screenSettingsMessage;
26 }
27
28 public static QualitySettingsMessage BuildQualitySettings()
29 {
30 var qualitySettingsMessage = new QualitySettingsMessage()
31 {
32 QualitySettings = new QualitySettings(
33 UnityEngine.QualitySettings.vSyncCount,
34 UnityEngine.QualitySettings.antiAliasing,
35 UnityEngine.QualitySettings.activeColorSpace.ToString(),
36 UnityEngine.QualitySettings.anisotropicFiltering.ToString(),
37 UnityEngine.QualitySettings.skinWeights.ToString()
38 ),
39 };
40 return qualitySettingsMessage;
41 }
42
43 internal static PlayerSystemInfoMessage BuildPlayerSystemInfo()
44 {
45 var xrDevice = string.Empty;
46 var XrModel = string.Empty;
47#if ENABLE_XR
48 xrDevice = UnityEngine.XR.XRSettings.loadedDeviceName;
49 XrModel = UnityEngine.XR.XRDevice.model;
50#endif
51
52 var playerSystemInfoMessage = new PlayerSystemInfoMessage()
53 {
54 PlayerSystemInfo = new PlayerSystemInfo(
55 SystemInfo.operatingSystem,
56 SystemInfo.deviceModel,
57 SystemInfo.deviceName,
58 SystemInfo.processorType,
59 SystemInfo.processorCount,
60 SystemInfo.graphicsDeviceName,
61 SystemInfo.systemMemorySize,
62 XrModel,
63 xrDevice
64 ),
65 };
66 return playerSystemInfoMessage;
67 }
68
69 internal static PlayerSettingsMessage BuildPlayerSettings()
70 {
71 var scriptingBackend = string.Empty;
72#if UNITY_2021_2_OR_NEWER
73 scriptingBackend =
74 UnityEditor.PlayerSettings.GetScriptingBackend(NamedBuildTarget.FromBuildTargetGroup(EditorUserBuildSettings.selectedBuildTargetGroup)).ToString();
75#else
76 scriptingBackend = UnityEditor.PlayerSettings.GetScriptingBackend(EditorUserBuildSettings.selectedBuildTargetGroup).ToString();
77#endif
78
79 var playerSettingsMessage = new PlayerSettingsMessage()
80 {
81 PlayerSettings = new PlayerSettings(
82 scriptingBackend,
83 UnityEditor.PlayerSettings.gpuSkinning,
84 string.Empty,
85 UnityEditorInternal.InternalEditorUtility.inBatchMode.ToString(),
86 UnityEditor.PlayerSettings.stereoRenderingPath.ToString(),
87 UnityEditor.PlayerSettings.graphicsJobs ? "GraphicsJobs" : UnityEditor.PlayerSettings.MTRendering ? "MultiThreaded" : "SingleThreaded",
88 UnityEditor.PlayerSettings.Android.targetSdkVersion.ToString(),
89 UnityEditor.PlayerSettings.Android.minSdkVersion.ToString(),
90 UnityEditor.PlayerSettings.graphicsJobs,
91 UnityEditor.PlayerSettings.MTRendering
92 ),
93 };
94
95 return playerSettingsMessage;
96 }
97
98 internal static BuildSettingsMessage BuildBuildSettings()
99 {
100 var buildSettingsMessage = new BuildSettingsMessage()
101 {
102 BuildSettings = new BuildSettings(
103 Application.platform.ToString(),
104 EditorUserBuildSettings.activeBuildTarget.ToString(),
105 EditorUserBuildSettings.development,
106 EditorUserBuildSettings.androidBuildSystem.ToString()
107 )
108 };
109
110 return buildSettingsMessage;
111 }
112 }
113}