Fix managed boolean array conversion to native array

This commit is contained in:
2025-12-20 01:51:37 +02:00
parent c40f7c12f2
commit 5d45b9ea1c

View File

@@ -761,6 +761,11 @@ namespace Flax.Build.Bindings
genericArgs += ", " + typeInfo.GenericArgs[1]; genericArgs += ", " + typeInfo.GenericArgs[1];
result = $"Array<{genericArgs}>({result})"; result = $"Array<{genericArgs}>({result})";
} }
else if (arrayApiType?.Name == "bool")
{
type = "bool*";
result = "Array<bool>({0}, {1})";
}
return result; return result;
} }
@@ -1241,8 +1246,12 @@ namespace Flax.Build.Bindings
callParams += ", "; callParams += ", ";
separator = true; separator = true;
var name = parameterInfo.Name; var name = parameterInfo.Name;
var countParamName = $"__{parameterInfo.Name}Count";
if (CppParamsThatNeedConversion[i] && (!FindApiTypeInfo(buildData, parameterInfo.Type, caller)?.IsStruct ?? false)) if (CppParamsThatNeedConversion[i] && (!FindApiTypeInfo(buildData, parameterInfo.Type, caller)?.IsStruct ?? false))
{
name = '*' + name; name = '*' + name;
countParamName = '*' + countParamName;
}
string param = string.Empty; string param = string.Empty;
if (string.IsNullOrWhiteSpace(CppParamsWrappersCache[i])) if (string.IsNullOrWhiteSpace(CppParamsWrappersCache[i]))
@@ -1255,7 +1264,7 @@ namespace Flax.Build.Bindings
else else
{ {
// Convert value // Convert value
param += string.Format(CppParamsWrappersCache[i], name); param += string.Format(CppParamsWrappersCache[i], name, countParamName);
} }
// Special case for output result parameters that needs additional converting from native to managed format (such as non-POD structures or output array parameter) // Special case for output result parameters that needs additional converting from native to managed format (such as non-POD structures or output array parameter)