Improved Analytics
This commit is contained in:
Родитель
068d771b17
Коммит
fdfcf976aa
|
@ -37,18 +37,22 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
internal enum ExportStatus
|
||||
{
|
||||
Started,
|
||||
Finished
|
||||
Finished,
|
||||
Error
|
||||
}
|
||||
|
||||
internal enum ExportType
|
||||
{
|
||||
Selected,
|
||||
MultiWindow,
|
||||
Multi,
|
||||
Captured
|
||||
Captured,
|
||||
CapturedAll
|
||||
}
|
||||
|
||||
struct ExportEventData
|
||||
{
|
||||
public string guid;
|
||||
public string format;
|
||||
public string type;
|
||||
public string status;
|
||||
|
@ -58,9 +62,12 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
{
|
||||
public bool eipState;
|
||||
public bool isPlaying;
|
||||
public bool deepProfile;
|
||||
public bool flatten;
|
||||
public bool userCode;
|
||||
}
|
||||
|
||||
public static void SendExportEvent(string format, string type, string status)
|
||||
public static void SendExportEvent(string format, string type, string status, string guid)
|
||||
{
|
||||
if (!UnityEngine.Analytics.Analytics.enabled || !EnableAnalytics())
|
||||
{
|
||||
|
@ -71,13 +78,14 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
{
|
||||
format = format,
|
||||
type = type,
|
||||
status = status
|
||||
status = status,
|
||||
guid = guid
|
||||
};
|
||||
|
||||
EditorAnalytics.SendEventWithLimit(k_ExportEventName, data);
|
||||
}
|
||||
|
||||
public static void SendInteractionEvent(bool state, bool isPlaying)
|
||||
public static void SendInteractionEvent(bool state, bool isPlaying, bool deepProfile, bool flatten, bool userCode)
|
||||
{
|
||||
if (!UnityEngine.Analytics.Analytics.enabled || !EnableAnalytics())
|
||||
{
|
||||
|
@ -87,7 +95,10 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
var data = new InteractionEventData()
|
||||
{
|
||||
eipState = state,
|
||||
isPlaying = isPlaying
|
||||
isPlaying = isPlaying,
|
||||
deepProfile = deepProfile,
|
||||
flatten = flatten,
|
||||
userCode = userCode
|
||||
};
|
||||
|
||||
EditorAnalytics.SendEventWithLimit(k_InteractionEventName, data);
|
||||
|
|
|
@ -8,8 +8,13 @@ using UnityEditor.ShortcutManagement;
|
|||
using UnityEditorInternal;
|
||||
using UnityEngine;
|
||||
|
||||
using ExportType = UnityEditor.EditorIterationProfiler.EditorIterationProfilerAnalytics.ExportType;
|
||||
using ExportStatus = UnityEditor.EditorIterationProfiler.EditorIterationProfilerAnalytics.ExportStatus;
|
||||
|
||||
|
||||
namespace UnityEditor.EditorIterationProfiler
|
||||
{
|
||||
|
||||
public class EditorIterationProfilerWindow : EditorWindow
|
||||
{
|
||||
internal static class Styles
|
||||
|
@ -95,14 +100,6 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
}
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
}
|
||||
|
||||
void DrawToolbar()
|
||||
{
|
||||
GUILayout.BeginHorizontal(EditorStyles.toolbar);
|
||||
|
@ -141,8 +138,7 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
|
||||
foreach (var exporter in exporters)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(exporter.Name, EditorIterationProfilerAnalytics.ExportType.Captured.ToString(), EditorIterationProfilerAnalytics.ExportStatus.Started.ToString());
|
||||
menu.AddItem(new GUIContent(exporter.Name), false, () => ReportExtension(exporter, EditorIterationProfilerIntegration.Instance.IterationList));
|
||||
menu.AddItem(new GUIContent(exporter.Name), false, () => ReportExtension(exporter, EditorIterationProfilerIntegration.Instance.IterationList, ExportType.Captured));
|
||||
}
|
||||
|
||||
menu.AddSeparator("");
|
||||
|
@ -172,7 +168,6 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
|
||||
foreach (var exporter in exporters)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(exporter.Name, EditorIterationProfilerAnalytics.ExportType.Selected.ToString(), EditorIterationProfilerAnalytics.ExportStatus.Started.ToString());
|
||||
menu.AddItem(new GUIContent("Selected Frame/" + exporter.Name), false, () => ReportSelectedFrame(exporter, currentFrameIndex));
|
||||
}
|
||||
|
||||
|
@ -182,7 +177,6 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
{
|
||||
menu.AddItem(new GUIContent("Multiple Frames/" + exporter.Name), false, () =>
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(exporter.Name, EditorIterationProfilerAnalytics.ExportType.Multi.ToString(), EditorIterationProfilerAnalytics.ExportStatus.Started.ToString());
|
||||
var window = GetWindow<ProfilerMultiFrameSelector>();
|
||||
window.Initialize(exporter);
|
||||
});
|
||||
|
@ -201,6 +195,8 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
|
||||
if (m_TreeView.UserCodeOnly != userCodeOnly)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendInteractionEvent(UnityProfiling.EditorProfilingEnabled, EditorApplication.isPlaying, ProfilerDriver.deepProfiling, EditorIterationProfilerIntegration.Instance.Settings.Flatten, EditorIterationProfilerIntegration.Instance.Settings.UserCode);
|
||||
|
||||
m_TreeView.UserCodeOnly = userCodeOnly;
|
||||
EditorPrefs.SetBool(Styles.k_UserCodePref, m_TreeView.UserCodeOnly);
|
||||
m_TreeView.Reload();
|
||||
|
@ -208,6 +204,8 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
|
||||
if (m_TreeView.Flatten != flatten)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendInteractionEvent(UnityProfiling.EditorProfilingEnabled, EditorApplication.isPlaying, ProfilerDriver.deepProfiling, EditorIterationProfilerIntegration.Instance.Settings.Flatten, EditorIterationProfilerIntegration.Instance.Settings.UserCode);
|
||||
|
||||
m_TreeView.Flatten = flatten;
|
||||
EditorPrefs.SetBool(Styles.k_FlattenPref, m_TreeView.Flatten);
|
||||
m_TreeView.Reload();
|
||||
|
@ -217,14 +215,17 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
public static void ReportMultipleFrames(IFileDataReporter reporter, int beginRange, int endRange)
|
||||
public static void ReportMultipleFrames(IFileDataReporter reporter, int beginRange, int endRange, string guid)
|
||||
{
|
||||
var exportType = ExportType.Multi;
|
||||
if (beginRange == -1)
|
||||
{
|
||||
ReportSelectedFrame(reporter, beginRange);
|
||||
ReportSelectedFrame(reporter, beginRange, exportType, guid);
|
||||
return;
|
||||
}
|
||||
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, exportType.ToString(), ExportStatus.Started.ToString(), guid);
|
||||
|
||||
var path = EditorUtility.SaveFolderPanel($"Export frames to folder", "", reporter.Extension);
|
||||
|
||||
for (int i = beginRange - 1; i < endRange; ++i)
|
||||
|
@ -238,6 +239,7 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
|
||||
if (!hfdv.valid)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, exportType.ToString(), ExportStatus.Error.ToString(), guid);
|
||||
Debug.LogError($"There was an issue getting the frame {i}");
|
||||
return;
|
||||
}
|
||||
|
@ -262,18 +264,23 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
if (path.Length != 0)
|
||||
{
|
||||
reporter.Report(list, Path.Combine(path, filename));
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, EditorIterationProfilerAnalytics.ExportType.Multi.ToString(), EditorIterationProfilerAnalytics.ExportStatus.Finished.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
if (path.Length != 0)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, EditorIterationProfilerAnalytics.ExportType.Multi.ToString(), EditorIterationProfilerAnalytics.ExportStatus.Finished.ToString());
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, exportType.ToString(), ExportStatus.Finished.ToString(), guid);
|
||||
}
|
||||
}
|
||||
|
||||
static void ReportSelectedFrame(IFileDataReporter exporter, int currentFrameIndex)
|
||||
static void ReportSelectedFrame(IFileDataReporter reporter, int currentFrameIndex, ExportType exportType = ExportType.Selected, string guid = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(guid))
|
||||
{
|
||||
guid = Guid.NewGuid().ToString();
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, exportType.ToString(), ExportStatus.Started.ToString(), guid);
|
||||
}
|
||||
|
||||
var list = new IterationList();
|
||||
|
||||
var hfdv = UnityProfiling.GetFrame(currentFrameIndex, 0);
|
||||
|
@ -283,6 +290,7 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
|
||||
if (!hfdv.valid)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, exportType.ToString(), ExportStatus.Error.ToString(), guid);
|
||||
Debug.LogError($"There was an issue getting the frame {currentFrameIndex}");
|
||||
return;
|
||||
}
|
||||
|
@ -302,28 +310,37 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
lastEvent.SetStartFinishTimeFromChildren();
|
||||
lastEvent.Identifier = $"Data (Frame {currentFrameIndex + 1})";
|
||||
|
||||
ReportExtension(exporter, list, isExportingProfilerSelectedFrame: true);
|
||||
ReportExtension(reporter, list, exportType, guid);
|
||||
}
|
||||
|
||||
static void ReportAllExtensions(IIterationList iterationList)
|
||||
{
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
|
||||
var path = EditorUtility.SaveFolderPanel($"Export frames to folder", "", "");
|
||||
var extensions = EditorIterationProfilerIntegration.Instance.DataReporterProvider.GetAllReporters<IFileDataReporter>();
|
||||
|
||||
foreach (var extension in extensions)
|
||||
{
|
||||
ReportExtension(extension, iterationList, path);
|
||||
ReportExtension(extension, iterationList, ExportType.CapturedAll, guid, path);
|
||||
}
|
||||
}
|
||||
|
||||
static void ReportExtension(IFileDataReporter fileReporterType, IIterationList iterationList, string folderPath = "", bool isExportingProfilerSelectedFrame = false)
|
||||
static void ReportExtension(IFileDataReporter fileReporterType, IIterationList iterationList, ExportType exportType, string guid = "", string folderPath = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(guid))
|
||||
{
|
||||
guid = Guid.NewGuid().ToString();
|
||||
}
|
||||
|
||||
if(ExportType.Selected != exportType)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(fileReporterType.Name, exportType.ToString(), ExportStatus.Started.ToString(), guid);
|
||||
}
|
||||
|
||||
var reporter = EditorIterationProfilerIntegration.Instance.DataReporterProvider.TryGetReporter<IFileDataReporter>(fileReporterType.GetType());
|
||||
if (reporter == null)
|
||||
{
|
||||
#if DEVELOPMENT_BUILD
|
||||
Debug.LogError($"Reporter is null! Check if type name \"{typeName}\" exists");
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -343,14 +360,7 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
{
|
||||
reporter.Report(iterationList, path);
|
||||
|
||||
if (isExportingProfilerSelectedFrame)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, EditorIterationProfilerAnalytics.ExportType.Selected.ToString(), EditorIterationProfilerAnalytics.ExportStatus.Finished.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, EditorIterationProfilerAnalytics.ExportType.Captured.ToString(), EditorIterationProfilerAnalytics.ExportStatus.Finished.ToString());
|
||||
}
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(reporter.Name, exportType.ToString(), ExportStatus.Finished.ToString(), guid);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -382,7 +392,7 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
|
||||
void OnLostFocus()
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendInteractionEvent(UnityProfiling.EditorProfilingEnabled, EditorApplication.isPlaying);
|
||||
EditorIterationProfilerAnalytics.SendInteractionEvent(UnityProfiling.EditorProfilingEnabled, EditorApplication.isPlaying, ProfilerDriver.deepProfiling, EditorIterationProfilerIntegration.Instance.Settings.Flatten, EditorIterationProfilerIntegration.Instance.Settings.UserCode);
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
|
@ -480,6 +490,8 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
int m_FirstRange = -1;
|
||||
int m_SecondRange = -1;
|
||||
|
||||
string m_EventGuid;
|
||||
|
||||
static void OpenWindow()
|
||||
{
|
||||
GetWindow<ProfilerMultiFrameSelector>();
|
||||
|
@ -488,6 +500,14 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
public void Initialize(IFileDataReporter exporter)
|
||||
{
|
||||
m_Exporter = exporter;
|
||||
|
||||
m_EventGuid = Guid.NewGuid().ToString();
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(exporter.Name, ExportType.MultiWindow.ToString(), ExportStatus.Started.ToString(), m_EventGuid);
|
||||
}
|
||||
|
||||
public void OnDestroy()
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendExportEvent(m_Exporter.Name, ExportType.MultiWindow.ToString(), ExportStatus.Finished.ToString(), m_EventGuid);
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
|
@ -517,7 +537,7 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
if (GUILayout.Button("Export"))
|
||||
{
|
||||
Debug.Log($"Exporting Frames [{m_FirstRange},{m_SecondRange}] ({Mathf.Abs(m_SecondRange) - Mathf.Abs(m_FirstRange) + 1} frames)");
|
||||
EditorIterationProfilerWindow.ReportMultipleFrames(m_Exporter, m_FirstRange, m_SecondRange);
|
||||
EditorIterationProfilerWindow.ReportMultipleFrames(m_Exporter, m_FirstRange, m_SecondRange, m_EventGuid);
|
||||
Close();
|
||||
}
|
||||
|
||||
|
|
|
@ -39,6 +39,8 @@ namespace UnityEditor.EditorIterationProfiler
|
|||
|
||||
if (doApply)
|
||||
{
|
||||
EditorIterationProfilerAnalytics.SendInteractionEvent(EditorProfilingEnabled, EditorApplication.isPlaying, ProfilerDriver.deepProfiling, EditorIterationProfilerIntegration.Instance.Settings.Flatten, EditorIterationProfilerIntegration.Instance.Settings.UserCode);
|
||||
|
||||
ProfilerDriver.deepProfiling = deep;
|
||||
EditorPrefs.SetBool(EditorIterationProfilerWindow.Styles.k_EnableDeepProfile, deep);
|
||||
EditorIterationProfilerIntegration.Instance.Settings.DeepProfile = deep;
|
||||
|
|
Загрузка…
Ссылка в новой задаче