A game about forced loneliness, made by TACStudios
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}