From ff5a84bfb5d952cf4232856061265a5fcf916232 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 17:28:58 +0100 Subject: [PATCH 1/2] Fix it stopping too early --- .../BindingGenerator.cs | 57 +++++++++---------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index f85f039..b28648b 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -317,42 +317,39 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } - if (!node.AttributeLists.Any()) + if (node.AttributeLists.Any()) // if no attributes { - base.VisitClassDeclaration(node); - return; - } + // category + var nodeCategoryAttr = node.AttributeLists.SelectMany(i => i.Attributes) + .FirstOrDefault(i => i.Name.ToString() == "NodeCategory"); - var find = node.AttributeLists.SelectMany(i => i.Attributes) - .FirstOrDefault(i => i.Name.ToString() == "NodeCategory"); + if (nodeCategoryAttr?.ArgumentList is not null) + { + _category = nodeCategoryAttr.ArgumentList.Arguments.First().ToString().TrimEnds(1, 1); + } - _genericTypesAttribute = node.AttributeLists.FirstOrDefault(attrList => attrList.Attributes.Any(attr => attr.Name.ToString() == "GenericTypes"))?.ToString(); + // generic types + _genericTypesAttribute = node.AttributeLists.FirstOrDefault(attrList => attrList.Attributes.Any(attr => attr.Name.ToString() == "GenericTypes"))?.ToString(); - _oldTypeNameAttribute = node.AttributeLists.FirstOrDefault(attrList => attrList.Attributes.Any(attr => attr.Name.ToString() == "OldTypeName"))?.ToString(); + // old type name + _oldTypeNameAttribute = node.AttributeLists.FirstOrDefault(attrList => attrList.Attributes.Any(attr => attr.Name.ToString() == "OldTypeName"))?.ToString(); - if (find?.ArgumentList is null) - { - base.VisitClassDeclaration(node); - return; - } - - _category = find.ArgumentList.Arguments.First().ToString().TrimEnds(1,1); - - var findName = node.AttributeLists.SelectMany(i => i.Attributes) - .FirstOrDefault(i => i.Name.ToString() == "NodeName"); + // name + var findName = node.AttributeLists.SelectMany(i => i.Attributes) + .FirstOrDefault(i => i.Name.ToString() == "NodeName"); + if (findName?.ArgumentList != null) + _nodeNameOverride = + $" public override string NodeName => {findName.ArgumentList.Arguments.First().ToString()};"; - if (findName?.ArgumentList != null) - _nodeNameOverride = - $" public override string NodeName => {findName.ArgumentList.Arguments.First().ToString()};"; - - var findOverload = node.AttributeLists.SelectMany(i => i.Attributes) - .FirstOrDefault(i => i.Name.ToString() == "NodeOverload"); + // overload + var findOverload = node.AttributeLists.SelectMany(i => i.Attributes) + .FirstOrDefault(i => i.Name.ToString() == "NodeOverload"); + + if (findOverload?.ArgumentList != null) + _nodeOverloadAttribute = $"[Grouping({findOverload.ArgumentList.Arguments.First().ToString()})]"; + } - - if (findOverload?.ArgumentList != null) - _nodeOverloadAttribute = $"[Grouping({findOverload.ArgumentList.Arguments.First().ToString()})]"; - foreach (var u in _usingDeclarations) { var fullNameSpace = ""; @@ -368,9 +365,9 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _match = match; _fullBaseType = fullNameSpace; _valid = true; - base.VisitClassDeclaration(node); - return; + break; } + base.VisitClassDeclaration(node); } } From 1beda1f20b1e2c1dad7cdccd7799940c03e8925a Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 17:30:06 +0100 Subject: [PATCH 2/2] fix comment --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index b28648b..d369438 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -317,7 +317,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } - if (node.AttributeLists.Any()) // if no attributes + if (node.AttributeLists.Any()) // if has any attributes { // category var nodeCategoryAttr = node.AttributeLists.SelectMany(i => i.Attributes)