From d3906915e9580df54045b9b0ff4724377ad448da Mon Sep 17 00:00:00 2001 From: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Tue, 25 Nov 2025 01:28:30 +0100 Subject: [PATCH 1/3] Fix `ResX.Scripts` enum value --- SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs b/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs index da031bc..7710a17 100644 --- a/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs +++ b/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs @@ -15,7 +15,7 @@ public enum ResX None, Uid = 1, Scenes = 2, - Scripts = 3, + Scripts = 4, All = Uid | Scenes | Scripts } From 55d5fc61dd01c0cd5044e28d4ad76aa6a8e3ccdf Mon Sep 17 00:00:00 2001 From: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Tue, 25 Nov 2025 01:54:29 +0100 Subject: [PATCH 2/3] Fix namespace --- .../TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs | 2 +- .../ResourceTreeExtensions/ResourceTreeAttribute.cs | 2 +- SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs b/Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs index 4467f57..c4b1dd7 100644 --- a/Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs +++ b/Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs @@ -1,7 +1,7 @@ using FluentAssertions; using Godot; using GodotSharp.BuildingBlocks.TestRunner; -using GodotSharp.SourceGenerators.ResourceTreeExtensions; +using GodotSharp.SourceGenerators; using GodotTests.TestScenes.ResourceTreeTestAssets; namespace GodotTests.TestScenes; diff --git a/SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs b/SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs index 5af406d..ecafc7f 100644 --- a/SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs +++ b/SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs @@ -1,4 +1,4 @@ -using GodotSharp.SourceGenerators.ResourceTreeExtensions; +using GodotSharp.SourceGenerators; namespace Godot; diff --git a/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs b/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs index 7710a17..7e63ab9 100644 --- a/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs +++ b/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs @@ -1,4 +1,4 @@ -namespace GodotSharp.SourceGenerators.ResourceTreeExtensions; +namespace GodotSharp.SourceGenerators; [Flags] public enum ResG From 7b8bcaa05ad41268ad9f641cdbcae3b7bc0787d5 Mon Sep 17 00:00:00 2001 From: Salvage <29021710+Saalvage@users.noreply.github.com> Date: Tue, 25 Nov 2025 01:55:10 +0100 Subject: [PATCH 3/3] `ResX` -> `ResI` --- .../Feature148.ResourceTree/ResourceTreeTests.cs | 4 ++-- README.md | 14 +++++++------- .../ResourceTreeAttribute.cs | 10 +++++----- .../ResourceTreeExtensions/ResourceTreeConfig.cs | 5 ++++- .../ResourceTreeSourceGenerator.cs | 2 +- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs b/Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs index c4b1dd7..9f970d0 100644 --- a/Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs +++ b/Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs @@ -38,10 +38,10 @@ public static partial class RelativeResDir1; [ResourceTree("./Resources", ResG.DirPaths)] public static partial class RelativeResDir2; -[ResourceTree("Resources", resx: ResX.All, xtras: ["csv", "cfg", "txt", "zip"])] +[ResourceTree("Resources", resi: ResI.All, xtras: ["csv", "cfg", "txt", "zip"])] public static partial class ResWithTypes; -[ResourceTree(resx: ResX.Scenes)] +[ResourceTree(resi: ResI.Scenes)] public static partial class ResWithScenes; //[ResourceTree("Invalid")] diff --git a/README.md b/README.md index 3a6cf35..b84286c 100644 --- a/README.md +++ b/README.md @@ -233,7 +233,7 @@ var scene3 = Instantiate(); * Advanced options available as attribute arguments: * source: relative or absolute path (use `/` as shortcut for `res://`) * resg: flags to configure generated output (see examples below) - * resx: flags to configure extra input (see examples below) + * resi: flags to configure extra input (see examples below) * xtras: scan for other file types (eg, txt, cfg, etc) * xclude: directories to exclude (addons is always excluded) #### Examples: @@ -255,13 +255,13 @@ var scene3 = Instantiate(); //[ResourceTree(resg: ResG.LoadRes | ResG.ResPaths)] // Generate nested type with Load method and ResPath property //[ResourceTree(resg: ResG.ResPaths | ResG.DirPaths)] // Just paths -//[ResourceTree(resx: ResX.Uid)] // Include uid files (as uid string) -//[ResourceTree(resx: ResX.Scenes)] // Include tscn/scn files (as PackedScene) -//[ResourceTree(resx: ResX.Scripts)] // Include cs/gd files (as CSharpScript/GdScript) +//[ResourceTree(resi: ResI.Uid)] // Include uid files (as uid string) +//[ResourceTree(resi: ResI.Scenes)] // Include tscn/scn files (as PackedScene) +//[ResourceTree(resi: ResI.Scripts)] // Include cs/gd files (as CSharpScript/GdScript) -//[ResourceTree(resx: ResX.All)] // Include all of the above -//[ResourceTree(resx: ResX.None)] // Include none of the above (default) -//[ResourceTree(resx: ResX.Scenes | ResX.Scripts)] // Just scenes & scripts (or any combination) +//[ResourceTree(resi: ResI.All)] // Include all of the above +//[ResourceTree(resi: ResI.None)] // Include none of the above (default) +//[ResourceTree(resi: ResI.Scenes | ResI.Scripts)] // Just scenes & scripts (or any combination) //[ResourceTree(xtras: ["cfg", "txt"])] // Include file types not recognised as a Godot resource (these could match those added to export configs) //[ResourceTree(xclude: ["Tests"])] // Ignore specified folders diff --git a/SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs b/SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs index ecafc7f..97ba165 100644 --- a/SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs +++ b/SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs @@ -3,12 +3,12 @@ namespace Godot; [AttributeUsage(AttributeTargets.Class)] -public sealed class ResourceTreeAttribute(string source = null, ResG resg = ResG.LoadRes, ResX resx = ResX.None, string[] xtras = null, string[] xclude = null) : Attribute, IResourceTreeConfig +public sealed class ResourceTreeAttribute(string source = null, ResG resg = ResG.LoadRes, ResI resi = ResI.None, string[] xtras = null, string[] xclude = null) : Attribute, IResourceTreeConfig { public string Source { get; } = source; - public bool Uid { get; } = (resx & ResX.Uid) != 0; - public bool Scenes { get; } = (resx & ResX.Scenes) != 0; - public bool Scripts { get; } = (resx & ResX.Scripts) != 0; + public bool Uid { get; } = (resi & ResI.Uid) != 0; + public bool Scenes { get; } = (resi & ResI.Scenes) != 0; + public bool Scripts { get; } = (resi & ResI.Scripts) != 0; public bool UseGdLoad { get; } = (resg & ResG.LoadRes) != 0; public bool UseResPaths { get; } = (resg & ResG.ResPaths) != 0; public bool ShowDirPaths { get; } = (resg & ResG.DirPaths) != 0; @@ -16,5 +16,5 @@ public sealed class ResourceTreeAttribute(string source = null, ResG resg = ResG public HashSet Xclude { get; } = [.. xclude ?? []]; public override string ToString() => $"ResourceTreeAttribute [Source: {Source}, {((IResourceTreeConfig)this).ToString()}]"; - string IResourceTreeConfig.ToString() => $"ResG: {resg}, ResX: {resx}, Xtras: {string.Join("|", Xtras)}, Xclude: {string.Join("|", Xclude)}"; + string IResourceTreeConfig.ToString() => $"ResG: {resg}, ResI: {resi}, Xtras: {string.Join("|", Xtras)}, Xclude: {string.Join("|", Xclude)}"; } diff --git a/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs b/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs index 7e63ab9..a04bcb2 100644 --- a/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs +++ b/SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs @@ -9,8 +9,11 @@ public enum ResG All = LoadRes | ResPaths | DirPaths } +/// +/// Specify which additional types of items to include. +/// [Flags] -public enum ResX +public enum ResI { None, Uid = 1, diff --git a/SourceGenerators/ResourceTreeExtensions/ResourceTreeSourceGenerator.cs b/SourceGenerators/ResourceTreeExtensions/ResourceTreeSourceGenerator.cs index 3368443..4cfe446 100644 --- a/SourceGenerators/ResourceTreeExtensions/ResourceTreeSourceGenerator.cs +++ b/SourceGenerators/ResourceTreeExtensions/ResourceTreeSourceGenerator.cs @@ -28,7 +28,7 @@ protected override (string GeneratedCode, DiagnosticDetail Error) GenerateCode(C Godot.ResourceTreeAttribute ReconstructAttribute() => new( (string)attribute.ConstructorArguments[0].Value, (ResG)attribute.ConstructorArguments[1].Value, - (ResX)attribute.ConstructorArguments[2].Value, + (ResI)attribute.ConstructorArguments[2].Value, attribute.ConstructorArguments[3].Values.Args(), attribute.ConstructorArguments[4].Values.Args()); }