diff --git a/Polonium.Generators.csproj b/Polonium.Generators.csproj index c8a8951..e8c9133 100644 --- a/Polonium.Generators.csproj +++ b/Polonium.Generators.csproj @@ -5,7 +5,6 @@ true enable latest - true true true @@ -43,7 +42,7 @@ - + diff --git a/src/Generators/GlobalRegistryGenerator.cs b/src/Generators/GlobalRegistryGenerator.cs deleted file mode 100644 index dc5ec0e..0000000 --- a/src/Generators/GlobalRegistryGenerator.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Text; -using Microsoft.CodeAnalysis; - -namespace Polonium.Generators.Generators; -[Generator] -public class GlobalRegistryGenerator : ISourceGenerator -{ - public void Initialize(GeneratorInitializationContext context) - { - } - - public void Execute(GeneratorExecutionContext context) - { - StringBuilder sb = new(); - sb - .AppendLine("using Godot;") - .AppendLine("using System;") - .AppendLine("using System.Collections.Generic;") - .AppendLine("using System.Linq;") - .AppendLine("using System.Reflection;") - .AppendLine("using Polonium.Attributes;") - .AppendLine("using Polonium;") - .AppendLine("using Polonium.Interfaces;") - .AppendLine("public static partial class GlobalRegistry") - .AppendLine("{") - .AppendLine(" public static void Start()") - .AppendLine(" {") - .AppendLine(" PoloniumRegistry.Prepare();") - .AppendLine(" Assembly assembly = Assembly.GetExecutingAssembly();") - .AppendLine(" IEnumerable registerTypes = Utils.GetLoadableTypes(assembly);") - .AppendLine(" registerTypes = registerTypes.Where(t => t.IsClass && t.GetCustomAttributes(typeof(AutoRegister), false).Any());") - .AppendLine(" foreach(Type t in registerTypes)") - .AppendLine(" {") - .AppendLine(" MethodInfo registerMethod = t.GetMethod(\"Register\", BindingFlags.Static | BindingFlags.Public);") - .AppendLine(" if (registerMethod != null)") - .AppendLine(" registerMethod.Invoke(null, null);") - .AppendLine(" }") - .AppendLine(" }") - .AppendLine(" public static class Asset where T : Node") - .AppendLine(" {") - .AppendLine(" private static readonly Queue Pool = new();") - .AppendLine(" public static PackedScene Scene { get; set; }") - .AppendLine(" public static T Instance => Scene.Instantiate();") - .AppendLine(" public static T Get() => Pool.Count > 0 ? Pool.Dequeue() : Instance;") - .AppendLine(" public static void Return(T obj)") - .AppendLine(" {") - .AppendLine(" if(Pool.Count < 10)") - .AppendLine(" Pool.Enqueue(obj);") - .AppendLine(" else") - .AppendLine(" obj.QueueFree();") - .AppendLine(" }") - .AppendLine(" }") - .AppendLine(" public static PoloniumRegistry PoloniumRegistry => PoloniumRegistry.Instance;") - .AppendLine(" public static bool Paused { get; set; }") - .AppendLine(" public static HashSet TimeConsumers { get; } = new ();") - .AppendLine("}"); - context.AddSource("GlobalRegistry.g.cs", sb.ToString()); - } -} \ No newline at end of file diff --git a/src/Generators/ProxyNodeGenerator.cs b/src/Generators/ProxyNodeGenerator.cs deleted file mode 100644 index 0048ac2..0000000 --- a/src/Generators/ProxyNodeGenerator.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Microsoft.CodeAnalysis; - -namespace Polonium.Generators.Generators; -[Generator] -public class ProxyNodeGenerator : AssetProcessGenerator -{ - private INamedTypeSymbol? NodeProxy { get; set; } - - private IEnumerable ProxyNodesInNamespace(INamespaceSymbol ns) - { - foreach (INamespaceOrTypeSymbol member in ns.GetMembers()) - { - if (member is INamespaceSymbol nsx) - foreach (INamedTypeSymbol nsz in ProxyNodesInNamespace(nsx)) - yield return nsz; - else if (member is INamedTypeSymbol nsu) - if (nsu.GetAttributes().Any(attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, NodeProxy))) - yield return nsu; - } - } - - - public override void Execute(GeneratorExecutionContext context) - { - Compilation compilation = context.Compilation; - NodeProxy = compilation.GetTypeByMetadataName("Polonium.Attributes.ProxyNode"); - foreach (INamedTypeSymbol node in ProxyNodesInNamespace(compilation.GlobalNamespace)) - { - StringBuilder sb = new(); - sb - .AppendLine($"namespace Polonium.Nodes;") - .AppendLine("using Godot;") - .AppendLine($"[GlobalClass]") - .AppendLine($"[Tool]") - .AppendLine($"public partial class {node.Name} : {node.ToDisplayString()}") - .AppendLine("{") - .AppendLine("}"); - context.AddSource($"NodeProxy_{node.Name}.g.cs", sb.ToString()); - } - } -} \ No newline at end of file