RendererGenerator.RendererBuilder.Build C# (CSharp) Méthode

Build() public méthode

public Build ( DataStructure dataStructure, string rendererFilename = "" ) : void
dataStructure DataStructure
rendererFilename string
Résultat void
        public void Build(DataStructure dataStructure, string rendererFilename = "")
        {
            if (string.IsNullOrEmpty(rendererFilename)) { rendererFilename = this.GetFilename(dataStructure); }

            var rendererType = new CodeTypeDeclaration(dataStructure.RendererName);
            rendererType.IsClass = true;
            rendererType.IsPartial = true;
            rendererType.BaseTypes.Add(typeof(Renderer));
            rendererType.Comments.Add(new CodeCommentStatement("<summary>", true));
            rendererType.Comments.Add(new CodeCommentStatement(string.Format("Renderer of {0}", dataStructure.TargetName), true));
            rendererType.Comments.Add(new CodeCommentStatement("</summary>", true));
            BuildCreate(rendererType, dataStructure);
            BuildConstructor(rendererType, dataStructure);
            BuildDoInitialize(rendererType, dataStructure);
            BuildDoRender(rendererType, dataStructure);

            var parserNamespace = new CodeNamespace("CSharpGL");
            parserNamespace.Imports.Add(new CodeNamespaceImport(typeof(System.Object).Namespace));
            parserNamespace.Imports.Add(new CodeNamespaceImport(typeof(System.Collections.Generic.List<int>).Namespace));
            parserNamespace.Types.Add(rendererType);

            //生成代码
            using (var stream = new StreamWriter(rendererFilename, false))
            {
                CSharpCodeProvider codeProvider = new CSharpCodeProvider();
                CodeGeneratorOptions opentions = new CodeGeneratorOptions();//代码生成选项
                opentions.BlankLinesBetweenMembers = true;
                opentions.BracingStyle = "C";
                opentions.ElseOnClosing = false;
                opentions.IndentString = "    ";
                opentions.VerbatimOrder = true;

                codeProvider.GenerateCodeFromNamespace(parserNamespace, stream, opentions);
            }
        }

Usage Example

Exemple #1
0
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        private static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Please specify a valid xml file.");
                Console.ReadKey();
                return;
            }

            try
            {
                DataStructure dataStructure = DataStructure.Parse(XElement.Load(args[0]));
                // vertex shader.
                {
                    ShaderBuilder vertexShaderBuilder = new VertexShaderBuilder();
                    string vertexShaderCode = vertexShaderBuilder.Build(dataStructure);
                    File.WriteAllText(vertexShaderBuilder.GetFilename(dataStructure), vertexShaderCode);
                }
                // fragment shader.
                {
                    ShaderBuilder fragmentShaderBuilder = new FragmentShaderBuilder();
                    string fragmentShaderCode = fragmentShaderBuilder.Build(dataStructure);
                    File.WriteAllText(fragmentShaderBuilder.GetFilename(dataStructure), fragmentShaderCode);
                }
                // model.
                {
                    var modelBuilder = new ModelBuilder();
                    string modelFilename = modelBuilder.GetFilename(dataStructure);
                    modelBuilder.Build(dataStructure, modelFilename);
                }
                // renderer.
                {
                    var rendererBuilder = new RendererBuilder();
                    string rendererFilename = rendererBuilder.GetFilename(dataStructure);
                    rendererBuilder.Build(dataStructure, rendererFilename);
                }

                Process.Start("explorer", "/select," + args[0]);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.ReadKey();
                return;
            }
        }
All Usage Examples Of RendererGenerator.RendererBuilder::Build