void OnGUI_ActionToolbar(List <GUIAction> actions, Func <IAsyncJob> buildReportJob, Object asset, PlatformJob capability) { GUILayout.BeginHorizontal(EditorStyles.toolbar); OnGUI_BuildReportToolbar(actions, buildReportJob, asset, capability); GUILayout.Space(k_HorizontalSpacing); OnGUI_DiffReportToolbar(actions, asset); EditorGUILayout.Space(); GUILayout.EndHorizontal(); }
void OnGUI_BuildReportToolbar(List <GUIAction> actions, Func <IAsyncJob> buildReportJob, Object asset, PlatformJob capability) { if (m_AssetMetadata == null) { return; } var assetGUID = ShaderAnalysisUtils.CalculateGUIDFor(asset); var report = m_AssetMetadata.GetReport(assetGUID); GUILayout.BeginHorizontal(EditorStyles.toolbar); { EditorGUILayout.LabelField("Reporting", EditorStyles.whiteLargeLabel, GUILayout.Width(75)); GUI.enabled = EditorShaderTools.DoesPlatformSupport(m_CurrentPlatform, capability); if (GUILayout.Button(EditorGUIUtility.TrIconContent("PlayButton On", "Build Report"), EditorStyles.toolbarButton, GUILayout.Width(k_IconSize))) { actions.Add(new GUIAction(GUIActionKind.BuildReportJob, buildReportJob, asset)); } m_BuildReportFeature = (BuildReportFeature)EditorGUILayout.EnumFlagsField(m_BuildReportFeature, GUILayout.Width(80)); GUILayout.Space(k_HorizontalSpacing); var genDir = ShaderAnalysisUtils.GetTemporaryDirectory(asset, m_CurrentPlatform); GUI.enabled = genDir.Exists; if (GUILayout.Button(EditorGUIUtility.TrIconContent("Project", "Open Temp Dir"), EditorStyles.toolbarButton, GUILayout.Width(k_IconSize))) { Application.OpenURL(genDir.FullName); } GUILayout.Space(k_HorizontalSpacing); GUI.enabled = report != null && ExporterUtilities.IsValid(m_ReportExporterIndex); if (GUILayout.Button(EditorGUIUtility.TrIconContent("SceneLoadOut", "Export to"), EditorStyles.toolbarButton, GUILayout.Width(k_IconSize))) { actions.Add(new GUIAction(GUIActionKind.ExportReport, asset)); } GUI.enabled = true; m_ReportExporterIndex = (ReportExporterIndex)EditorGUILayout.Popup((int)m_ReportExporterIndex, ExporterUtilities.ReportExporterNames, GUILayout.Width(k_ExporterSize)); } GUILayout.EndHorizontal(); GUI.enabled = true; }
/// <summary>Check whether a specific job is supported.</summary> /// <param name="targetPlatform">Target platform to check.</param> /// <param name="job">The job to check.</param> /// <returns>True when the job is supported, false otherwise.</returns> public static bool DoesPlatformSupport(BuildTarget targetPlatform, PlatformJob job) => s_Instance.DoesPlatformSupport(targetPlatform, job);
public bool DoesPlatformSupport(BuildTarget targetPlatform, PlatformJob job) { return(m_PlatformJobFactories.ContainsKey(targetPlatform) && m_PlatformJobFactories[targetPlatform].HasCapability(job)); }
/// <summary>Wether a factory has a specific capability.</summary> /// <param name="factory">The factory to check.</param> /// <param name="job">the job to check.</param> /// <returns><c>true</c> when the factory can provide a <paramref name="job"/>.</returns> public static bool HasCapability(this IPlatformJobFactory factory, PlatformJob job) => (factory.capabilities & job) == job;