SettingsCompiler.SettingsCompiler.GenerateHeader C# (CSharp) Method

GenerateHeader() static private method

static private GenerateHeader ( List settings, string outputName, string outputPath, List enumTypes ) : void
settings List
outputName string
outputPath string
enumTypes List
return void
        static void GenerateHeader(List<Setting> settings, string outputName, string outputPath,
                                   List<Type> enumTypes)
        {
            List<string> lines = new List<string>();

            lines.Add("#pragma once");
            lines.Add("");
            lines.Add("#include \"SampleFramework11/PCH.h\"");
            lines.Add("#include \"SampleFramework11/Settings.h\"");
            lines.Add("#include \"SampleFramework11/GraphicsTypes.h\"");
            lines.Add("");
            lines.Add("using namespace SampleFramework11;");
            lines.Add("");

            WriteEnumTypes(lines, enumTypes);

            lines.Add("namespace " + outputName);
            lines.Add("{");

            uint numCBSettings = 0;
            foreach(Setting setting in settings)
            {
                setting.WriteDeclaration(lines);
                if(setting.UseAsShaderConstant)
                    ++numCBSettings;
            }

            if(numCBSettings > 0)
            {
                lines.Add("");
                lines.Add(string.Format("    struct {0}CBuffer",  outputName));
                lines.Add("    {");

                uint cbSize = 0;
                foreach(Setting setting in settings)
                    setting.WriteCBufferStruct(lines, ref cbSize);

                lines.Add("    };");
                lines.Add("");
                lines.Add(string.Format("    extern ConstantBuffer<{0}CBuffer> CBuffer;", outputName));
            }

            lines.Add("");
            lines.Add("    void Initialize(ID3D11Device* device);");
            lines.Add("    void UpdateCBuffer(ID3D11DeviceContext* context);");

            lines.Add("};");

            WriteIfChanged(lines, outputPath);
        }