コード例 #1
0
        private bool CompileResource(PhactoryHost.Database.Resource resource)
        {
            if (App.Controller.UserConfig.VerboseOutput == false)
            {
                if (resource.IdOutputs.Count == 1)
                {
                    PhactoryHost.Database.Resource outputResource = App.Controller.Entities.GetResource(resource.IdOutputs[0]);

                    if (outputResource.Id != App.Controller.Entities.StartupResourceId)
                    {
                        if (App.Controller.PluginManager.Host.IsResourceReferencedByOtherResources(outputResource).Count == 0)
                        {
                            // simply skip compilation
                            return(true);
                        }
                    }
                }
            }

            string filename  = resource.RelativePath;
            string extension = Helper.StringHelper.GetFileExtension(filename);

            PhactoryHost.CompilerPlugin compiler = App.Controller.PluginManager.GetCompiler(extension);
            if (compiler == null)
            {
                if (App.Controller.UserConfig.VerboseOutput)
                {
                    App.Controller.Log.Append(resource.DisplayName + " (skipped)");
                }
                return(true);
            }

            bool   showInLog = true;
            string typeInfo  = "";

            if (resource.IsIncludeResource)
            {
                typeInfo += " (include resource)";

                showInLog = App.Controller.UserConfig.VerboseOutput;
            }

            if (resource.IsOutputResource)
            {
                typeInfo += " (output resource)";

                showInLog = App.Controller.UserConfig.VerboseOutput;
            }

            if (showInLog)
            {
                App.Controller.Log.Append(resource.DisplayName + typeInfo);
            }

            App.Controller.View.AppDoEvents();

            return(compiler.Compile(resource));
        }