in Runtime/Scripts/AdditionalLibraryMethods.cs [177:213]
public Result<ulong> StartLoadingGroup(LoadingTimeMetadata metadata, TAnnotation annotation)
{
IntPtr metadataPtr = IntPtr.Zero;
uint metadataSize = 0;
if (metadata != null)
{
metadataPtr = Marshal.AllocHGlobal(Marshal.SizeOf(metadata));
metadataSize = (uint) Marshal.SizeOf(metadata);
Marshal.StructureToPtr(metadata, metadataPtr, false);
}
IntPtr annotationPtr = IntPtr.Zero;
CProtobufSerialization ps = new CProtobufSerialization();
if (annotation != null)
{
ps = CProtobufSerialization.Create(annotation);
annotationPtr = Marshal.AllocHGlobal(Marshal.SizeOf(ps));
Marshal.StructureToPtr(ps, annotationPtr, false);
}
ulong handle = 0;
var errorCode = m_LibraryMethods.StartLoadingGroup(
metadataPtr, metadataSize, annotationPtr, ref handle);
if (metadataPtr != IntPtr.Zero)
{
Marshal.FreeHGlobal(metadataPtr);
}
if (annotationPtr != IntPtr.Zero)
{
CProtobufSerialization.CallDealloc(ref ps);
Marshal.FreeHGlobal(annotationPtr);
}
return new Result<ulong>(errorCode, handle);
}