Fix using nested types in scripting api

This commit is contained in:
Wojtek Figat
2021-03-23 12:31:30 +01:00
parent 6982997a2b
commit 44fc1f9d05
3 changed files with 36 additions and 12 deletions

View File

@@ -261,7 +261,10 @@ namespace Flax.Build.Bindings
{
if (typeInfo == null)
return null;
if (buildData.TypeCache.TryGetValue(typeInfo, out var result))
var result = FindApiTypeInfoInner(typeInfo, caller);
if (result != null)
return result;
if (buildData.TypeCache.TryGetValue(typeInfo, out result))
return result;
// Find across in-build types

View File

@@ -473,10 +473,11 @@ namespace Flax.Build.Bindings
// Array
if (typeInfo.Type == "Array" && typeInfo.GenericArgs != null)
{
var T = typeInfo.GenericArgs[0].GetFullNameNative(buildData, caller);
type = "MonoArray*";
if (typeInfo.GenericArgs.Count != 1)
return "MUtils::ToArray<" + typeInfo.GenericArgs[0] + ", " + typeInfo.GenericArgs[1] + ">({0})";
return "MUtils::ToArray<" + typeInfo.GenericArgs[0] + ">({0})";
return "MUtils::ToArray<" + T + ", " + typeInfo.GenericArgs[1] + ">({0})";
return "MUtils::ToArray<" + T + ">({0})";
}
// Span

View File

@@ -80,35 +80,55 @@ namespace Flax.Build.Bindings
GenericArgs = BindingsGenerator.Read(reader, GenericArgs);
}
public override string ToString()
public string GetFullNameNative(Builder.BuildData buildData, ApiTypeInfo caller)
{
var sb = new StringBuilder(64);
var type = BindingsGenerator.FindApiTypeInfo(buildData, this, caller);
if (type == null)
return ToString();
var sb = new StringBuilder(64);
if (IsConst)
sb.Append("const ");
sb.Append(Type);
sb.Append(type.FullNameNative);
if (GenericArgs != null)
{
sb.Append('<');
for (var i = 0; i < GenericArgs.Count; i++)
{
if (i != 0)
sb.Append(", ");
sb.Append(GenericArgs[i]);
}
sb.Append('>');
}
if (IsRef)
sb.Append('&');
if (IsPtr)
sb.Append('*');
return sb.ToString();
}
public override string ToString()
{
var sb = new StringBuilder(64);
if (IsConst)
sb.Append("const ");
sb.Append(Type);
if (GenericArgs != null)
{
sb.Append('<');
for (var i = 0; i < GenericArgs.Count; i++)
{
if (i != 0)
sb.Append(", ");
sb.Append(GenericArgs[i]);
}
sb.Append('>');
}
if (IsRef)
sb.Append('&');
if (IsPtr)
sb.Append('*');
return sb.ToString();
}