A game about forced loneliness, made by TACStudios
at master 67 lines 2.4 kB view raw
1using System; 2using UnityEditor.Build; 3using UnityEditor.Build.Reporting; 4using UnityEngine.Analytics; 5using UnityEngine.Rendering; 6 7namespace UnityEditor.Rendering 8{ 9 class RenderPipelineGraphicsSettingsAnalytics : IPostprocessBuildWithReport 10 { 11 const int k_MaxEventsPerHour = 1000; 12 const int k_MaxNumberOfElements = 1000; 13 const string k_VendorKey = "unity.srp"; 14 const string k_EventName = "uRenderPipelineGraphicsSettingsUsage"; 15 16 [AnalyticInfo(eventName: k_EventName, vendorKey: k_VendorKey, maxEventsPerHour: k_MaxEventsPerHour, maxNumberOfElements: k_MaxNumberOfElements)] 17 public class Analytic : IAnalytic 18 { 19 [Serializable] 20 public struct AnalyticsData : IAnalytic.IData 21 { 22 public string settings; 23 public string[] usage; 24 } 25 26 public bool TryGatherData(out IAnalytic.IData data, out Exception error) 27 { 28 data = GatherDataToBeSent(); 29 error = null; 30 return true; 31 } 32 33 public static IAnalytic.DataList<AnalyticsData> GatherDataToBeSent() 34 { 35 using (ListPool<AnalyticsData>.Get(out var tmp)) 36 { 37 GraphicsSettings.ForEach(settings => 38 { 39 var settingsType = settings.GetType(); 40 var usage = settings.ToNestedColumn(Activator.CreateInstance(settingsType)); 41 if (usage.Length != 0) 42 tmp.Add(new AnalyticsData() { settings = settingsType.FullName, usage = usage }); 43 }); 44 45 return new IAnalytic.DataList<AnalyticsData>(tmp.ToArray()); 46 } 47 } 48 } 49 50 static void SendUniversalEvent() 51 { 52 //The event shouldn't be able to report if this is disabled but if we know we're not going to report 53 //Lets early out and not waste time gathering all the data 54 if (!EditorAnalytics.enabled) 55 return; 56 57 Analytic analytic = new Analytic(); 58 EditorAnalytics.SendAnalytic(analytic); 59 } 60 61 public int callbackOrder { get; } 62 public void OnPostprocessBuild(BuildReport report) 63 { 64 SendUniversalEvent(); 65 } 66 } 67}