Пример #1
0
        public static BuildTemplate CreateAssetAtPath(string path)
        {
            BuildTemplate asset = ScriptableObject.CreateInstance <BuildTemplate>();

            asset.name = Path.GetFileName(path);
            AssetDatabase.CreateAsset(asset, path);
            return(asset);
        }
        void PopulateAssets()
        {
            var buildTemplates = AssetDatabase.FindAssets("t:BuildTemplate");
            var buildProfiles  = AssetDatabase.FindAssets("t:BuildProfile");
            var sceneLists     = AssetDatabase.FindAssets("t:SceneList");

            m_BuildTemplates = new Dictionary <string, List <BuildTemplate> >();
            m_BuildProfiles  = new List <BuildProfile>();
            m_SceneLists     = new List <SceneList>();


            foreach (var templateGUID in buildTemplates)
            {
                string        templatePath = AssetDatabase.GUIDToAssetPath(templateGUID);
                BuildTemplate template     = (BuildTemplate)AssetDatabase.LoadAssetAtPath(templatePath, typeof(BuildTemplate));
                if (!m_BuildTemplates.ContainsKey(template.Category))
                {
                    m_BuildTemplates.Add(template.Category, new List <BuildTemplate>());
                }

                m_BuildTemplates[template.Category].Add(template);
            }


            foreach (var profileGUID in buildProfiles)
            {
                string       profilePath = AssetDatabase.GUIDToAssetPath(profileGUID);
                BuildProfile profile     = (BuildProfile)AssetDatabase.LoadAssetAtPath(profilePath, typeof(BuildProfile));
                m_BuildProfiles.Add(profile);
            }

            foreach (var sceneListGUID in sceneLists)
            {
                string    sceneListPath = AssetDatabase.GUIDToAssetPath(sceneListGUID);
                SceneList sceneList     = (SceneList)AssetDatabase.LoadAssetAtPath(sceneListPath, typeof(SceneList));
                m_SceneLists.Add(sceneList);
            }
        }
Пример #3
0
 public abstract bool OnPostProcess(BuildTemplate template, bool wantRun);
Пример #4
0
 public BuildProcessorException(BuildProcessor p, BuildTemplate t)
 {
     processor = p;
     template  = t;
 }
Пример #5
0
        public override void Action(int instanceId, string pathName, string resourceFile)
        {
            BuildTemplate asset = BuildTemplateAssetFactory.CreateAssetAtPath(pathName);

            ProjectWindowUtil.ShowCreatedAsset(asset);
        }
        void FormatHeaderGUI(BuildTemplate template, BuildReport report = null)
        {
            using (new GUILayout.HorizontalScope())
            {
                using (new GUILayout.VerticalScope())
                {
                    GUILayout.Label($"{(template.Name == string.Empty ? template.name : template.Name)} {(template.Category == string.Empty ? "" : $"({template.Category})")}", Styles.boldLabelLarge);

                    using (new GUILayout.HorizontalScope())
                    {
                        if (report != null)
                        {
                            var summary = report.summary;
                            if (summary.result == BuildResult.Succeeded)
                            {
                                GUILayout.Label(Contents.buildSucceeded, GUILayout.Width(32));
                            }
                            else if (summary.result != BuildResult.Unknown)
                            {
                                GUILayout.Label(Contents.buildFailed, GUILayout.Width(32));
                            }

                            GUILayout.Label(summary.result.ToString(), Styles.boldLabelLarge);
                        }
                        else
                        {
                            GUILayout.Label(Contents.buildPending, GUILayout.Width(32));
                            GUILayout.Label("Build not yet started", Styles.boldLabelLarge);
                        }
                    }
                }

                GUILayout.FlexibleSpace();


                using (new GUILayout.VerticalScope(GUILayout.Width(120)))
                {
                    using (new GUILayout.HorizontalScope())
                    {
                        EditorGUI.BeginDisabledGroup(template == null);

                        if (GUILayout.Button("Build", Styles.MiniButtonLeft))
                        {
                            EnqueueBuildTemplate(template, false);
                        }
                        if (GUILayout.Button("+ Run", Styles.MiniButtonRight, GUILayout.Width(48)))
                        {
                            EnqueueBuildTemplate(template, true);
                        }
                        EditorGUI.EndDisabledGroup();
                    }

                    if (template.canRunFromEditor && !template.OpenInExplorer)
                    {
                        EditorGUI.BeginDisabledGroup(template == null || !template.foundBuildExecutable);

                        if (GUILayout.Button("Run Last Build", Styles.MiniButton))
                        {
                            EnqueueAction(() =>
                            {
                                template.RunBuild();
                                m_CurrentLog = $"[{DateTime.Now.ToShortTimeString()}] Started running template: {template.name} ...";
                                Repaint();
                            });
                        }
                        EditorGUI.EndDisabledGroup();
                    }
                    else
                    {
                        if (GUILayout.Button("Open Output Folder", Styles.MiniButton))
                        {
                            EnqueueAction(() =>
                            {
                                template.RunBuild();
                                Repaint();
                            });
                        }
                    }
                }
            }