Add Span<T> support for scripting fields

This commit is contained in:
Wojtek Figat
2023-04-14 15:01:22 +02:00
parent 62fdfe2519
commit 89704bebe9
3 changed files with 19 additions and 4 deletions

View File

@@ -172,6 +172,10 @@ namespace Flax.Build.Bindings
CppVariantFromTypes[wrapperName] = typeInfo;
return $"VariantFrom{wrapperName}Dictionary({value})";
}
if (typeInfo.Type == "Span" && typeInfo.GenericArgs != null)
{
return "Variant()"; // TODO: Span to Variant converting (use utility method the same way as for arrays)
}
var apiType = FindApiTypeInfo(buildData, typeInfo, caller);
if (apiType != null)
@@ -218,6 +222,10 @@ namespace Flax.Build.Bindings
CppVariantToTypes.Add(typeInfo);
return $"MoveTemp(VariantTo{GenerateCppWrapperNativeToVariantMethodName(typeInfo)}({value}))";
}
if (typeInfo.Type == "Span" && typeInfo.GenericArgs != null)
{
return $"{typeInfo}()"; // Cannot be implemented since Variant stores array of Variants thus cannot get linear span of data
}
var apiType = FindApiTypeInfo(buildData, typeInfo, caller);
if (apiType != null)
@@ -482,13 +490,20 @@ namespace Flax.Build.Bindings
return "{0}.GetManagedInstance()";
}
// Array or Span or DataContainer
// Array or DataContainer
if ((typeInfo.Type == "Array" || typeInfo.Type == "Span" || typeInfo.Type == "DataContainer") && typeInfo.GenericArgs != null)
{
type = "MonoArray*";
return "MUtils::ToArray({0}, " + GenerateCppGetNativeClass(buildData, typeInfo.GenericArgs[0], caller, functionInfo) + ")";
}
// Span
if (typeInfo.Type == "Span" && typeInfo.GenericArgs != null)
{
type = "MonoArray*";
return "MUtils::Span({0}, " + GenerateCppGetNativeClass(buildData, typeInfo.GenericArgs[0], caller, functionInfo) + ")";
}
// BytesContainer
if (typeInfo.Type == "BytesContainer" && typeInfo.GenericArgs == null)
{