/* * *.qtn * * enum Class { * Rogue, Warrior, Mage * } * * * component Character { * int Health; * int Level; * int Mana; * Class Class; * } * * signals, events, input-blocks. * */ static void Main(string[] args) { // Assembly-CSharp.dll, main unity dll // Roslyn Source Generators ... unity support is "iffy" const string OUTPUT_PATH = "../../../../CodeGeneration.Target/Generated.cs"; var input = new List <CG_Type>(); var foo = new CG_Class() { Name = "Foo" }; foo.Fields.Add((typeof(int), "test")); var bar = new CG_Struct() { Name = "Bar" }; bar.Fields.Add((typeof(int), "test")); input.Add(foo); input.Add(bar); var builder = new CodeBuilder(); builder.Using("System.Runtime.InteropServices"); using (builder.BeginNamespace("TestNamespace")) { foreach (var type in input) { if (type is CG_Class cls) { GenerateClass(builder, cls); } if (type is CG_Struct str) { GenerateStruct(builder, str); } } } File.WriteAllText(OUTPUT_PATH, builder.ToString()); }
static void GenerateClass(CodeBuilder builder, CG_Class cls) { using (builder.BeginClass(cls.Name)) { GenerateFields(builder, cls.Fields); } }