Esempio n. 1
0
        private void BuildThread(ContentItem item)
        {
            FailedBuilds = 0;

            IsBuilding = true;
            string outputDir = GetOutputDir();

            CreateFolderIfNeeded(outputDir);
            PipelineHelper.PreBuilt(Project);
            using (engenious.Content.Pipeline.ContentImporterContext importerContext = new engenious.Content.Pipeline.ContentImporterContext())
                using (engenious.Content.Pipeline.ContentProcessorContext processorContext = new engenious.Content.Pipeline.ContentProcessorContext())
                {
                    importerContext.BuildMessage  += RaiseBuildMessage;
                    processorContext.BuildMessage += RaiseBuildMessage;

                    if (item == null)
                    {
                        BuildDir(Project, importerContext, processorContext);
                    }
                    else if (item is ContentFolder)
                    {
                        BuildDir((ContentFolder)item, importerContext, processorContext);
                    }
                    else if (item is ContentFile)
                    {
                        BuildFile((ContentFile)item, importerContext, processorContext);
                    }
                }
            //System.Threading.Thread.Sleep(8000);
            cache.Save(GetCacheFile());
            IsBuilding = false;

            BuildStatusChanged?.BeginInvoke(this, BuildStep.Build | BuildStep.Finished, null, null);
        }
Esempio n. 2
0
 /// <summary>
 /// Builds a Directory based on the given folder, importerContext and processorContext
 /// </summary>
 /// <param name="folder"></param>
 /// <param name="importerContext"></param>
 /// <param name="processorContext"></param>
 private void BuildDir(ContentFolder folder, engenious.Content.Pipeline.ContentImporterContext importerContext, engenious.Content.Pipeline.ContentProcessorContext processorContext)
 {
     foreach (var item in folder.Contents)
     {
         if (item is ContentFile)
         {
             BuildFile(item as ContentFile, importerContext, processorContext);
         }
         else if (item is ContentFolder)
         {
             BuildDir(item as ContentFolder, importerContext, processorContext);
         }
     }
 }
Esempio n. 3
0
 public override Bitmap Import(string filename, ContentImporterContext context)
 {
     //if (!System.IO.File.Exists(filename))
     //    return null;
     try
     {
         return(new Bitmap(filename));
     }
     catch (Exception ex)
     {
         context.RaiseBuildMessage(filename, ex.Message, BuildMessageEventArgs.BuildMessageType.Error);
     }
     return(null);
 }
Esempio n. 4
0
        public override EffectContent Import(string filename, ContentImporterContext context)
        {
            try
            {
                EffectContent content = new EffectContent();

                XmlDocument doc = new XmlDocument();
                doc.Load(filename);
                XmlElement effectElement;
                XmlNode    current = doc.FirstChild;
                while (current != null && current.NodeType != XmlNodeType.Element)
                {
                    current = current.NextSibling;
                }
                effectElement = (XmlElement)current;
                foreach (XmlElement technique in effectElement.ChildNodes.OfType <XmlElement>())
                {
                    EffectTechnique info = new EffectTechnique();
                    info.Name = technique.GetAttribute("name");
                    foreach (XmlElement pass in technique.ChildNodes.OfType <XmlElement>())
                    {
                        EffectPass pi = new EffectPass();
                        pi.Name = pass.GetAttribute("name");
                        foreach (XmlElement sh in pass.ChildNodes.OfType <XmlElement>())
                        {
                            if (sh.Name == "Shader")
                            {
                                ShaderType type = parseShaderType(sh.GetAttribute("type"));
                                if ((int)type == -1)
                                {
                                    throw new Exception("Unsupported Shader type detected");
                                }
                                string shaderFile = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(filename), sh.GetAttribute("filename"));
                                pi.Shaders.Add(type, shaderFile);
                                context.Dependencies.Add(shaderFile);
                            }
                            else if (sh.Name == "BlendState")
                            {
                                pi.BlendState = ParseBlendState(sh);
                            }
                            else if (sh.Name == "DepthStencilState")
                            {
                                pi.DepthStencilState = ParseDepthStencilState(sh);
                            }
                            else if (sh.Name == "RasterizerState")
                            {
                                pi.RasterizerState = ParseRasterizerState(sh);
                            }
                            else if (sh.Name == "Attributes")
                            {
                                foreach (XmlElement attr in sh.ChildNodes.OfType <XmlElement>())
                                {
                                    if (attr.Name == "attribute")
                                    {
                                        VertexElementUsage usage = (VertexElementUsage)Enum.Parse(typeof(VertexElementUsage), attr.InnerText);
                                        string             nm    = attr.GetAttribute("name");
                                        if (nm.Length < 1)
                                        {
                                            throw new Exception("Not a valid attribute name'" + nm + "'");
                                        }
                                        pi.Attributes.Add(usage, nm);
                                    }
                                }
                            }
                            else
                            {
                                throw new Exception("'" + sh.Name + "' element not recognized");
                            }
                        }
                        info.Passes.Add(pi);
                    }
                    content.Techniques.Add(info);
                }

                return(content);
            }
            catch (Exception ex)
            {
                context.RaiseBuildMessage(filename, ex.Message, BuildMessageEventArgs.BuildMessageType.Error);
            }
            return(null);
        }
Esempio n. 5
0
 object IContentImporter.Import(string filename, ContentImporterContext context)
 {
     return(Import(filename, context));
 }
Esempio n. 6
0
 public abstract T Import(string filename, ContentImporterContext context);