Updated Generators

Removed un-nesscary Attribute generation, as now is part of core.
This commit is contained in:
Mario Steele 2025-09-26 20:15:14 -05:00
parent 02d23935fa
commit d96fbaf0e9
3 changed files with 8 additions and 54 deletions

View file

@ -12,21 +12,8 @@ namespace Godot.Sharp.Extended.Generators;
[Generator] [Generator]
public class NodeBindGenerator : IIncrementalGenerator public class NodeBindGenerator : IIncrementalGenerator
{ {
private const string AttributeSourceCode = """
// <auto-generated />
namespace Godot.Sharp.Extended.Generators;
[System.AttributeUsage(System.AttributeTargets.Property | System.AttributeTargets.Field)]
public class NodeBindAttribute : Attribute
{
}
""";
public void Initialize(IncrementalGeneratorInitializationContext context) public void Initialize(IncrementalGeneratorInitializationContext context)
{ {
context.RegisterPostInitializationOutput(ctx => ctx.AddSource(
"NodeBindAttribute.g.cs",
SourceText.From(AttributeSourceCode, Encoding.UTF8)));
var propertyProvider = context.SyntaxProvider var propertyProvider = context.SyntaxProvider
.CreateSyntaxProvider( .CreateSyntaxProvider(
predicate: (s, _) => s is ClassDeclarationSyntax, predicate: (s, _) => s is ClassDeclarationSyntax,
@ -60,7 +47,7 @@ public class NodeBindGenerator : IIncrementalGenerator
continue; continue;
var attributeName = symbol.ContainingType.ToDisplayString(); var attributeName = symbol.ContainingType.ToDisplayString();
if (attributeName == $"Godot.Sharp.Extended.Generators.NodeBind") if (attributeName == $"Godot.Sharp.Extended.Attributes.NodeBind")
return declarationSyntax; return declarationSyntax;
} }

View file

@ -13,28 +13,8 @@ namespace Godot.Sharp.Extended.Generators;
[Generator] [Generator]
public class NodePropBindGenerator : IIncrementalGenerator public class NodePropBindGenerator : IIncrementalGenerator
{ {
private const string AttributeSourceCode = """
// <auto-generated/>
namespace Godot.Sharp.Extended.Generators;
[System.AttributeUsage(System.AttributeTargets.Member)]
public class NodePropBindAttribute : System.Attribute
{
public string TargetNodeName { get; private set; }
public string GodotPropertyName { get; private set; }
public NodePropBindAttribute(string targetNodeName, string godotPropertyName)
{
TargetNodeName = targetNodeName;
GodotPropertyName = godotPropertyName;
}
}
""";
public void Initialize(IncrementalGeneratorInitializationContext context) public void Initialize(IncrementalGeneratorInitializationContext context)
{ {
context.RegisterPostInitializationOutput(ctx => ctx.AddSource(
"NodePropBind.g.cs",
SourceText.From(AttributeSourceCode, Encoding.UTF8)));
var propertyProvider = context.SyntaxProvider var propertyProvider = context.SyntaxProvider
.CreateSyntaxProvider( .CreateSyntaxProvider(
@ -69,7 +49,7 @@ public class NodePropBindGenerator : IIncrementalGenerator
continue; continue;
var attributeName = symbol.ContainingType.ToDisplayString(); var attributeName = symbol.ContainingType.ToDisplayString();
if (attributeName == "Godot.Sharp.Extended.Generators.NodePropBind") if (attributeName == "Godot.Sharp.Extended.Attributes.NodePropBind")
return declarationSyntax; return declarationSyntax;
} }
@ -132,7 +112,11 @@ public class NodePropBindGenerator : IIncrementalGenerator
propCode.AppendLine($$""" propCode.AppendLine($$"""
public {{memberDefinition.Type}} {{propName}} public {{memberDefinition.Type}} {{propName}}
{ {
get => {{memberDefinition.Name}}; get {
if ({{memberDefinition.NodeProp}} == null)
return {{memberDefinition.Name}};
return {{memberDefinition.NodeProp}}.{{godotProp}};
}
set { set {
{{memberDefinition.Name}} = value; {{memberDefinition.Name}} = value;
if ({{memberDefinition.NodeProp}} != null) if ({{memberDefinition.NodeProp}} != null)

View file

@ -14,25 +14,8 @@ namespace Godot.Sharp.Extended.Generators;
[Generator] [Generator]
public class ResourceGenerator : IIncrementalGenerator public class ResourceGenerator : IIncrementalGenerator
{ {
private const string AttributeSourceCode = """
// <auto-generated />
namespace Godot.Sharp.Extended.Generators;
[System.AttributeUsage(System.AttributeTargets.Property | System.AttributeTargets.Field)]
public class ResourcePathAttribute : System.Attribute
{
public string Path { get; private set; }
public ResourcePathAttribute(string path) {
Path = path;
}
}
""";
public void Initialize(IncrementalGeneratorInitializationContext context) public void Initialize(IncrementalGeneratorInitializationContext context)
{ {
context.RegisterPostInitializationOutput(ctx => ctx.AddSource(
"ResourcePathAttribute.g.cs",
SourceText.From(AttributeSourceCode, Encoding.UTF8)));
var classPaths = context.SyntaxProvider var classPaths = context.SyntaxProvider
.CreateSyntaxProvider( .CreateSyntaxProvider(
@ -82,7 +65,7 @@ public class ResourceGenerator : IIncrementalGenerator
{ {
var symbolInfo = ctx.SemanticModel.GetSymbolInfo(attributeSyntax); var symbolInfo = ctx.SemanticModel.GetSymbolInfo(attributeSyntax);
if (symbolInfo.Symbol is not IMethodSymbol attributeSymbol) continue; if (symbolInfo.Symbol is not IMethodSymbol attributeSymbol) continue;
if (attributeSymbol.ContainingType.ToDisplayString() != "Godot.Sharp.Extended.Generators.ResourcePath") continue; if (attributeSymbol.ContainingType.ToDisplayString() != "Godot.Sharp.Extended.Attributes.ResourcePath") continue;
var parameter = attributeSyntax.ArgumentList; var parameter = attributeSyntax.ArgumentList;
var pathArgument = parameter?.Arguments[0]; var pathArgument = parameter?.Arguments[0];