static void GenerateHLSL(List<Setting> settings, string outputName, string outputPath,
List<Type> enumTypes)
{
uint numCBSettings = 0;
foreach(Setting setting in settings)
{
if(setting.UseAsShaderConstant)
++numCBSettings;
}
List<string> lines = new List<string>();
if(numCBSettings == 0)
WriteIfChanged(lines, outputPath);
lines.Add(string.Format("cbuffer {0} : register(b7)", outputName));
lines.Add("{");
foreach(Setting setting in settings)
setting.WriteHLSL(lines);
lines.Add("}");
lines.Add("");
foreach(Type enumType in enumTypes)
{
string[] enumNames = enumType.GetEnumNames();
Array enumValues = enumType.GetEnumValues();
for(int i = 0; i < enumNames.Length; ++i)
{
string line = "static const int " + enumType.Name + "_";
line += enumNames[i] + " = " + (int)enumValues.GetValue(i) + ";";
lines.Add(line);
}
lines.Add("");
}
WriteIfChanged(lines, outputPath);
}