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;
        }
Exemple #3
0
 /// <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;