Updated Generators
Removed un-nesscary Attribute generation, as now is part of core.
This commit is contained in:
parent
02d23935fa
commit
d96fbaf0e9
3 changed files with 8 additions and 54 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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];
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue