A game about forced loneliness, made by TACStudios
1using System;
2using System.Collections.Generic;
3using UnityEditor.DeploymentTargets;
4using UnityEditor.TestTools.TestRunner.CommandLineTest;
5using UnityEngine;
6
7namespace UnityEditor.TestRunner.TestLaunchers
8{
9 [Serializable]
10 internal class RemotePlayerLogController : ScriptableSingleton<RemotePlayerLogController>
11 {
12 private List<LogWriter> m_LogWriters;
13
14 private Dictionary<string, DeploymentTargetLogger> m_Loggers;
15
16 private string m_DeviceLogsDirectory;
17
18 public void SetBuildTarget(BuildTarget buildTarget)
19 {
20 m_Loggers = GetDeploymentTargetLoggers(buildTarget);
21
22 if (m_Loggers == null)
23 Debug.Log("Deployment target logger could not be created");
24 }
25
26 public void SetLogsDirectory(string dir)
27 {
28 m_DeviceLogsDirectory = dir;
29 }
30
31 public void StartLogWriters()
32 {
33 if (m_DeviceLogsDirectory == null || m_Loggers == null)
34 return;
35
36 m_LogWriters = new List<LogWriter>();
37
38 foreach (var logger in m_Loggers)
39 {
40 m_LogWriters.Add(new LogWriter(m_DeviceLogsDirectory, logger.Key, logger.Value));
41 logger.Value.Start();
42 }
43 }
44
45 public void StopLogWriters()
46 {
47 if (m_LogWriters == null)
48 return;
49
50 foreach (var logWriter in m_LogWriters)
51 {
52 logWriter.Stop();
53 }
54 }
55
56 private Dictionary<string, DeploymentTargetLogger> GetDeploymentTargetLoggers(BuildTarget buildTarget)
57 {
58 DeploymentTargetManager deploymentTargetManager;
59
60 try
61 {
62 deploymentTargetManager = DeploymentTargetManager.CreateInstance(EditorUserBuildSettings.activeBuildTargetGroup, buildTarget);
63
64 if (deploymentTargetManager == null)
65 return null;
66 }
67 catch (NotSupportedException ex)
68 {
69 Debug.Log(ex.Message);
70 Debug.Log("Deployment target logger not initialised");
71 return null;
72 }
73
74 var targets = deploymentTargetManager.GetKnownTargets();
75 var loggers = new Dictionary<string, DeploymentTargetLogger>();
76
77 foreach (var target in targets)
78 {
79 if (target.status != DeploymentTargetStatus.Ready) continue;
80
81 var logger = deploymentTargetManager.GetTargetLogger(target.id);
82 logger.Clear();
83 loggers.Add(target.id, logger);
84 }
85
86 return loggers;
87 }
88 }
89}