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);
}