SettingsCompiler.SettingsCompiler.GenerateHLSL C# (CSharp) Method

GenerateHLSL() static private method

static private GenerateHLSL ( List settings, string outputName, string outputPath, List enumTypes ) : void
settings List
outputName string
outputPath string
enumTypes List
return void
        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);
        }