From 52408882b291c92fa88eba00079b466040dea635 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:17:31 +0100 Subject: [PATCH 01/58] try fix abstract class --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index d369438..09a9306 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -286,6 +286,12 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } + if (node.Modifiers.Any(m => m.ToString() == "abstract")) + { + base.VisitClassDeclaration(node); + return; + } + var baseName = node.Identifier.Text; var fullName = baseName; From fb5d2801d7a17d0465b47f1531ceb86e18a2c1a9 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:23:12 +0100 Subject: [PATCH 02/58] Don't instantiate abstract --- .../BindingGenerator.cs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 09a9306..1fb8822 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -160,18 +160,21 @@ public partial class {_fullName} : global::{_baseTypeNamespace}{_baseType} {_con {_nodeNameOverride} {(_isValidGenericTypeMethod ? $" public static bool IsValidGenericType => global::{_currentNameSpace}.{_fullName}.IsValidGenericType;" : "")} public override System.Type NodeType => typeof (global::{_currentNameSpace}.{_fullName}); - public global::{_currentNameSpace}.{_fullName} TypedNodeInstance {{ get; private set; }} - public override INode NodeInstance => (INode)this.TypedNodeInstance; - public override void ClearInstance() => this.TypedNodeInstance = null; +{(!_isAbstract ? " public global::{_currentNameSpace}.{_fullName} TypedNodeInstance { get; private set; }" : "")} +{(!_isAbstract ? " public override INode NodeInstance => (INode)this.TypedNodeInstance;" : "")} +{(!_isAbstract ? " public override void ClearInstance() => this.TypedNodeInstance = null;" : "")} {CountOverride} +{(!_isAbstract ? """ public override N Instantiate() - {{ - if (this.TypedNodeInstance != null) throw new System.InvalidOperationException(""Node has already been instantiated""); + { + if (this.TypedNodeInstance != null) throw new System.InvalidOperationException("Node has already been instantiated"); var localVar = new global::{_currentNameSpace}.{_fullName}(); this.TypedNodeInstance = localVar; return localVar as N; - }} - protected override void AssociateInstanceInternal(INode node) => this.TypedNodeInstance = node is global::{_currentNameSpace}.{_fullName} localVar ? localVar : throw new System.ArgumentException(""Node instance is not of type "" + typeof (global::{_currentNameSpace}.{_fullName})?.ToString()); + } + protected override void AssociateInstanceInternal(INode node) => this.TypedNodeInstance = node is global::{_currentNameSpace}.{_fullName} localVar ? localVar : throw new System.ArgumentException("Node instance is not of type " + typeof (global::{_currentNameSpace}.{_fullName})?.ToString()); +""" : "")} + {GetOverride} }}"; return str; @@ -196,6 +199,7 @@ public override N Instantiate() private string _genericTypesAttribute; private string _oldTypeNameAttribute; private string _nodeOverloadAttribute; + private bool _isAbstract; private bool TypedFieldDetection(string type, string name, string targetTypeName, string declarationFormat, OrderedCount counter) { @@ -288,8 +292,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) if (node.Modifiers.Any(m => m.ToString() == "abstract")) { - base.VisitClassDeclaration(node); - return; + _isAbstract = true; } var baseName = node.Identifier.Text; From 9ecb1f5fa926a866333cfb52f3e1731b7fd09e9b Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:37:02 +0100 Subject: [PATCH 03/58] test this --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 1fb8822..48ff9f0 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -174,7 +174,6 @@ public override N Instantiate() } protected override void AssociateInstanceInternal(INode node) => this.TypedNodeInstance = node is global::{_currentNameSpace}.{_fullName} localVar ? localVar : throw new System.ArgumentException("Node instance is not of type " + typeof (global::{_currentNameSpace}.{_fullName})?.ToString()); """ : "")} - {GetOverride} }}"; return str; @@ -290,7 +289,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } - if (node.Modifiers.Any(m => m.ToString() == "abstract")) + if (node.Modifiers.Any(m => m.ToString() == "abstract") && _currentNameSpace.ToLower().Contains("obsidian")) { _isAbstract = true; } From 8ae06d0e7a38687c9b36e7fd11ef43b61bb8d8fd Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:40:42 +0100 Subject: [PATCH 04/58] write files debug --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 48ff9f0..8f45bb9 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using Microsoft.CodeAnalysis; @@ -32,7 +33,10 @@ public void Execute(GeneratorExecutionContext context) var res = result.ToString(); if (!string.IsNullOrWhiteSpace(res)) + { context.AddSource($"{walker.BaseName}Bindings.g.cs", result.ToString()); + File.WriteAllText($"C:\\ObsidianBindingsDebug\\{walker.BaseName}Bindings.g.cs", res); + } } } } From 2aadf0fb924953a1e5a04f7592dca439e91d3781 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:44:31 +0100 Subject: [PATCH 05/58] fix --- 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 8f45bb9..5fe4506 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -164,7 +164,7 @@ public partial class {_fullName} : global::{_baseTypeNamespace}{_baseType} {_con {_nodeNameOverride} {(_isValidGenericTypeMethod ? $" public static bool IsValidGenericType => global::{_currentNameSpace}.{_fullName}.IsValidGenericType;" : "")} public override System.Type NodeType => typeof (global::{_currentNameSpace}.{_fullName}); -{(!_isAbstract ? " public global::{_currentNameSpace}.{_fullName} TypedNodeInstance { get; private set; }" : "")} +{(!_isAbstract ? $" public global::{_currentNameSpace}.{_fullName}" + " TypedNodeInstance { get; private set; }" : "")} {(!_isAbstract ? " public override INode NodeInstance => (INode)this.TypedNodeInstance;" : "")} {(!_isAbstract ? " public override void ClearInstance() => this.TypedNodeInstance = null;" : "")} {CountOverride} From 0849ad97e577da20854feda9148782bdb2a4a4e0 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:50:45 +0100 Subject: [PATCH 06/58] fix more --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 5fe4506..5a7bc5e 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -172,10 +172,13 @@ public partial class {_fullName} : global::{_baseTypeNamespace}{_baseType} {_con public override N Instantiate() { if (this.TypedNodeInstance != null) throw new System.InvalidOperationException("Node has already been instantiated"); +""" + $""" var localVar = new global::{_currentNameSpace}.{_fullName}(); this.TypedNodeInstance = localVar; return localVar as N; +""" + """ } +""" + $""" protected override void AssociateInstanceInternal(INode node) => this.TypedNodeInstance = node is global::{_currentNameSpace}.{_fullName} localVar ? localVar : throw new System.ArgumentException("Node instance is not of type " + typeof (global::{_currentNameSpace}.{_fullName})?.ToString()); """ : "")} {GetOverride} From aae76135967b9bed042a7b79ab4ddecdd0f6d2d1 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:52:27 +0100 Subject: [PATCH 07/58] fix class thing --- 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 5a7bc5e..ad3fdb5 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -157,7 +157,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_genericTypesAttribute} {_oldTypeNameAttribute} [Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] -public partial class {_fullName} : global::{_baseTypeNamespace}{_baseType} {_constraints} +public partial {(_isAbstract ? "abstract" : "")} class {_fullName} : global::{_baseTypeNamespace}{_baseType} {_constraints} {{ {(string.IsNullOrEmpty(_debug) ? "" : "//")}{_debug} {Declarations} From 1ba72fbeb329231b04a31493b5be6dd61993ab95 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:53:04 +0100 Subject: [PATCH 08/58] fix partial --- 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 ad3fdb5..aaac5d5 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -157,7 +157,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_genericTypesAttribute} {_oldTypeNameAttribute} [Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] -public partial {(_isAbstract ? "abstract" : "")} class {_fullName} : global::{_baseTypeNamespace}{_baseType} {_constraints} +public {(_isAbstract ? "abstract" : "")} partial class {_fullName} : global::{_baseTypeNamespace}{_baseType} {_constraints} {{ {(string.IsNullOrEmpty(_debug) ? "" : "//")}{_debug} {Declarations} From 6a9ec4315acb49e8cf472dcc945d2bed14e79344 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:55:58 +0100 Subject: [PATCH 09/58] try something else --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index aaac5d5..115fbcd 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -112,7 +112,8 @@ public OrderedCount(string countVariableName, string methodName, string methodRe "AsyncActionFlowNode", "AsyncActionBreakableFlowNode", - "ProxyVoidNode" + "ProxyVoidNode", + "AudioNodeBase" }; private string UsingEnumerate => From 35a35d68b777cda9c61a662b5fcb4968c455b7e8 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:58:15 +0100 Subject: [PATCH 10/58] try something else again --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 115fbcd..dc74fd3 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -332,6 +332,10 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) { _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } + if (baseTypeName.Contains("AudioNodeBase")) + { + _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio"; + } if (node.AttributeLists.Any()) // if has any attributes { From 52f72c6941c63a3ee07dd7cfa4dacb4496ce3c43 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 19:58:58 +0100 Subject: [PATCH 11/58] fix it --- 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 dc74fd3..8f02be5 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -334,7 +334,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) } if (baseTypeName.Contains("AudioNodeBase")) { - _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio"; + _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; } if (node.AttributeLists.Any()) // if has any attributes From d9fca70f5c866f3389592d1f758e8550d37ac15d Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:14:12 +0100 Subject: [PATCH 12/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 8f02be5..a223c31 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -179,9 +179,10 @@ public override N Instantiate() return localVar as N; """ + """ } -""" + $""" - protected override void AssociateInstanceInternal(INode node) => this.TypedNodeInstance = node is global::{_currentNameSpace}.{_fullName} localVar ? localVar : throw new System.ArgumentException("Node instance is not of type " + typeof (global::{_currentNameSpace}.{_fullName})?.ToString()); """ : "")} +{($""" + protected override void AssociateInstanceInternal(INode node) => this.TypedNodeInstance = node is global::{_currentNameSpace}.{_fullName} localVar ? localVar : throw new System.ArgumentException("Node instance is not of type " + typeof (global::{_currentNameSpace}.{_fullName})?.ToString()); +""")}; {GetOverride} }}"; return str; @@ -332,6 +333,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) { _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } + if (baseTypeName.Contains("AudioNodeBase")) { _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; From 0311ea4921b4ba16a3017a54b06ee645024b0050 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:18:26 +0100 Subject: [PATCH 13/58] try this --- .../BindingGenerator.cs | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index a223c31..cfa8e49 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -112,8 +112,7 @@ public OrderedCount(string countVariableName, string methodName, string methodRe "AsyncActionFlowNode", "AsyncActionBreakableFlowNode", - "ProxyVoidNode", - "AudioNodeBase" + "ProxyVoidNode" }; private string UsingEnumerate => @@ -334,10 +333,10 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } - if (baseTypeName.Contains("AudioNodeBase")) - { - _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; - } + //if (baseTypeName.Contains("AudioNodeBase")) + //{ + // _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; + //} if (node.AttributeLists.Any()) // if has any attributes { @@ -372,23 +371,25 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _nodeOverloadAttribute = $"[Grouping({findOverload.ArgumentList.Arguments.First().ToString()})]"; } - foreach (var u in _usingDeclarations) - { - var fullNameSpace = ""; - if (string.IsNullOrEmpty(u)) - fullNameSpace = baseTypeName; - else - fullNameSpace = u + "." + baseTypeName; + //foreach (var u in _usingDeclarations) + //{ + // var fullNameSpace = ""; + // if (string.IsNullOrEmpty(u)) + // fullNameSpace = baseTypeName; + // else + // fullNameSpace = u + "." + baseTypeName; - var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); + // var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); - if (match is null) continue; + // if (match is null) continue; - _match = match; - _fullBaseType = fullNameSpace; - _valid = true; - break; - } + // _match = match; + // _fullBaseType = fullNameSpace; + // _valid = true; + // break; + //} + + _valid = true; base.VisitClassDeclaration(node); } From 7e35a58dc19ac19441574439b2fe48c83309f5ac Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:22:02 +0100 Subject: [PATCH 14/58] try --- .../BindingGenerator.cs | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index cfa8e49..31ea0db 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -112,7 +112,8 @@ public OrderedCount(string countVariableName, string methodName, string methodRe "AsyncActionFlowNode", "AsyncActionBreakableFlowNode", - "ProxyVoidNode" + "ProxyVoidNode", + "AudioNodeBase" }; private string UsingEnumerate => @@ -371,25 +372,23 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _nodeOverloadAttribute = $"[Grouping({findOverload.ArgumentList.Arguments.First().ToString()})]"; } - //foreach (var u in _usingDeclarations) - //{ - // var fullNameSpace = ""; - // if (string.IsNullOrEmpty(u)) - // fullNameSpace = baseTypeName; - // else - // fullNameSpace = u + "." + baseTypeName; - - // var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); - - // if (match is null) continue; - - // _match = match; - // _fullBaseType = fullNameSpace; - // _valid = true; - // break; - //} + foreach (var u in _usingDeclarations) + { + var fullNameSpace = ""; + if (string.IsNullOrEmpty(u)) + fullNameSpace = baseTypeName; + else + fullNameSpace = u + "." + baseTypeName; - _valid = true; + var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); + + if (match is null) continue; + + _match = match; + _fullBaseType = fullNameSpace; + _valid = true; + break; + } base.VisitClassDeclaration(node); } From 0bae1678df6b794ba31e53cdb29b18561e156403 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:36:54 +0100 Subject: [PATCH 15/58] try --- 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 31ea0db..359280e 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -329,7 +329,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) var baseTypeName = firstBaseType.Type.ToString(); _baseType = baseTypeName; - if (baseTypeName.Contains("ProxyVoidNode")) + if (node.BaseList.Types.Any(t => t.Type.ToString().Contains("Proxy"))) { _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } From 745a40d795bae15574ff4bd297d1aa4d14126f51 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:41:00 +0100 Subject: [PATCH 16/58] try --- 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 359280e..b0624a5 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -329,7 +329,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) var baseTypeName = firstBaseType.Type.ToString(); _baseType = baseTypeName; - if (node.BaseList.Types.Any(t => t.Type.ToString().Contains("Proxy"))) + if (baseTypeName.Contains("Proxy")) { _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } From 6e89d987b618222b184c4ae1d5fa55d2f460c813 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:42:48 +0100 Subject: [PATCH 17/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index b0624a5..0ce7195 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -333,6 +333,10 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) { _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } + else if (baseTypeName.Contains("AudioNodeBase")) + { + _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; + } //if (baseTypeName.Contains("AudioNodeBase")) //{ From 30b8c2d09dc4e2fc2ae3dfaae9f0656d4febabc3 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:44:36 +0100 Subject: [PATCH 18/58] try --- 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 0ce7195..57165ee 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -335,7 +335,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) } else if (baseTypeName.Contains("AudioNodeBase")) { - _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; + _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; } //if (baseTypeName.Contains("AudioNodeBase")) From 968d0f2d750e0b4a58d69eb2d2c5666adb2f250d Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:45:45 +0100 Subject: [PATCH 19/58] try --- 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 57165ee..7186e19 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -333,7 +333,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) { _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } - else if (baseTypeName.Contains("AudioNodeBase")) + if (baseTypeName.Contains("AudioNodeBase")) { _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; } From f27b0e11f583bf256e09a1d48b55975a4a3892c0 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:47:00 +0100 Subject: [PATCH 20/58] try --- 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 7186e19..e90a4c3 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -182,7 +182,7 @@ public override N Instantiate() """ : "")} {($""" protected override void AssociateInstanceInternal(INode node) => this.TypedNodeInstance = node is global::{_currentNameSpace}.{_fullName} localVar ? localVar : throw new System.ArgumentException("Node instance is not of type " + typeof (global::{_currentNameSpace}.{_fullName})?.ToString()); -""")}; +""")} {GetOverride} }}"; return str; From 7fd26edc363e3ace62192da9219d699116b632f6 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:48:53 +0100 Subject: [PATCH 21/58] try --- 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 e90a4c3..2a55018 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -300,7 +300,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) if (node.Modifiers.Any(m => m.ToString() == "abstract") && _currentNameSpace.ToLower().Contains("obsidian")) { - _isAbstract = true; + //_isAbstract = true; } var baseName = node.Identifier.Text; From 4a29a5b74013731285146888144c54b6afe245ee Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 20:56:06 +0100 Subject: [PATCH 22/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 2a55018..ac254e1 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -165,9 +165,9 @@ namespace {BindingPrefix}{_currentNameSpace}; {_nodeNameOverride} {(_isValidGenericTypeMethod ? $" public static bool IsValidGenericType => global::{_currentNameSpace}.{_fullName}.IsValidGenericType;" : "")} public override System.Type NodeType => typeof (global::{_currentNameSpace}.{_fullName}); -{(!_isAbstract ? $" public global::{_currentNameSpace}.{_fullName}" + " TypedNodeInstance { get; private set; }" : "")} -{(!_isAbstract ? " public override INode NodeInstance => (INode)this.TypedNodeInstance;" : "")} -{(!_isAbstract ? " public override void ClearInstance() => this.TypedNodeInstance = null;" : "")} +{($" public global::{_currentNameSpace}.{_fullName}" + " TypedNodeInstance { get; private set; }")} + public override INode NodeInstance => (INode)this.TypedNodeInstance; + public override void ClearInstance() => this.TypedNodeInstance = null; {CountOverride} {(!_isAbstract ? """ public override N Instantiate() @@ -300,7 +300,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) if (node.Modifiers.Any(m => m.ToString() == "abstract") && _currentNameSpace.ToLower().Contains("obsidian")) { - //_isAbstract = true; + _isAbstract = true; } var baseName = node.Identifier.Text; From cc8fd0bf7800f8c96064f6276658dc9c9d0964c9 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 21:01:08 +0100 Subject: [PATCH 23/58] try --- .../BindingGenerator.cs | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index ac254e1..731d1df 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -376,23 +376,23 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _nodeOverloadAttribute = $"[Grouping({findOverload.ArgumentList.Arguments.First().ToString()})]"; } - foreach (var u in _usingDeclarations) - { - var fullNameSpace = ""; - if (string.IsNullOrEmpty(u)) - fullNameSpace = baseTypeName; - else - fullNameSpace = u + "." + baseTypeName; + //foreach (var u in _usingDeclarations) + //{ + // var fullNameSpace = ""; + // if (string.IsNullOrEmpty(u)) + // fullNameSpace = baseTypeName; + // else + // fullNameSpace = u + "." + baseTypeName; - var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); + // var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); - if (match is null) continue; + // if (match is null) continue; - _match = match; - _fullBaseType = fullNameSpace; - _valid = true; - break; - } + // _match = match; + // _fullBaseType = fullNameSpace; + // _valid = true; + // break; + //} base.VisitClassDeclaration(node); } From 8ba4185604b3e1a62c02d7f91bf88dec3d40f57a Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 21:03:51 +0100 Subject: [PATCH 24/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 731d1df..d610b36 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -298,6 +298,11 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } + if (node.BaseList.Types.Any(t => t.Type.ToString().Contains("ExecutionNode"))) + { + _valid = true; + } + if (node.Modifiers.Any(m => m.ToString() == "abstract") && _currentNameSpace.ToLower().Contains("obsidian")) { _isAbstract = true; @@ -333,6 +338,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) { _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; } + if (baseTypeName.Contains("AudioNodeBase")) { _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; @@ -394,6 +400,8 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) // break; //} + _valid = true; + base.VisitClassDeclaration(node); } } From 36a9e4643e6cdf5016323ddbdb3522dd71802ddb Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 21:04:58 +0100 Subject: [PATCH 25/58] try --- 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 d610b36..66c1dfa 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -298,7 +298,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } - if (node.BaseList.Types.Any(t => t.Type.ToString().Contains("ExecutionNode"))) + if (node.BaseList.Types.Any(t => t.Type.ToString().Contains("ProtoFlux.Runtimes.Execution.ExecutionNode"))) { _valid = true; } From 2a134bb9c1e29e38a62903909b10ef47777a0b14 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 21:05:43 +0100 Subject: [PATCH 26/58] try --- 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 66c1dfa..a91372e 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -400,7 +400,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) // break; //} - _valid = true; + //_valid = true; base.VisitClassDeclaration(node); } From 65b1af5fa82fb6aee3a4034352c69ba2a89bbdf1 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 21:07:58 +0100 Subject: [PATCH 27/58] try --- .../BindingGenerator.cs | 42 +++++++------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index a91372e..8e45893 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -298,12 +298,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } - if (node.BaseList.Types.Any(t => t.Type.ToString().Contains("ProtoFlux.Runtimes.Execution.ExecutionNode"))) - { - _valid = true; - } - - if (node.Modifiers.Any(m => m.ToString() == "abstract") && _currentNameSpace.ToLower().Contains("obsidian")) + if (node.Modifiers.Any(m => m.ToString() == "abstract"))// && _currentNameSpace.ToLower().Contains("obsidian")) { _isAbstract = true; } @@ -344,11 +339,6 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; } - //if (baseTypeName.Contains("AudioNodeBase")) - //{ - // _baseTypeNamespace = "ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; - //} - if (node.AttributeLists.Any()) // if has any attributes { // category @@ -382,25 +372,23 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _nodeOverloadAttribute = $"[Grouping({findOverload.ArgumentList.Arguments.First().ToString()})]"; } - //foreach (var u in _usingDeclarations) - //{ - // var fullNameSpace = ""; - // if (string.IsNullOrEmpty(u)) - // fullNameSpace = baseTypeName; - // else - // fullNameSpace = u + "." + baseTypeName; - - // var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); + foreach (var u in _usingDeclarations) + { + var fullNameSpace = ""; + if (string.IsNullOrEmpty(u)) + fullNameSpace = baseTypeName; + else + fullNameSpace = u + "." + baseTypeName; - // if (match is null) continue; + var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); - // _match = match; - // _fullBaseType = fullNameSpace; - // _valid = true; - // break; - //} + if (match is null) continue; - //_valid = true; + _match = match; + _fullBaseType = fullNameSpace; + _valid = true; + break; + } base.VisitClassDeclaration(node); } From 55d4bf825f273d0ed9d0238ce78221269a686d6d Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Fri, 3 Oct 2025 21:10:45 +0100 Subject: [PATCH 28/58] cleanup --- 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 8e45893..326078f 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -298,7 +298,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } - if (node.Modifiers.Any(m => m.ToString() == "abstract"))// && _currentNameSpace.ToLower().Contains("obsidian")) + if (node.Modifiers.Any(m => m.ToString() == "abstract")) { _isAbstract = true; } From a181977ea6658c6e01bcbd8424e1849b7132cf95 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:28:17 +0100 Subject: [PATCH 29/58] try --- .../BindingGenerator.cs | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 326078f..a32fe0d 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -112,8 +112,7 @@ public OrderedCount(string countVariableName, string methodName, string methodRe "AsyncActionFlowNode", "AsyncActionBreakableFlowNode", - "ProxyVoidNode", - "AudioNodeBase" + "ProxyVoidNode" }; private string UsingEnumerate => @@ -329,15 +328,15 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) var baseTypeName = firstBaseType.Type.ToString(); _baseType = baseTypeName; - if (baseTypeName.Contains("Proxy")) - { - _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; - } + //if (baseTypeName.Contains("Proxy")) + //{ + // _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; + //} - if (baseTypeName.Contains("AudioNodeBase")) - { - _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; - } + //if (baseTypeName.Contains("AudioNodeBase")) + //{ + // _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; + //} if (node.AttributeLists.Any()) // if has any attributes { @@ -372,23 +371,25 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _nodeOverloadAttribute = $"[Grouping({findOverload.ArgumentList.Arguments.First().ToString()})]"; } - foreach (var u in _usingDeclarations) - { - var fullNameSpace = ""; - if (string.IsNullOrEmpty(u)) - fullNameSpace = baseTypeName; - else - fullNameSpace = u + "." + baseTypeName; + //foreach (var u in _usingDeclarations) + //{ + // var fullNameSpace = ""; + // if (string.IsNullOrEmpty(u)) + // fullNameSpace = baseTypeName; + // else + // fullNameSpace = u + "." + baseTypeName; - var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); + // var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); - if (match is null) continue; + // if (match is null) continue; - _match = match; - _fullBaseType = fullNameSpace; - _valid = true; - break; - } + // _match = match; + // _fullBaseType = fullNameSpace; + // _valid = true; + // break; + //} + + _valid = true; base.VisitClassDeclaration(node); } From 4d1c3a83f46e616b59051ff3cb50e032a751ca05 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:40:42 +0100 Subject: [PATCH 30/58] try --- .../BindingGenerator.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index a32fe0d..34546fa 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -207,6 +207,7 @@ public override N Instantiate() private string _oldTypeNameAttribute; private string _nodeOverloadAttribute; private bool _isAbstract; + private List BaseTypes = null; private bool TypedFieldDetection(string type, string name, string targetTypeName, string declarationFormat, OrderedCount counter) { @@ -297,6 +298,19 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } + if (BaseTypes is null) + { + BaseTypes = new(); + if (node.BaseList is not null) + { + foreach (var baseType in node.BaseList?.Types) + { + BaseTypes.Add(baseType.ToString()); + } + } + File.WriteAllText($"C:\\ObsidianBindingsDebug\\{node.Identifier.Text}_BaseTypes.txt", string.Join(",", BaseTypes)); + } + if (node.Modifiers.Any(m => m.ToString() == "abstract")) { _isAbstract = true; From cbe5b281f270fd6933d4bfa054648988b06bbf19 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:43:08 +0100 Subject: [PATCH 31/58] try --- .../BindingGenerator.cs | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 34546fa..1233b62 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -298,18 +298,18 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } - if (BaseTypes is null) - { - BaseTypes = new(); - if (node.BaseList is not null) - { - foreach (var baseType in node.BaseList?.Types) - { - BaseTypes.Add(baseType.ToString()); - } - } - File.WriteAllText($"C:\\ObsidianBindingsDebug\\{node.Identifier.Text}_BaseTypes.txt", string.Join(",", BaseTypes)); - } + //if (BaseTypes is null) + //{ + // BaseTypes = new(); + // if (node.BaseList is not null) + // { + // foreach (var baseType in node.BaseList?.Types) + // { + // BaseTypes.Add(baseType.ToString()); + // } + // } + // File.WriteAllText($"C:\\ObsidianBindingsDebug\\{node.Identifier.Text}_BaseTypes.txt", string.Join(",", BaseTypes)); + //} if (node.Modifiers.Any(m => m.ToString() == "abstract")) { @@ -361,6 +361,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) if (nodeCategoryAttr?.ArgumentList is not null) { _category = nodeCategoryAttr.ArgumentList.Arguments.First().ToString().TrimEnds(1, 1); + _valid = true; } // generic types @@ -403,8 +404,6 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) // break; //} - _valid = true; - base.VisitClassDeclaration(node); } } From 7c4982f397bbc2f3b4062fa6632a98b37e91a9c1 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:45:53 +0100 Subject: [PATCH 32/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 1233b62..7537d8f 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -157,7 +157,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_genericTypesAttribute} {_oldTypeNameAttribute} [Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] -public {(_isAbstract ? "abstract" : "")} partial class {_fullName} : global::{_baseTypeNamespace}{_baseType} {_constraints} +public {(_isAbstract ? "abstract" : "")} partial class {_fullName} : {_baseType} {_constraints} {{ {(string.IsNullOrEmpty(_debug) ? "" : "//")}{_debug} {Declarations} @@ -342,6 +342,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) var baseTypeName = firstBaseType.Type.ToString(); _baseType = baseTypeName; + //if (baseTypeName.Contains("Proxy")) //{ // _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; From e6e8108508278c67b9b440c75192f9f19092d051 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:50:46 +0100 Subject: [PATCH 33/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 7537d8f..a2174f6 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -195,7 +195,7 @@ public override N Instantiate() private string _additionalName = ""; public string BaseName; private string _baseType; - private string _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution."; + //private string _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution."; private string _fullBaseType; private string _match; private string _category; @@ -287,7 +287,15 @@ public override void VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDecl public override void VisitUsingDirective(UsingDirectiveSyntax node) { - if (node.Name is not null) _usingDeclarations.Add(node.Name.ToString()); + if (node.Name is not null) + { + var usingName = node.Name.ToString(); + if (usingName == "FrooxEngine.ProtoFlux") + usingName = "FrooxEngine.FrooxEngine.ProtoFlux"; + else if (usingName == "ProtoFlux.Core") + usingName = "FrooxEngine.ProtoFlux.Runtimes.Execution"; + _usingDeclarations.Add(node.Name.ToString()); + } base.VisitUsingDirective(node); } public override void VisitClassDeclaration(ClassDeclarationSyntax node) From 298f18ced8587d8764c8e2d96dd7f876c97ba2ef Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:52:34 +0100 Subject: [PATCH 34/58] try --- 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 a2174f6..088f82d 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -92,7 +92,7 @@ public OrderedCount(string countVariableName, string methodName, string methodRe } } - public const string BindingPrefix = "FrooxEngine."; + public const string BindingPrefix = ""; public const string FluxPrefix = "ProtoFlux.Runtimes.Execution."; //TODO: add more, this is not all of the valid node types From c2498ef43efb023cacb9dcce7af82956538d4055 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:54:39 +0100 Subject: [PATCH 35/58] try --- 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 088f82d..c6e3022 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -157,7 +157,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_genericTypesAttribute} {_oldTypeNameAttribute} [Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] -public {(_isAbstract ? "abstract" : "")} partial class {_fullName} : {_baseType} {_constraints} +public {(_isAbstract ? "abstract" : "")} class {_fullName} : {_baseType} {_constraints} {{ {(string.IsNullOrEmpty(_debug) ? "" : "//")}{_debug} {Declarations} From df8a67f6b158e7a5cfcb282b2382cd96fb842e85 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:55:53 +0100 Subject: [PATCH 36/58] try --- 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 c6e3022..88e1c83 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -92,7 +92,7 @@ public OrderedCount(string countVariableName, string methodName, string methodRe } } - public const string BindingPrefix = ""; + public const string BindingPrefix = "Bindings."; public const string FluxPrefix = "ProtoFlux.Runtimes.Execution."; //TODO: add more, this is not all of the valid node types From d3d37822d79569cf928699bc45a8cb66627f93e7 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:00:42 +0100 Subject: [PATCH 37/58] try --- 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 88e1c83..08bccb8 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -58,7 +58,7 @@ public string GetOverride { get { - if (VariableNames.Count == 0) return ""; + //if (VariableNames.Count == 0) return ""; var str = $@" protected override {MethodReturnType} {MethodName}(ref int index) {{ From 3d6c8d09d84ed3a20c2b41cd0810801159004398 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:02:59 +0100 Subject: [PATCH 38/58] try --- 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 08bccb8..f6b54e3 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -294,7 +294,7 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) usingName = "FrooxEngine.FrooxEngine.ProtoFlux"; else if (usingName == "ProtoFlux.Core") usingName = "FrooxEngine.ProtoFlux.Runtimes.Execution"; - _usingDeclarations.Add(node.Name.ToString()); + _usingDeclarations.Add(usingName); } base.VisitUsingDirective(node); } From ec872af954c78f0f189bcdf6d623cae8d8e7f14d Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:05:34 +0100 Subject: [PATCH 39/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index f6b54e3..6642741 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -292,8 +292,8 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) var usingName = node.Name.ToString(); if (usingName == "FrooxEngine.ProtoFlux") usingName = "FrooxEngine.FrooxEngine.ProtoFlux"; - else if (usingName == "ProtoFlux.Core") - usingName = "FrooxEngine.ProtoFlux.Runtimes.Execution"; + if (usingName == "ProtoFlux.Core") + _usingDeclarations.Add("FrooxEngine.ProtoFlux.Runtimes.Execution"); _usingDeclarations.Add(usingName); } base.VisitUsingDirective(node); From 0bb5581f80b3c29b69a3fed07d76f78ca058d9b0 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:06:39 +0100 Subject: [PATCH 40/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 6642741..36ec454 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -293,7 +293,11 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) if (usingName == "FrooxEngine.ProtoFlux") usingName = "FrooxEngine.FrooxEngine.ProtoFlux"; if (usingName == "ProtoFlux.Core") + { _usingDeclarations.Add("FrooxEngine.ProtoFlux.Runtimes.Execution"); + _usingDeclarations.Add("FrooxEngine.ProtoFlux"); + } + _usingDeclarations.Add(usingName); } base.VisitUsingDirective(node); From 683b538fbecac7157520408792d77a78b276cb33 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:16:58 +0100 Subject: [PATCH 41/58] try --- .../BindingGenerator.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 36ec454..fb60836 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -187,8 +187,7 @@ public override N Instantiate() return str; } } - - private readonly List _usingDeclarations = [""]; + private readonly List _usingDeclarations = ["FrooxEngineContext = FrooxEngine.ProtoFlux.FrooxEngineContext", "INodeOutput = FrooxEngine.ProtoFlux.INodeOutput", "INodeOperation = FrooxEngine.ProtoFlux.INodeOperation"]; private bool _valid; private string _currentNameSpace; private string _fullName; @@ -292,11 +291,11 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) var usingName = node.Name.ToString(); if (usingName == "FrooxEngine.ProtoFlux") usingName = "FrooxEngine.FrooxEngine.ProtoFlux"; - if (usingName == "ProtoFlux.Core") - { - _usingDeclarations.Add("FrooxEngine.ProtoFlux.Runtimes.Execution"); - _usingDeclarations.Add("FrooxEngine.ProtoFlux"); - } + //if (usingName == "ProtoFlux.Core") + //{ + // _usingDeclarations.Add("FrooxEngine.ProtoFlux.Runtimes.Execution"); + // _usingDeclarations.Add("FrooxEngine.ProtoFlux"); + //} _usingDeclarations.Add(usingName); } From 32133716f8ab0f5dbc6fb378177fa6fe8f793882 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:20:30 +0100 Subject: [PATCH 42/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index fb60836..e0329c1 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -295,7 +295,9 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) //{ // _usingDeclarations.Add("FrooxEngine.ProtoFlux.Runtimes.Execution"); // _usingDeclarations.Add("FrooxEngine.ProtoFlux"); - //} + //}\ + if (usingName.StartsWith("ProtoFlux.Runtimes.Execution")) + usingName = "FrooxEngine." + usingName; _usingDeclarations.Add(usingName); } From e33ac7dd23eb64e4122d4fad034983ec6bee8026 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:23:51 +0100 Subject: [PATCH 43/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index e0329c1..622f68c 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -187,7 +187,10 @@ public override N Instantiate() return str; } } - private readonly List _usingDeclarations = ["FrooxEngineContext = FrooxEngine.ProtoFlux.FrooxEngineContext", "INodeOutput = FrooxEngine.ProtoFlux.INodeOutput", "INodeOperation = FrooxEngine.ProtoFlux.INodeOperation"]; + private readonly List _usingDeclarations = ["FrooxEngineContext = FrooxEngine.ProtoFlux.FrooxEngineContext", + "INodeOutput = FrooxEngine.ProtoFlux.INodeOutput", + "INodeOperation = FrooxEngine.ProtoFlux.INodeOperation", + "ExecutionContext = ProtoFlux.Runtimes.Execution.ExecutionContext"]; private bool _valid; private string _currentNameSpace; private string _fullName; From 5143d6ca10ce3095d436590fe30d49d5401804c3 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:27:05 +0100 Subject: [PATCH 44/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 622f68c..7ba20b7 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -190,7 +190,8 @@ public override N Instantiate() private readonly List _usingDeclarations = ["FrooxEngineContext = FrooxEngine.ProtoFlux.FrooxEngineContext", "INodeOutput = FrooxEngine.ProtoFlux.INodeOutput", "INodeOperation = FrooxEngine.ProtoFlux.INodeOperation", - "ExecutionContext = ProtoFlux.Runtimes.Execution.ExecutionContext"]; + "ExecutionContext = ProtoFlux.Runtimes.Execution.ExecutionContext", + "FrooxEngine"]; private bool _valid; private string _currentNameSpace; private string _fullName; From 9b5cce9a477ee82156b1b525994545a09ab10e12 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:28:49 +0100 Subject: [PATCH 45/58] try --- 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 7ba20b7..1bfa408 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -300,7 +300,7 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) // _usingDeclarations.Add("FrooxEngine.ProtoFlux.Runtimes.Execution"); // _usingDeclarations.Add("FrooxEngine.ProtoFlux"); //}\ - if (usingName.StartsWith("ProtoFlux.Runtimes.Execution")) + if (usingName == "ProtoFlux.Runtimes.Execution") usingName = "FrooxEngine." + usingName; _usingDeclarations.Add(usingName); From 21f5930745eb36680675f3bf306b15989cf88a22 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:32:48 +0100 Subject: [PATCH 46/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 1bfa408..78bb371 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -92,8 +92,8 @@ public OrderedCount(string countVariableName, string methodName, string methodRe } } - public const string BindingPrefix = "Bindings."; - public const string FluxPrefix = "ProtoFlux.Runtimes.Execution."; + public const string BindingPrefix = "FrooxEngine."; + //public const string FluxPrefix = "ProtoFlux.Runtimes.Execution."; //TODO: add more, this is not all of the valid node types public static readonly string[] ValidNodeTypes = From ddb635e460fc3ff171ec535c8bac602dd808eacf Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:38:12 +0100 Subject: [PATCH 47/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 78bb371..7826403 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -92,7 +92,7 @@ public OrderedCount(string countVariableName, string methodName, string methodRe } } - public const string BindingPrefix = "FrooxEngine."; + public const string BindingPrefix = "Bindings."; //public const string FluxPrefix = "ProtoFlux.Runtimes.Execution."; //TODO: add more, this is not all of the valid node types @@ -156,6 +156,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_nodeOverloadAttribute} {_genericTypesAttribute} {_oldTypeNameAttribute} +{(_backCompat ? $"[OldTypeName({"FrooxEngine." + _currentNameSpace})]" : "")} [Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] public {(_isAbstract ? "abstract" : "")} class {_fullName} : {_baseType} {_constraints} {{ @@ -210,7 +211,7 @@ public override N Instantiate() private string _oldTypeNameAttribute; private string _nodeOverloadAttribute; private bool _isAbstract; - private List BaseTypes = null; + private bool _backCompat; private bool TypedFieldDetection(string type, string name, string targetTypeName, string declarationFormat, OrderedCount counter) { @@ -279,12 +280,16 @@ public override void VisitPropertyDeclaration(PropertyDeclarationSyntax node) public override void VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) { _currentNameSpace = node.Name.ToString(); + if (_currentNameSpace.StartsWith("ProtoFlux.Runtimes.Execution.Nodes.")) + _backCompat = true; base.VisitNamespaceDeclaration(node); } public override void VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node) { _currentNameSpace = node.Name.ToString(); + if (_currentNameSpace.StartsWith("ProtoFlux.Runtimes.Execution.Nodes.")) + _backCompat = true; base.VisitFileScopedNamespaceDeclaration(node); } From 8195c00d25eb9f9c6b19f5d15124fcf819ad1bea Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:39:36 +0100 Subject: [PATCH 48/58] try --- 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 7826403..c0bb997 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -156,7 +156,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_nodeOverloadAttribute} {_genericTypesAttribute} {_oldTypeNameAttribute} -{(_backCompat ? $"[OldTypeName({"FrooxEngine." + _currentNameSpace})]" : "")} +{(_backCompat ? $"[OldTypeName(\"{"FrooxEngine." + _currentNameSpace}\")]" : "")} [Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] public {(_isAbstract ? "abstract" : "")} class {_fullName} : {_baseType} {_constraints} {{ From 07c67fc40de2e62d3aa41906d79e192a5c5e52ab Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:40:54 +0100 Subject: [PATCH 49/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index c0bb997..d3e8c0b 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -192,7 +192,8 @@ public override N Instantiate() "INodeOutput = FrooxEngine.ProtoFlux.INodeOutput", "INodeOperation = FrooxEngine.ProtoFlux.INodeOperation", "ExecutionContext = ProtoFlux.Runtimes.Execution.ExecutionContext", - "FrooxEngine"]; + "FrooxEngine", + "Elements.Data"]; private bool _valid; private string _currentNameSpace; private string _fullName; From c1db48659c862f24b6b6280e8504c4a208218926 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:45:10 +0100 Subject: [PATCH 50/58] try --- .../BindingGenerator.cs | 58 +++---------------- 1 file changed, 8 insertions(+), 50 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index d3e8c0b..f248d25 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -200,9 +200,6 @@ public override N Instantiate() private string _additionalName = ""; public string BaseName; private string _baseType; - //private string _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution."; - private string _fullBaseType; - private string _match; private string _category; private string _nodeNameOverride = ""; private string _debug = ""; @@ -301,11 +298,6 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) var usingName = node.Name.ToString(); if (usingName == "FrooxEngine.ProtoFlux") usingName = "FrooxEngine.FrooxEngine.ProtoFlux"; - //if (usingName == "ProtoFlux.Core") - //{ - // _usingDeclarations.Add("FrooxEngine.ProtoFlux.Runtimes.Execution"); - // _usingDeclarations.Add("FrooxEngine.ProtoFlux"); - //}\ if (usingName == "ProtoFlux.Runtimes.Execution") usingName = "FrooxEngine." + usingName; @@ -321,19 +313,6 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) return; } - //if (BaseTypes is null) - //{ - // BaseTypes = new(); - // if (node.BaseList is not null) - // { - // foreach (var baseType in node.BaseList?.Types) - // { - // BaseTypes.Add(baseType.ToString()); - // } - // } - // File.WriteAllText($"C:\\ObsidianBindingsDebug\\{node.Identifier.Text}_BaseTypes.txt", string.Join(",", BaseTypes)); - //} - if (node.Modifiers.Any(m => m.ToString() == "abstract")) { _isAbstract = true; @@ -366,16 +345,6 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _baseType = baseTypeName; - //if (baseTypeName.Contains("Proxy")) - //{ - // _baseTypeNamespace = "FrooxEngine.FrooxEngine.ProtoFlux."; - //} - - //if (baseTypeName.Contains("AudioNodeBase")) - //{ - // _baseTypeNamespace = "FrooxEngine.ProtoFlux.Runtimes.Execution.Nodes.Obsidian.Audio."; - //} - if (node.AttributeLists.Any()) // if has any attributes { // category @@ -385,7 +354,7 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) if (nodeCategoryAttr?.ArgumentList is not null) { _category = nodeCategoryAttr.ArgumentList.Arguments.First().ToString().TrimEnds(1, 1); - _valid = true; + _valid = true; // If it has the NodeCategory attribute it MUST be a node } // generic types @@ -399,35 +368,24 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) .FirstOrDefault(i => i.Name.ToString() == "NodeName"); if (findName?.ArgumentList != null) + { _nodeNameOverride = $" public override string NodeName => {findName.ArgumentList.Arguments.First().ToString()};"; + _valid = true; + } + // 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()})]"; + _valid = true; + } } - //foreach (var u in _usingDeclarations) - //{ - // var fullNameSpace = ""; - // if (string.IsNullOrEmpty(u)) - // fullNameSpace = baseTypeName; - // else - // fullNameSpace = u + "." + baseTypeName; - - // var match = ValidNodeTypes.FirstOrDefault(i => fullNameSpace.StartsWith(FluxPrefix + i)); - - // if (match is null) continue; - - // _match = match; - // _fullBaseType = fullNameSpace; - // _valid = true; - // break; - //} - base.VisitClassDeclaration(node); } } From 8b21e4e5df7899e4ceeebb71fe67ed27e9f26837 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:47:17 +0100 Subject: [PATCH 51/58] try --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index f248d25..050fb49 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -16,6 +16,7 @@ public static string TrimEnds(this string str, int fromStart, int fromEnd) => [Generator] public class BindingGenerator : ISourceGenerator { + private const bool DEBUG = false; public void Initialize(GeneratorInitializationContext context) { } @@ -35,7 +36,8 @@ public void Execute(GeneratorExecutionContext context) if (!string.IsNullOrWhiteSpace(res)) { context.AddSource($"{walker.BaseName}Bindings.g.cs", result.ToString()); - File.WriteAllText($"C:\\ObsidianBindingsDebug\\{walker.BaseName}Bindings.g.cs", res); + if (DEBUG) + File.WriteAllText($"C:\\ObsidianBindingsDebug\\{walker.BaseName}Bindings.g.cs", res); } } } From 9436578a6b8b88f3419b0daf980a8cb203315a40 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:52:23 +0100 Subject: [PATCH 52/58] cleanup --- .../BindingGenerator.cs | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 050fb49..1ab3398 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -95,27 +95,6 @@ public OrderedCount(string countVariableName, string methodName, string methodRe } public const string BindingPrefix = "Bindings."; - //public const string FluxPrefix = "ProtoFlux.Runtimes.Execution."; - - //TODO: add more, this is not all of the valid node types - public static readonly string[] ValidNodeTypes = - { - "NestedNode", - "VoidNode", - - "ObjectFunctionNode", - "ValueFunctionNode", - - "ActionNode", - "ActionFlowNode", - "ActionBreakableFlowNode", - - "AsyncActionNode", - "AsyncActionFlowNode", - "AsyncActionBreakableFlowNode", - - "ProxyVoidNode" - }; private string UsingEnumerate => _usingDeclarations From 12dbfdb3ebaa7d04b31cce52b2df640d4ac781d0 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 14:55:37 +0100 Subject: [PATCH 53/58] cleanup more\ --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 1ab3398..2f61d43 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -60,7 +60,6 @@ public string GetOverride { get { - //if (VariableNames.Count == 0) return ""; var str = $@" protected override {MethodReturnType} {MethodName}(ref int index) {{ From 97a6c11f97d6ba38a47f7cc82853863948e60203 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 15:08:13 +0100 Subject: [PATCH 54/58] fix back compat --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 2f61d43..69e1bba 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -137,7 +137,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_genericTypesAttribute} {_oldTypeNameAttribute} {(_backCompat ? $"[OldTypeName(\"{"FrooxEngine." + _currentNameSpace}\")]" : "")} -[Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] +[Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}/{BaseName}""}})] public {(_isAbstract ? "abstract" : "")} class {_fullName} : {_baseType} {_constraints} {{ {(string.IsNullOrEmpty(_debug) ? "" : "//")}{_debug} @@ -298,8 +298,8 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) _isAbstract = true; } - var baseName = node.Identifier.Text; - var fullName = baseName; + BaseName = node.Identifier.Text; + var fullName = BaseName; if (node.TypeParameterList is not null) { @@ -312,7 +312,6 @@ public override void VisitClassDeclaration(ClassDeclarationSyntax node) fullName += _additionalName; } - BaseName = baseName; _fullName = fullName; if (node.ConstraintClauses.Any()) From eb58e81bc2b660b6e642af7baf1187fd91276914 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 15:09:01 +0100 Subject: [PATCH 55/58] fix back compat 2 --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 69e1bba..a1de219 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -136,8 +136,8 @@ namespace {BindingPrefix}{_currentNameSpace}; {_nodeOverloadAttribute} {_genericTypesAttribute} {_oldTypeNameAttribute} -{(_backCompat ? $"[OldTypeName(\"{"FrooxEngine." + _currentNameSpace}\")]" : "")} -[Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}/{BaseName}""}})] +{(_backCompat ? $"[OldTypeName(\"{"FrooxEngine." + _currentNameSpace + "." + BaseName}\")]" : "")} +[Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] public {(_isAbstract ? "abstract" : "")} class {_fullName} : {_baseType} {_constraints} {{ {(string.IsNullOrEmpty(_debug) ? "" : "//")}{_debug} From bf9841d8636dd57ad99eb314e9d97b5836b6ea1c Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 15:17:43 +0100 Subject: [PATCH 56/58] abstract classes don't need back compat --- 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 a1de219..eb1700f 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -136,7 +136,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_nodeOverloadAttribute} {_genericTypesAttribute} {_oldTypeNameAttribute} -{(_backCompat ? $"[OldTypeName(\"{"FrooxEngine." + _currentNameSpace + "." + BaseName}\")]" : "")} +{(_backCompat && !_isAbstract ? $"[OldTypeName(\"{"FrooxEngine." + _currentNameSpace + "." + BaseName}\")]" : "")} [Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] public {(_isAbstract ? "abstract" : "")} class {_fullName} : {_baseType} {_constraints} {{ From 112eb181a2f69037694c5aea1b6a2c0b6b970c76 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 15:36:49 +0100 Subject: [PATCH 57/58] back compat always applies --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index eb1700f..44c28d5 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -94,6 +94,7 @@ public OrderedCount(string countVariableName, string methodName, string methodRe } public const string BindingPrefix = "Bindings."; + public const string LegacyBindingPrefix = "FrooxEngine."; private string UsingEnumerate => _usingDeclarations @@ -136,7 +137,7 @@ namespace {BindingPrefix}{_currentNameSpace}; {_nodeOverloadAttribute} {_genericTypesAttribute} {_oldTypeNameAttribute} -{(_backCompat && !_isAbstract ? $"[OldTypeName(\"{"FrooxEngine." + _currentNameSpace + "." + BaseName}\")]" : "")} +{(!_isAbstract ? $"[OldTypeName(\"{LegacyBindingPrefix + _currentNameSpace + "." + BaseName}\")]" : "")} [Category(new string[] {{""ProtoFlux/Runtimes/Execution/Nodes/{_category}""}})] public {(_isAbstract ? "abstract" : "")} class {_fullName} : {_baseType} {_constraints} {{ @@ -258,16 +259,16 @@ public override void VisitPropertyDeclaration(PropertyDeclarationSyntax node) public override void VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) { _currentNameSpace = node.Name.ToString(); - if (_currentNameSpace.StartsWith("ProtoFlux.Runtimes.Execution.Nodes.")) - _backCompat = true; + //if (_currentNameSpace.StartsWith("ProtoFlux.Runtimes.Execution.Nodes.")) + // _backCompat = true; base.VisitNamespaceDeclaration(node); } public override void VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node) { _currentNameSpace = node.Name.ToString(); - if (_currentNameSpace.StartsWith("ProtoFlux.Runtimes.Execution.Nodes.")) - _backCompat = true; + //if (_currentNameSpace.StartsWith("ProtoFlux.Runtimes.Execution.Nodes.")) + // _backCompat = true; base.VisitFileScopedNamespaceDeclaration(node); } From caa0f930c3e41ea30d2eb109ea2a20435946a522 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 4 Oct 2025 15:40:55 +0100 Subject: [PATCH 58/58] cleanup --- ProjectObsidian.SourceGenerators/BindingGenerator.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/BindingGenerator.cs b/ProjectObsidian.SourceGenerators/BindingGenerator.cs index 44c28d5..a2e0f45 100644 --- a/ProjectObsidian.SourceGenerators/BindingGenerator.cs +++ b/ProjectObsidian.SourceGenerators/BindingGenerator.cs @@ -190,7 +190,6 @@ public override N Instantiate() private string _oldTypeNameAttribute; private string _nodeOverloadAttribute; private bool _isAbstract; - private bool _backCompat; private bool TypedFieldDetection(string type, string name, string targetTypeName, string declarationFormat, OrderedCount counter) { @@ -259,16 +258,12 @@ public override void VisitPropertyDeclaration(PropertyDeclarationSyntax node) public override void VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) { _currentNameSpace = node.Name.ToString(); - //if (_currentNameSpace.StartsWith("ProtoFlux.Runtimes.Execution.Nodes.")) - // _backCompat = true; base.VisitNamespaceDeclaration(node); } public override void VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node) { _currentNameSpace = node.Name.ToString(); - //if (_currentNameSpace.StartsWith("ProtoFlux.Runtimes.Execution.Nodes.")) - // _backCompat = true; base.VisitFileScopedNamespaceDeclaration(node); }