From 51a90dcd28d327ef0d587eb10ec14557b619c299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=85=D0=B5=D0=B5=D0=B2?= Date: Sat, 24 Apr 2021 14:13:07 +0700 Subject: [PATCH] Adding the namespace of a field from another module. --- .../Bindings/BindingsGenerator.CSharp.cs | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs index 44d3b457c..4f3475e6c 100644 --- a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs +++ b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs @@ -1041,25 +1041,30 @@ namespace Flax.Build.Bindings contents.AppendLine(); // Using declarations - contents.AppendLine("using System;"); - contents.AppendLine("using System.ComponentModel;"); - contents.AppendLine("using System.Runtime.CompilerServices;"); - contents.AppendLine("using System.Runtime.InteropServices;"); + HashSet AddedNamespaces = new HashSet() { "System", "System.ComponentModel", "System.Runtime.CompilerServices", "System.Runtime.InteropServices" }; foreach (var e in moduleInfo.Children) { - bool tmp = false; foreach (var apiTypeInfo in e.Children) { + if (apiTypeInfo is ClassInfo classinfo) + { + foreach (FieldInfo apifield in classinfo.Fields) + { + ApiTypeInfo ApiFieldInfo = FindApiTypeInfo(buildData, apifield.Type, classinfo); + if (ApiFieldInfo != null && !string.IsNullOrWhiteSpace(ApiFieldInfo.Namespace) && ApiFieldInfo.Namespace != apiTypeInfo.Namespace) + { + AddedNamespaces.Add(ApiFieldInfo.Namespace); + } + } + } if (apiTypeInfo.Namespace != "FlaxEngine") { - tmp = true; - contents.AppendLine("using FlaxEngine;"); - break; + AddedNamespaces.Add("FlaxEngine"); } } - if (tmp) - break; } + foreach (string Namespace in AddedNamespaces) + contents.AppendLine($"using {Namespace};"); // TODO: custom using declarations support // TODO: generate using declarations based on references modules (eg. using FlaxEngine, using Plugin1 in game API)