A game about forced loneliness, made by TACStudios
at master 66 lines 2.6 kB view raw
1using JetBrains.Annotations; 2using System; 3using System.Diagnostics.CodeAnalysis; 4using UnityEditor.Build; 5using UnityEditor.Build.Reporting; 6using UnityEngine; 7using UnityEngine.Analytics; 8using UnityEngine.Rendering; 9 10namespace UnityEditor.Rendering.Analytics 11{ 12 internal class BuildTargetAnalytic : IPostprocessBuildWithReport 13 { 14 public int callbackOrder => int.MaxValue; 15 16 [AnalyticInfo(eventName: "uBuildTargetAnalytic", vendorKey: "unity.srp", maxEventsPerHour: 10, maxNumberOfElements: 1000)] 17 internal class Analytic : IAnalytic 18 { 19 20 [MustUseReturnValue] 21 public bool TryGatherData([NotNullWhen(true)] out IAnalytic.IData data, [NotNullWhen(false)] out Exception error) 22 { 23 var activeBuildTarget = EditorUserBuildSettings.activeBuildTarget; 24 var activeBuildTargetGroup = BuildPipeline.GetBuildTargetGroup(activeBuildTarget); 25 var activeBuildTargetGroupName = NamedBuildTarget.FromBuildTargetGroup(activeBuildTargetGroup).TargetName; 26 27 error = null; 28 29 var assetType = GraphicsSettings.currentRenderPipeline == null ? "Built-In Render Pipeline" : GraphicsSettings.currentRenderPipeline.GetType().ToString(); 30 31 data = new BuildTargetAnalyticData() 32 { 33 build_target = activeBuildTarget.ToString(), 34 quality_levels = QualitySettings.GetActiveQualityLevelsForPlatformCount(activeBuildTargetGroupName), 35 render_pipeline_asset_type = assetType, 36 total_quality_levels_on_project = QualitySettings.count 37 }; 38 return true; 39 } 40 }; 41 42 [System.Diagnostics.DebuggerDisplay("{render_pipeline_asset_type} - {quality_levels}/{total_quality_levels_on_project}")] 43 [Serializable] 44 internal struct BuildTargetAnalyticData : IAnalytic.IData 45 { 46 // Naming convention for analytics data 47 public string build_target; 48 public string render_pipeline_asset_type; 49 public int quality_levels; 50 public int total_quality_levels_on_project; 51 }; 52 53 void IPostprocessBuildWithReport.OnPostprocessBuild(BuildReport _) 54 { 55 SendAnalytic(); 56 } 57 58 [MenuItem("internal:Edit/Rendering/Analytics/Send BuildTargetAnalytic ", priority = 0)] 59 static void SendAnalytic() 60 { 61 Analytic analytic = new Analytic(); 62 EditorAnalytics.SendAnalytic(analytic); 63 } 64 } 65 66}